{"version":3,"file":"static/chunks/75443-8a40760f9f70fca8.js","mappings":"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ACA,kCACA,kCACA,IAAM,qBAAyB,WAAY,CAC3C,UAAa,0BACb,IAAM,MAAO,4BACb,qCAEAC,OAAA,CACA,qCACA,oCACA,oCACA,kCACA,oCACA,oCACA,oCACA,oCACA,yBAA+B,WAC/B,oCACA,eAAmB,sBACnB,qCACA,oCACA,oCACA,eAAmB,KAAM,gBACzB,uBAA+B,WAC/B,mCACA,mCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,oCACA,IAAM,gCACN,qCACA,eAAmB,sBACnB,oCACA,eAAmB,KAAM,gBACzB,qCACA,6BAAqC,MACrC,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kBAAyB,gBACzB,kCACA,kCACA,iCAA0C,CAC1C,kCACA,QAAY,0BACZ,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,yBAA+B,WAC/B,qCACA,UAAa,0BACb,oCACA,kCACA,oCACA,6BAAqC,MACrC,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kBAAyB,gBACzB,kCACA,kCACA,iCAA0C,CAC1C,kCACA,QAAY,0BACZ,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,IAAM,qBAAyB,WAC/B,oCACA,IAAM,MAAO,0BACb,qCAEAC,OAAA,CACA,yCACA,0CACA,2CACA,2CACA,0CACA,wCACA,wCACA,qCACA,uCACA,uCACA,oCACA,sCACA,wCACA,qCACA,sCAEAC,WAAA,CACA,2CACA,0CACA,yCACA,2CACA,yCACA,wCACA,wCACA,qCACA,sCACA,uCACA,oCACA,qCACA,wCACA,qCACA,oCACA,0CAEA,EAEA7F,EAAAC,OAAA,CAAAwF,yBCxOA,IAAAK,EAAAC,EAEAA,EAAU7F,EAAQ,OAElB4F,EAAA,CACAE,iBAAA,CACAC,QAAA,GACAC,YAAA,+FAEAC,aAAA,SAAAC,CAAA,CAAAC,CAAA,EACA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACA,GAAAN,IAAAA,EAAApE,MAAA,CACA,YAAA+D,gBAAA,CAEA,GAAAI,EAAA,EACA,OACAH,QAAA,GACAC,YAAA,IAKA,IAAAK,EAAA,EAFAE,EAAAJ,CAAA,IAEAG,EAAAG,CADAA,EAAAN,EAAAxF,KAAA,KACAoB,MAAA,CAAkCsE,EAAAC,EAASD,IAE3CG,CADAA,EAAAC,CAAA,CAAAJ,EAAA,EACAK,KAAA,CAAA3E,MAAA,CAAAwE,EAAAG,KAAA,CAAA3E,MAAA,EACAwE,CAAAA,EAAAC,CAAA,EAgBA,OAbAZ,EAAA,KAAAe,kBAAA,CAAAJ,EAAAJ,IAAAA,EAAApE,MAAA,EACAqE,EAAA,sDACAR,MAAAA,GACAA,EAAAI,WAAA,CAAAY,OAAA,CAAAR,GACA,MAAAR,EAAAG,OAAA,EACAH,CAAAA,EAAAG,OAAA,MAGAH,EAAA,CACAG,QAAA,GACAC,YAAA,CAAAI,EAAA,EAGAR,CACA,EACAe,mBAAA,SAAAH,CAAA,CAAAK,CAAA,EAEA,OAAAL,EAAAM,OAAA,EACA,iBACA,YAAAC,6BAAA,CAAAP,EAAAK,EACA,eAGA,OAFAL,EAAAQ,KAAA,CAAAC,WAAA,GAEA,CACAlB,QAFAS,IAAAA,EAAAU,KAAA,uFAGAlB,YAAA,kDAEA,cAEA,OACAD,QAFAS,IAAAA,EAAAW,UAAA,CAAApF,MAAA,gHAGAiE,YAAA,wCAEA,gBACA,OACAD,QAAA,+CACAC,YAAA,oBAEA,aACA,GAAAQ,gBAAAA,EAAAY,UAAA,CACA,OACArB,QAAA,iCACAC,YAAA,mEAGA,KACA,YACA,OACAD,QAAA,gCACAC,YAAA,uDAEA,CACA,EACAe,8BAAA,SAAAP,CAAA,CAAAK,CAAA,EACA,IAAAJ,EAAAT,EAAAD,EAAAsB,EAmBA,OAlBAtB,EAAAS,cAAAA,EAAAc,eAAA,CAAAT,CAAAA,GAAAL,EAAAe,IAAA,EAAAf,EAAAgB,QAAA,CAAAhB,EAAAiB,aAAA,yDAAAjB,EAAAkB,IAAA,wCAAAlB,EAAAkB,IAAA,2EAAAlB,sBAAAA,EAAAc,eAAA,CAAAT,EAAA,wDAAAJ,CAAAA,EAAAD,EAAAc,eAAA,GAAAb,eAAAA,GAAAA,iBAAAA,EAAAI,EAAA,sGACAb,EAAA,GAEAqB,CADAA,EAAAb,EAAAE,KAAA,EACAF,KAAA,CAAAX,EAAA8B,WAAA,EACA3B,EAAA4B,IAAA,0CACMP,EAAAb,KAAA,CAAAX,EAAAgC,SAAA,GAAAR,EAAAS,WAAA,KAAAT,GACNrB,EAAA4B,IAAA,8DAEApB,EAAAgB,QAAA,EAAAhB,EAAAE,KAAA,CAAA3E,MAAA,KACAiE,EAAA4B,IAAA,+CAEApB,EAAAe,IAAA,EACAvB,EAAA4B,IAAA,2EAEA,CACA7B,QAAAA,EACAC,YAAAA,CACA,CAEA,CACA,EAEAlG,EAAAC,OAAA,CAAA6F,yBCzGA,IAAAA,EAAAmC,EAAAlC,EAAAtC,EAAAyE,EAAAC,EAEAF,EAAW/H,EAAQ,OAEnB6F,EAAU7F,EAAQ,OAElBgI,EAAiBhI,EAAQ,OAEzB4F,EAAW5F,EAAQ,OAEnBuD,EAAA,WACA,WAAAoB,OAAAuD,OAAA,EACA,EAEAD,EAAA,SAAAE,CAAA,CAAAC,CAAA,EACA,IAAAC,EAAAC,EAAAjC,EAAAC,EAAAiC,EAAAC,EAAA/B,EAAAhF,EAAAgH,EAAAC,EAAAC,EAMA,IAAAtC,MALA+B,GACAA,CAAAA,EAAA,IAEAM,EAAAnF,IACAkF,EAAA,GACApC,EAAA,EAAAC,EAAA8B,EAAArG,MAAA,CAAwCsE,EAAAC,EAASD,IAEjD,WAAAI,CAAAA,EAAA,MADA4B,CAAAA,EAAAD,CAAA,CAAA/B,EAAA,CACA,GAAAI,WAAAA,GAAAA,YAAAA,CAAA,GACAgC,EAAAb,IAAA,CAAAS,EAAAlH,QAAA,GAAA2G,WAAA,IAQA,IAAAU,KALAT,EAAAa,yBAAA,CAAAH,GACAF,EAAAR,EAAAc,SAAA,CAAAV,GAEA1G,CADAA,EAAAoE,EAAAiD,6BAAA,CAAAX,EAAAI,EAAA,EACAQ,SAAA,CAAAxF,IAAAmF,EACAJ,EAAAN,EAAAgB,qBAAA,CAAAvH,EAAAwH,OAAA,EAEAN,EAAAL,CAAA,CAAAE,EAAA,CACA/G,CAAA,CAAA+G,EAAA,CAAAG,EAGA,OADAlH,EAAAmE,QAAA,CAAAA,EAAAK,YAAA,CAAAxE,EAAAyE,KAAA,CAAAzE,EAAA0E,QAAA,EACA1E,CACA,EAEA3B,EAAAC,OAAA,CAAAkI,yBCxCA,IAAAiB,EAAAC,EAAAC,EAAAC,EAAAC,EAAA/D,EAAAgE,EAAAC,EAAAC,EAAA1B,EAAA2B,EAAA7D,EAsBA,IAAA6D,KApBAF,EAAkBxJ,EAAQ,OAE1BuF,EAAmBvF,EAAQ,OAE3B6F,EAAU7F,EAAQ,OAElBuJ,EAAA,SAAAI,CAAA,EACA,IAAAtD,EAAAuD,EAAAC,EAAApI,EAGA,IAAAoI,EAAA,EAFApI,EAAA,GACA4E,EAAA,EACAuD,EAAAD,EAAA5H,MAAA,CAA0C8H,EAAAD,EAAUC,IAEpDpI,CAAA,CADAkI,CAAA,CAAAE,EAAA,CACA,CAAAxD,EACAA,GAAA,EAEA,OAAA5E,CACA,EAEA4H,EAAA,GAEAG,EACAC,EAAAD,CAAA,CAAAE,EAAA,CACAL,CAAA,CAAAK,EAAA,CAAAH,EAAAE,GAGAN,EAAA,CACA3D,OAAAD,EAAAC,MAAA,CACAC,OAAAF,EAAAE,MAAA,CACAC,OAAAH,EAAAG,MAAA,CACAC,WAAAJ,EAAAI,UAAA,EAGAyD,EAAA,CACAU,EAAA,UACAC,EAAA,MACAC,EAAA,SAAa,SACbxI,EAAA,MACAV,EAAA,UACAuF,EAAA,cACA4D,EAAA,cACAJ,EAAA,MACAK,EAAA,UACAC,EAAA,UACAC,EAAA,MACAC,EAAA,OAGAf,EAAA,CACAgB,YAAA,qBACA,EAMApB,EAAA,CACA,gBACA,gBACA,sBACA,4BACA,iBAGAnB,EAAA,CACAwC,MAAA,SAAAC,CAAA,EACA,IAAAC,EACA,sBACA,IAAAC,EAEA,IAAAD,KADAC,EAAA,GACAF,EACAE,EAAA9C,IAAA,CAAA6C,GAEA,OAAAC,CACA,IAAK3I,MAAA,EAEL4I,OAAA,SAAAlB,CAAA,CAAAmB,CAAA,EACA,OAAAnB,EAAA7B,IAAA,CAAAlE,KAAA,CAAA+F,EAAAmB,EACA,EACAC,UAAA,SAAAnK,CAAA,CAAAoK,CAAA,EACA,IAAAC,EACA,kBACA,IAAAnB,EAAAC,EAAApD,EAAAiE,EAGA,IAAAb,EAAA,EAFApD,EAAA/F,EAAAsK,KAAA,KACAN,EAAA,GACAd,EAAAnD,EAAA1E,MAAA,CAAqC8H,EAAAD,EAAUC,IAC/CkB,EAAAtE,CAAA,CAAAoD,EAAA,CACAa,EAAA9C,IAAA,CAAAkD,CAAA,CAAAC,EAAA,EAAAA,GAEA,OAAAL,CACA,KAAKO,IAAA,IACL,EACAC,IAAA,SAAAC,CAAA,CAAAC,CAAA,EACA,SAAAA,EAAAA,CAAAA,EAAAA,CACA,EACAC,OAAA,SAAA9C,CAAA,EACA,OAAAA,EAAA+C,IAAA,UAAAC,CAAA,CAAAC,CAAA,EACA,SAAAnF,CAAA,CAAAmF,EAAAnF,CAAA,EAAAkF,EAAAE,CAAA,CAAAD,EAAAC,CAAA,EAEA,EACA5C,UAAA,SAAAV,CAAA,EACA,IAAAyB,EAAA8B,EAAAC,EAAApD,EAAAsB,EAGA,IAAAA,EAAA,EAFAtB,EAAA,GAEAqB,EAAA+B,CADAA,EAAA,MAAAC,gBAAA,MAAAC,wBAAA,MAAAC,UAAA,MAAAC,aAAA,MAAAC,YAAA,MAAAC,cAAA,MAAAC,WAAA,MAAAC,UAAA,GACApK,MAAA,CAAwC8H,EAAAD,EAAUC,IAClD6B,EAAAC,CAAA,CAAA9B,EAAA,CACA,KAAAc,MAAA,CAAApC,EAAAmD,EAAArK,IAAA,MAAA8G,IAEA,YAAAkD,MAAA,CAAA9C,EACA,EACAqD,iBAAA,SAAAzD,CAAA,CAAAiE,CAAA,EACA,IAAA9E,EAAAjB,EAAAoF,EAAAnF,EAAAiC,EAAAsB,EAAAwC,EAAAC,EAAA5E,EAAA6E,EAAAC,EAAAnF,EAOA,IAAAC,KANA,MAAA8E,GACAA,CAAAA,EAAA/C,CAAA,EAEAd,EAAA,GACAjC,EAAA6B,EAAApG,MAAA,CACAuK,EAAAnE,EAAAL,WAAA,GACAsE,EAEA,IADAG,EAAAH,CAAA,CAAA9E,EAAA,CACAjB,EAAAwD,EAAA,EAAiC,GAAjCvD,EAAiCuD,EAAjCvD,EAAiCuD,EAAjCvD,EAA+DD,EAAA,GAA/DC,EAA+D,EAAAuD,EAAA,EAAAA,EAC/D,IAAA4B,EAAAY,EAAAG,EAAAnG,EAA2CmG,GAA3ClG,EAA2C+F,EAA3C/F,EAA2C+F,EAA3C/F,EAA+EmF,EAAAe,GAA/ElG,EAA+E,EAAA+F,EAAA,EAAAA,EAC/EC,EAAA3L,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,WAAAc,IAEA7E,EAAA6E,CAAA,CADAlF,EAAAiF,EAAA3L,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QACA,CACAlD,EAAAX,IAAA,EACAd,QAAA,aACAT,EAAAA,EACAoF,EAAAA,EACA/E,MAAAyB,EAAAxH,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QACAgB,aAAApF,EACAK,KAAAA,EACAJ,gBAAAA,EACAE,SAAA,GACAD,KAAA,EACA,IAKA,YAAA8D,MAAA,CAAA9C,EACA,EACAsD,yBAAA,SAAA1D,CAAA,CAAAiE,CAAA,EACA,IAAAxC,EAAApD,EAAA+B,EAAAsB,EAAApD,EAAAiG,EAMA,IAAA7C,MALAuC,GACAA,CAAAA,EAAA/C,CAAA,EAEAqD,EAAAvE,EAAA6C,KAAA,KAAA2B,OAAA,GAAA1B,IAAA,KAEApB,EAAA,EAAAD,EAAArB,CADAA,EAAA,KAAAqD,gBAAA,CAAAc,EAAAN,EAAA,EACArK,MAAA,CAAuC8H,EAAAD,EAAUC,IAEjDrD,CADAA,EAAA+B,CAAA,CAAAsB,EAAA,EACAnD,KAAA,CAAAF,EAAAE,KAAA,CAAAsE,KAAA,KAAA2B,OAAA,GAAA1B,IAAA,KACAzE,EAAAgB,QAAA,IACAf,EAAA,CAAA0B,EAAApG,MAAA,GAAAyE,EAAAiF,CAAA,CAAAtD,EAAApG,MAAA,GAAAyE,EAAAH,CAAA,EAAAG,EAAAH,CAAA,CAAAI,CAAA,IAAAD,EAAAiF,CAAA,CAAAhF,CAAA,IAEA,YAAA4E,MAAA,CAAA9C,EACA,EACAK,0BAAA,SAAAe,CAAA,EACA,OAAAN,EAAA,YAAAE,EAAAI,EAAAhJ,KAAA,GACA,EACAiM,uBAAA,SAAAzE,CAAA,CAAA0E,CAAA,EACA,IAAAjD,EAAAkD,EAAAjD,EAAAkD,EAAAtG,EAAAuG,EAAAC,EAAAC,EAAAC,EAGA,IAAAtD,EAAA,EAFAkD,EAAA,GAEAnD,EAAAnD,CADAA,EAAA0B,EAAA6C,KAAA,MACAjJ,MAAA,CAAmC8H,EAAAD,EAAUC,IAE7CkD,CAAA,CADAtG,CAAA,CAAAoD,EAAA,CACA,IAGA,IAAAiD,KADAK,EAAA,GACAN,EACAK,EAAAL,CAAA,CAAAC,EAAA,CAYAE,CAXAA,EAAA,WACA,IAAAI,EAAAf,EAAA3B,EAEA,IAAA2B,EAAA,EADA3B,EAAA,GACA0C,EAAAF,EAAAnL,MAAA,CAAwCsK,EAAAe,EAAUf,IAClDY,CAAAA,EAAAC,CAAA,CAAAb,EAAA,IACAU,GACArC,EAAA9C,IAAA,CAAAqF,GAGA,OAAAvC,CACA,GAAO,EACP3I,MAAA,IACAoL,CAAAA,CAAA,CAAAL,EAAA,CAAAE,CAAA,EAGA,OAAAG,CACA,EACAE,oBAAA,SAAAR,CAAA,EACA,IAAA9B,EAAAuC,EAAAC,EAAA9C,EAAA+C,EAAAC,EAAA7D,EAAAwD,EAAAvD,EAAAwC,EAAA5F,EAAAwG,EAAAS,EAAAC,EAAAT,EA+EA,IAAArD,EA9EA,WACA,IAAAa,EAEA,IAAAD,KADAC,EAAA,GACAmC,EACAnC,EAAA9C,IAAA,CAAA6C,GAEA,OAAAC,CACA,IACAwC,EAAA,KACAI,EAAA,SAAAJ,CAAA,EACA,IAAAU,EAAAC,EAAAC,EAAAlE,EAAAmE,EAAAlE,EAAAoD,EAAAe,EAGA,IAAAnE,EAAA,EAFAgE,EAAA,GACAE,EAAA,GACAnE,EAAAsD,EAAAnL,MAAA,CAAsC8H,EAAAD,EAAUC,IAChDoD,EAAAC,CAAA,CAAArD,EAAA,CAUA+D,CATAA,EAAA,WACA,IAAAR,EAAAf,EAAA3B,EAEA,IAAAsD,EADA,GACAA,EAAA3B,EAAA,EAAAe,EAAAH,EAAAlL,MAAA,CAA6CsK,EAAAe,EAAUY,EAAA,EAAA3B,EACvD5B,EAAAwC,CAAA,CAAAe,EAAA,CACAtD,EAAA9C,IAAA,EAAA6C,EAAAuD,EAAA,EAEA,OAAAtD,CACA,GAAS,EACTY,IAAA,GACAwC,CAAAA,EAAA,YACA,IAAAV,EAAAf,EAAA3B,EAEA,IAAAsD,EADA,GACAA,EAAA3B,EAAA,EAAAe,EAAAQ,EAAA7L,MAAA,CAA+CsK,EAAAe,EAAUY,EAAA,EAAA3B,EACzD5B,EAAAmD,CAAA,CAAAI,EAAA,CACAtD,EAAA9C,IAAA,CAAA6C,EAAA,IAAAuD,GAEA,OAAAtD,CACA,KAASO,IAAA,SACT8C,IACAA,CAAA,CAAAD,EAAA,IACAD,EAAAjG,IAAA,CAAAqF,IAGA,OAAAY,CACA,EAoCAN,CAnCAA,EAAA,SAAAC,CAAA,EACA,IAAAS,EAAAC,EAAA7H,EAAAoH,EAAA7D,EAAAwD,EAAAe,EAAAtE,EAAAwC,EAAA+B,EAAA3H,EAAA+F,EAAA6B,EAAApB,EAAAqB,EAAAC,EACA,GAAAf,EAAAzL,MAAA,EAOA,IAAA8H,EAAA,EAJAqE,EAAAV,CAAA,IACAa,EAAAb,EAAA7M,KAAA,IACAwN,EAAA,GAEAvE,EAAAnD,CADAA,EAAAoG,CAAA,CAAAqB,EAAA,EACAnM,MAAA,CAAqC8H,EAAAD,EAAUC,IAE/C,IAAAwC,EAAA,EADAoB,EAAAhH,CAAA,CAAAoD,EAAA,CACAuD,EAAAF,EAAAnL,MAAA,CAAwCsK,EAAAe,EAAUf,IAAA,CAGlD,IAAAhG,EAFA6G,CAAA,CAAAb,EAAA,CACA4B,EAAA,GACA5H,EAAA+H,EAAA,EAAA5B,EAAAS,EAAAlL,MAAA,CAA6C,GAAAyK,EAAA4B,EAAA5B,EAAA4B,EAAA5B,EAAiCnG,EAAA,GAAAmG,EAAA,EAAA4B,EAAA,EAAAA,EAC9E,GAAAnB,CAAA,CAAA5G,EAAA,MAAAoH,EAAA,CACAQ,EAAA5H,EACA,KACA,CAEA4H,KAAAA,GACAM,EAAAtB,EAAAuB,MAAA,GAAAf,EAAAS,EAAA,GACAC,EAAAvG,IAAA,CAAA2G,KAGAD,CADAA,EAAArB,EAAAtM,KAAA,KACA8N,MAAA,CAAAR,EAAA,GACAK,EAAA1G,IAAA,EAAA6F,EAAAS,EAAA,EACAC,EAAAvG,IAAA,CAAAqF,GACAkB,EAAAvG,IAAA,CAAA0G,GAEA,CAGA,OADApB,EAAAI,EAAAa,GACAZ,EAAAc,GACA,GACAb,GACAG,EAAA,GACA9D,EAAA,EAAAD,EAAAsD,EAAAnL,MAAA,CAAoC8H,EAAAD,EAAUC,IAAA,CAG9C,IAAAwC,EAAA,EAFAY,EAAAC,CAAA,CAAArD,EAAA,CACA6D,EAAA,GACAN,EAAAH,EAAAlL,MAAA,CAAqCsK,EAAAe,EAAUf,IAC/CoB,EAAAhH,CAAAA,EAAAwG,CAAA,CAAAZ,EAAA,KAAAtB,EAAAtE,CAAA,IACAiH,CAAA,CAAAD,EAAA,CAAA1C,EAEA4C,EAAA/F,IAAA,CAAA8F,EACA,CACA,OAAAC,CACA,EACA7B,WAAA,SAAA3D,CAAA,CAAAiE,CAAA,CAAAsC,CAAA,EACA,IAAA3D,EAAAN,EAAAb,EAAAwD,EAAA5G,EAAAmI,EAAApG,EAAAsB,EAAAwC,EAAA5F,EAAA+F,EAAAS,EAAA2B,EAAAC,EAAAnI,EAAAsH,EASA,IAAAnE,MARAuC,GACAA,CAAAA,EAAA/C,CAAA,EAEA,MAAAqF,GACAA,CAAAA,EAAAtF,CAAA,EAEAb,EAAA,GAEAsB,EAAA,EAAAD,EAAAnD,CADAA,EAAA,KAAA4G,mBAAA,MAAAT,sBAAA,CAAAzE,EAAAuG,GAAA,EACA3M,MAAA,CAEA,EAFmC6H,IACnCqD,EAAAxG,CAAA,CAAAoD,EAAA,EACA,KAAAU,KAAA,CAAA0C,IAF6CpD,IAO7C,IAAAwC,EAAA,EAFAwC,EAAA,KAAAhE,SAAA,CAAA1C,EAAA8E,GAEAG,EAAAZ,CADAA,EAAA,KAAAZ,gBAAA,CAAAiD,EAAAzC,EAAA,EACArK,MAAA,CAAsCsK,EAAAe,EAAUf,IAGhD,GAFA7F,EAAAgG,CAAA,CAAAH,EAAA,CAEA3F,CADAA,EAAAyB,EAAAxH,KAAA,CAAA6F,EAAAH,CAAA,EAAAG,EAAAiF,CAAA,UACA3D,WAAA,KAAAtB,EAAAiG,YAAA,EAIA,IAAAmC,KADAD,EAAA,GACA1B,EACAlC,EAAAkC,CAAA,CAAA2B,EAAA,CACA,KAAAlI,EAAAoI,OAAA,CAAAF,IACAD,CAAAA,CAAA,CAAAC,EAAA,CAAA7D,CAAA,CAGAvE,CAAAA,EAAAe,IAAA,IACAf,EAAAE,KAAA,CAAAA,EACAF,EAAAyG,GAAA,CAAA0B,EACAnI,EAAAuI,WAAA,aACA,IAAArE,EAEA,IAAAD,KADAC,EAAA,GACAiE,EACAX,EAAAW,CAAA,CAAAlE,EAAA,CACAC,EAAA9C,IAAA,CAAA6C,EAAA,OAAAuD,GAEA,OAAAtD,CACA,KAASO,IAAA,OACT1C,EAAAX,IAAA,CAAApB,GAGA,YAAA6E,MAAA,CAAA9C,EAAAyG,MAAA,UAAAxI,CAAA,EACA,OAAAA,EAAAE,KAAA,CAAA3E,MAAA,EACA,GACA,EACAgK,cAAA,SAAA5D,CAAA,CAAA8G,CAAA,EACA,IAAAjI,EAAAkI,EAAA3G,EAKA,IAAA2G,KAJA,MAAAD,GACAA,CAAAA,EAAA9F,CAAA,EAEAZ,EAAA,GACA0G,EACAjI,EAAAiI,CAAA,CAAAC,EAAA,CACA,KAAAvE,MAAA,CAAApC,EAAA,KAAA4G,oBAAA,CAAAhH,EAAAnB,EAAAkI,IAEA,YAAA7D,MAAA,CAAA9C,EACA,EACA6G,WAAA,oDACAD,qBAAA,SAAAhH,CAAA,CAAAnB,CAAA,CAAAkI,CAAA,EACA,IAAAG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAArJ,EAAAoF,EAAAkE,EAAA/F,EAAArB,EAAAsB,EAAA+F,EAAAC,EAAA3I,EAGA,IAFAqB,EAAA,GACAlC,EAAA,EACAA,EAAA8B,EAAApG,MAAA,IASA,IARA0J,EAAApF,EAAA,EACAsJ,EAAA,KACAzI,EAAA,EAEA2I,EADA,CAAAX,WAAAA,GAAAA,WAAAA,CAAA,QAAAE,UAAA,CAAAU,IAAA,CAAA3H,EAAAlG,MAAA,CAAAoE,IACA,EAEA,IAEA,CAMA,GALAuJ,EAAAzH,EAAAlG,MAAA,CAAAwJ,EAAA,GACAgE,EAAA,GACAC,EAAA,GACAF,EAAA,GACAF,EAAAtI,CAAA,CAAA4I,EAAA,KACAnE,EAAAtD,EAAApG,MAAA,CAEA,KAAA8H,EAAA,EADA0F,EAAApH,EAAAlG,MAAA,CAAAwJ,GACA7B,EAAA0F,EAAAvN,MAAA,CAA+C8H,EAAAD,EAAUC,IAGzD,GAFAwF,EAAAC,CAAA,CAAAzF,EAAA,CACA2F,GAAA,EACAH,GAAAA,KAAAA,EAAAP,OAAA,CAAAS,GAAA,CACAE,EAAA,GACAC,EAAAF,EACA,IAAAH,EAAAP,OAAA,CAAAS,IACAM,CAAAA,GAAA,GAEAF,IAAAD,IACAxI,GAAA,EACAyI,EAAAD,GAEA,KACA,CACA,CAEA,GAAAD,EACAhE,GAAA,MACU,CACVA,EAAApF,EAAA,GACAkC,EAAAX,IAAA,EACAd,QAAA,UACAT,EAAAA,EACAoF,EAAAA,EAAA,EACA/E,MAAAyB,EAAAxH,KAAA,CAAA0F,EAAAoF,GACAzE,MAAAkI,EACAhI,MAAAA,EACA2I,cAAAA,CACA,GAEAxJ,EAAAoF,EACA,KACA,CACA,CAEA,OAAAlD,CACA,EACAyD,aAAA,SAAA7D,CAAA,EACA,IAAA4H,EAAAC,EAAAC,EAAA9I,EAAA+I,EAAAC,EAAA9J,EAAAoF,EAAA2E,EAAAC,EAAAC,EAAAC,EAAA/J,EAAA+B,EAAA9B,EAMA,IALA8B,EAAA,GACA2H,EAAA,WACAG,EAAA,YACAC,EAAA,aACAF,EAAA,EAKA,EAJAjI,EAAApG,MAAA,GACAmO,EAAAE,SAAA,CAAAC,EAAAD,SAAA,CAAAA,EACAD,EAAAD,EAAAJ,IAAA,CAAA3H,GACAoI,EAAAF,EAAAP,IAAA,CAAA3H,GACAgI,MAAAA,IAGAA,CAAA,IAAApO,MAAA,CAAAwO,CAAA,IAAAxO,MAAA,EACAyE,EAAA2J,EACAhJ,EAAAmJ,EAAAR,IAAA,CAAAtJ,CAAA,SAGAW,EAAAX,CADAA,EAAA+J,CAAA,CACA,IAEAlK,EAAAI,CAAAA,EAAA,CAAAD,EAAA1E,KAAA,CAAA0E,EAAA1E,KAAA,CAAA0E,CAAA,IAAAzE,MAAA,QAAA0J,EAAAhF,CAAA,IAEAwJ,EAAAF,CADAA,EAAAlK,EAAAiD,6BAAA,CAAA3B,EAAA,KAAA0B,SAAA,CAAA1B,GAAA,EACAhB,QAAA,CACA6J,EAAAD,EAAA9G,OAAA,CACAV,EAAAX,IAAA,EACAd,QAAA,SACAT,EAAAA,EACAoF,EAAAA,EACA/E,MAAAF,CAAA,IACAW,WAAAA,EACA6I,aAAAA,EACAC,aAAAA,EACAO,aAAAhK,CAAA,IAAAzE,MAAA,CAAAoF,EAAApF,MAAA,GAEAqO,EAAA3E,EAAA,EAEA,OAAAlD,CACA,EACAkI,UAAA,EACAxE,eAAA,SAAA9D,CAAA,MACAuI,EAAArK,EAAAoF,EAAAhB,EAAAkG,EAAA9G,EAAApD,EAAAhF,EAAAmP,EAIAC,EAHA,GAAA1I,IAAAA,EAAApG,MAAA,CACA,SAqCA,IAAA0I,EAJK,KA/BLmG,EACA,SAAAvK,CAAA,CAAAoF,CAAA,CAAAiF,CAAA,EACA,IAAAjK,EAAAqK,EAAAC,EAAArK,EACA,GAAA+E,CAAAA,EAAApF,EAAA,GAAA/D,IAAAA,KAAA0O,GAAA,CAAAN,EAAA,GACA,EAAAjK,CAAAA,EAAAnE,KAAA0O,GAAA,CAAAN,EAAA,GAAAjK,GAAAoK,EAAAJ,SAAA,CAeA,OAdA/J,EAAAyB,EAAAxH,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QACA,WAAAzJ,IAAA,CAAA0E,IACAoK,EAAA,QACAC,EAAA,IACc,WAAA/O,IAAA,CAAA0E,IACdoK,EAAA,QACAC,EAAA,IACc,QAAA/O,IAAA,CAAA0E,IACdoK,EAAA,SACAC,EAAA,KAEAD,EAAA,UACAC,EAAA,IAEAtP,EAAAmG,IAAA,EACAd,QAAA,WACAT,EAAAA,EACAoF,EAAAA,EACA/E,MAAAyB,EAAAxH,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QACAqF,cAAAA,EACAC,eAAAA,EACAE,UAAAP,EAAA,CACA,EAGA,EAEAjP,EAAA,GACA4E,EAAA,EACAsK,EAAA,KACAlG,EAAAZ,EAAA,EAAApD,EAAA0B,EAAApG,MAAA,CAA2C,GAAA0E,EAAAoD,EAAApD,EAAAoD,EAAApD,EAA8BgE,EAAA,GAAAhE,EAAA,EAAAoD,EAAA,EAAAA,EACzE6G,EAAAvI,EAAA+I,UAAA,CAAAzG,GAAAtC,EAAA+I,UAAA,CAAAzG,EAAA,GACA,MAAAkG,GACAA,CAAAA,EAAAD,CAAA,EAEAA,IAAAC,IAIAC,EAAAvK,EADAoF,EAAAhB,EAAA,EACAkG,GACAtK,EAAAoF,EACAkF,EAAAD,GAGA,OADAE,EAAAvK,EAAA8B,EAAApG,MAAA,GAAA4O,GACAlP,CACA,EACAyK,YAAA,SAAA/D,CAAA,CAAAgJ,CAAA,EACA,IAAA5I,EAAA6I,EAAAC,EAAA3K,EAKA,IAAAgD,KAJA,MAAAyH,GACAA,CAAAA,EAAA7H,CAAA,EAEAf,EAAA,GACA4I,EAGA,IADAC,CADAA,EAAAD,CAAA,CAAAzH,EAAA,EACA0G,SAAA,GACAiB,EAAAD,EAAAtB,IAAA,CAAA3H,IACAzB,EAAA2K,CAAA,IACA9I,EAAAX,IAAA,EACAd,QAAA,QACAJ,MAAAA,EACAL,EAAAgL,EAAAvP,KAAA,CACA2J,EAAA4F,EAAAvP,KAAA,CAAAuP,CAAA,IAAAtP,MAAA,GACAqF,WAAAsC,EACAwC,YAAAmF,CACA,GAGA,YAAAhG,MAAA,CAAA9C,EACA,EACA4D,WAAA,SAAAhE,CAAA,EACA,IAAAmJ,EAAAC,EAAAC,EAAAC,EAAAC,EAAArL,EAAAoF,EAAAhB,EAAAR,EAAAL,EAAAwD,EAAA7E,EAAAoJ,EAAAC,EAAAC,EAAAC,EAAAjI,EAAAwC,EAAA+B,EAAA2D,EAAAtL,EAAA+F,EAAAwF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAlB,EAAAnH,EAAAC,EAAAzD,EAIA,IAAAL,EAHA,GACAsL,EAAA,YACAC,EAAA,+CACAvL,EAAAwD,EAAA,EAAApD,EAAA0B,EAAApG,MAAA,GAA+C,GAAA0E,EAAAoD,GAAApD,EAAAoD,GAAApD,EAAgCJ,EAAA,GAAAI,EAAA,EAAAoD,EAAA,EAAAA,EAC/E,IAAA4B,EAAAY,EAAAG,EAAAnG,EAAA,EAAA2L,EAAA3L,EAAA,EACA,CAD+CmG,GAAAwF,EAAA3F,GAAA2F,EAAA3F,GAAA2F,CAAA,IAC/CvG,CAAAA,GAAAtD,EAAApG,MAAA,EADqF0J,EAAAe,GAAAwF,EAAA,EAAA3F,EAAA,EAAAA,EAKrF,GADA3F,EAAAyB,EAAAxH,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QACAkG,EAAA7B,IAAA,CAAApJ,IAKA,IAAA0H,EAAA,EAFAoD,EAAA,GAEA5H,EAAAqI,CADAA,EAAA/I,CAAA,CAAAxC,EAAA3E,MAAA,GACAA,MAAA,CAAwCqM,EAAAxE,EAAUwE,IAClD3D,EAAAyH,CAAAA,EAAAD,CAAA,CAAA7D,EAAA,KAAAnE,EAAAiI,CAAA,IAEA,MADAR,CAAAA,EAAA,KAAAc,eAAA,EAAArN,SAAAuB,EAAA/F,KAAA,GAAA8J,IAAAtF,SAAAuB,EAAA/F,KAAA,CAAA8J,EAAAR,IAAA9E,SAAAuB,EAAA/F,KAAA,CAAAsJ,IAAA,IAEAuH,EAAA5J,IAAA,CAAA8J,GAGA,GAAAF,EAAAzP,MAAA,IASA,IAAAgQ,EAAA,EANAT,EAAAE,CAAA,IAIAM,EAAAD,CAHAA,EAAA,SAAAN,CAAA,EACA,OAAAjP,KAAA0O,GAAA,CAAAO,EAAAkB,IAAA,CAAA5M,EAAA6M,cAAA,CACA,GACAlB,CAAA,KAEApE,EAAA+E,CADAA,EAAAX,EAAA7Q,KAAA,KACAoB,MAAA,CAAwCgQ,EAAA3E,EAAU2E,IAElDN,CAAAA,EAAAI,EADAN,EAAAY,CAAA,CAAAJ,EAAA,CACA,EACAD,GACAM,CAAAA,EAAAA,CAAAA,EAAA,CAAAb,EAAAE,EAAA,KAAAK,EAAAM,CAAA,KAGA7J,EAAAX,IAAA,EACAd,QAAA,OACAJ,MAAAA,EACAL,EAAAA,EACAoF,EAAAA,EACAkH,UAAA,GACAF,KAAAnB,EAAAmB,IAAA,CACAG,MAAAtB,EAAAsB,KAAA,CACAC,IAAAvB,EAAAuB,GAAA,IAIA,IAAAxM,EAAA6D,EAAA,EAAAmI,EAAAlK,EAAApG,MAAA,GAAgD,GAAAsQ,EAAAnI,GAAAmI,EAAAnI,GAAAmI,EAAmChM,EAAA,GAAAgM,EAAA,EAAAnI,EAAA,EAAAA,EACnF,IAAAuB,EAAAtB,EAAAmI,EAAAjM,EAAA,EAAAkM,EAAAlM,EAAA,EACA,CAD+CiM,GAAAC,EAAApI,GAAAoI,EAAApI,GAAAoI,CAAA,IAC/C9G,CAAAA,GAAAtD,EAAApG,MAAA,EADqF0J,EAAA6G,GAAAC,EAAA,EAAApI,EAAA,EAAAA,EAIrFzD,EAAAyB,EAAAxH,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QAEA,MADA4F,CAAAA,EAAAO,EAAA9B,IAAA,CAAApJ,EAAA,GAKAgL,MADAA,CAAAA,EAAA,KAAAc,eAAA,EAAArN,SAAAkM,CAAA,KAAAlM,SAAAkM,CAAA,KAAAlM,SAAAkM,CAAA,SAIA9I,EAAAX,IAAA,EACAd,QAAA,OACAJ,MAAAA,EACAL,EAAAA,EACAoF,EAAAA,EACAkH,UAAAtB,CAAA,IACAoB,KAAAf,EAAAe,IAAA,CACAG,MAAAlB,EAAAkB,KAAA,CACAC,IAAAnB,EAAAmB,GAAA,GAIA,YAAAxH,MAAA,CAAA9C,EAAAyG,MAAA,UAAAxI,CAAA,EACA,IAAAsM,EAAAC,EAAAC,EAAAC,EAEA,IAAAA,EAAA,EADAH,EAAA,GACAC,EAAAxK,EAAAxG,MAAA,CAAyCkR,EAAAF,EAAUE,IAEnD,GAAAzM,IADAwM,CAAAA,EAAAzK,CAAA,CAAA0K,EAAA,GAIAD,EAAA3M,CAAA,EAAAG,EAAAH,CAAA,EAAA2M,EAAAvH,CAAA,EAAAjF,EAAAiF,CAAA,EACAqH,EAAA,GACA,KACA,CAEA,OAAAA,CACA,GACA,EACAN,gBAAA,SAAAU,CAAA,EACA,IAAAC,EAAAC,EAAAxJ,EAAAwD,EAAA2F,EAAAlJ,EAAAwJ,EAAAC,EAAAjH,EAAAkH,EAAAnF,EAAA3H,EAAA+F,EAAAgH,EAAAC,EAAAC,EACA,GAAAR,CAAAA,CAAAA,CAAA,UAAAA,CAAAA,CAAA,SAMA,IAAArJ,EAAA,EAHAwJ,EAAA,EACAC,EAAA,EACAG,EAAA,EACA7J,EAAAsJ,EAAAnR,MAAA,CAAoC8H,EAAAD,EAAUC,IAAA,CAE9C,MADAuJ,CAAAA,EAAAF,CAAA,CAAArJ,EAAA,GACAuJ,EAxjBA,KAwjBAA,EA1jBA,KA2jBA,OAEAA,EAAA,IACAE,CAAAA,GAAA,GAEAF,EAAA,IACAC,CAAAA,GAAA,GAEAD,GAAA,GACAK,CAAAA,GAAA,EAEA,CACA,GAAAH,CAAAA,CAAAA,GAAA,IAAAD,IAAAA,IAAAI,CAAAA,GAAA,IAIA,IAAApH,EAAA,EAAAe,EAAAmG,CADAA,EAAA,EAAAL,CAAA,IAAAA,EAAAvS,KAAA,QAAAuS,CAAA,IAAAA,EAAAvS,KAAA,SACAoB,MAAA,CAAoDsK,EAAAe,EAAUf,IAE9D,GADAqH,EAAAjN,CAAAA,EAAA8M,CAAA,CAAAlH,EAAA,KAAAmH,EAAA/M,CAAA,IACAkN,KAAAD,GAAAA,GA7kBA,KA6kBA,CAEA,GAAAP,MADAA,CAAAA,EAAA,KAAAS,cAAA,CAAAJ,EAAA,EAEA,OACAf,KAAAiB,EACAd,MAAAO,EAAAP,KAAA,CACAC,IAAAM,EAAAN,GAAA,EAGA,MAEA,CAEA,IAAAzE,EAAA,EAAA2E,EAAAQ,EAAAxR,MAAA,CAAoDqM,EAAA2E,EAAU3E,IAG9D,GAFAsF,EAAAlH,CAAAA,EAAA+G,CAAA,CAAAnF,EAAA,KAAAoF,EAAAhH,CAAA,IAEA2G,MADAA,CAAAA,EAAA,KAAAS,cAAA,CAAAJ,EAAA,EAGA,OACAf,KAFAiB,EAAA,KAAAG,sBAAA,CAAAH,GAGAd,MAAAO,EAAAP,KAAA,CACAC,IAAAM,EAAAN,GAAA,GAIA,EACAe,eAAA,SAAAV,CAAA,EACA,IAAAY,EAAAlK,EAAAwB,EAAAvB,EAAApD,EAAA+F,EAEA,IAAA3C,EAAA,EAAAD,EAAAnD,CADAA,EAAA,CAAAyM,EAAAA,EAAAvS,KAAA,GAAAgM,OAAA,KACA5K,MAAA,CAAmC8H,EAAAD,EAAUC,IAE7C,GADAiK,EAAAtH,CAAAA,EAAA/F,CAAA,CAAAoD,EAAA,KAAAuB,EAAAoB,CAAA,IACA,GAAAsH,GAAAA,GAAA,OAAA1I,GAAAA,GAAA,GACA,OACAyH,IAAAiB,EACAlB,MAAAxH,CACA,CAGA,EACAyI,uBAAA,SAAApB,CAAA,SACA,KACAA,EACMA,EAAA,GACNA,EAAA,KAEAA,EAAA,GAEA,CACA,EAEA3S,EAAAC,OAAA,CAAAgI,yBCprBA,IAAAxC,EAAAwO,EAAAtJ,EAAA5E,EAEAN,EAAmBvF,EAAQ,OAE3B+T,EAAA,SAAA/M,CAAA,EACA,IAAAgN,EAAAvJ,EAAAwJ,EAAA9I,EAAA+I,EAEA,IAAAD,KADAD,EAAA,EACAhN,EACAkN,EAAAlN,CAAA,CAAAiN,EAAA,CACAD,GAAA,WACA,IAAA1N,EAAAuD,EAAAa,EAEA,IAAAb,EAAA,EADAa,EAAA,GACApE,EAAA4N,EAAAnS,MAAA,CAA0C8H,EAAAvD,EAASuD,IACnDsB,CAAAA,EAAA+I,CAAA,CAAArK,EAAA,GAEAa,EAAA9C,IAAA,CAAAuD,GAGA,OAAAT,CACA,IAAK3I,MAAA,CAWL,OATAiS,EAAA,WACA,IAAAtJ,EAEA,IAAAD,KADAC,EAAA,GACA1D,EACAA,CAAA,CAAAyD,EAAA,CACAC,EAAA9C,IAAA,CAAA6C,GAEA,OAAAC,CACA,IAAG3I,MAAA,EAYH8D,EAAA,CACAsO,IAAA,SAAAhJ,CAAA,CAAAV,CAAA,EACA,IAAAqJ,EAAAjK,EAAAkI,EACA,GAAAtH,EAAAU,EACA,SAEA,GAAAV,IAAAA,EACA,SAGA,IADAsH,EAAA,EACA+B,EAAAjK,EAAA,EAA6B,GAA7BY,EAA6BZ,GAA7BY,EAA6BZ,GAA7BY,EAA6DqJ,EAAA,GAA7DrJ,EAA6D,EAAAZ,EAAA,EAAAA,EAC7DkI,GAAA5G,EACA4G,GAAA+B,EACA3I,GAAA,EAEA,OAAA4G,CACA,EACAqC,MAAA,SAAAjJ,CAAA,EACA,OAAA7I,KAAA+R,GAAA,CAAAlJ,GAAA7I,KAAA+R,GAAA,IACA,EACAC,KAAA,SAAAnJ,CAAA,EACA,OAAA7I,KAAA+R,GAAA,CAAAlJ,GAAA7I,KAAA+R,GAAA,GACA,EACAE,UAAA,SAAApJ,CAAA,EACA,IAAAqJ,EAAAnO,EAAAwD,EACA,GAAAsB,EAAA,EACA,SAGA,IADAqJ,EAAA,EACAnO,EAAAwD,EAAA,EAA6B,GAA7BsB,EAA6BtB,GAA7BsB,EAA6BtB,GAA7BsB,EAA6D9E,EAAA,GAA7D8E,EAA6D,EAAAtB,EAAA,EAAAA,EAC7D2K,GAAAnO,EAEA,OAAAmO,CACA,EACA1L,8BAAA,SAAAX,CAAA,CAAAI,CAAA,CAAAkM,CAAA,MACAC,EAAAzL,EAAAwB,EAAAR,EAAA3D,EAAAsD,EAAAwD,EAAAhC,EAAAuJ,EAAAC,EAAAzJ,EAAAtB,EAAAgL,EAAAC,EAAAC,EAAA3G,EAAA5B,EAAAyG,EAAA+B,EAAApE,EAAAqE,EAiDApE,EApCA,IAAAhH,MAZA4K,GACAA,CAAAA,EAAA,IAEAtJ,EAAAhD,EAAApG,MAAA,CACA6S,EAAA,WACA,IAAA/K,EAAAa,EAEA,IAAAwK,EADA,GACArL,EAAA,EAA+B,GAA/BsB,EAA+BtB,EAA/BsB,EAA+BtB,EAA/BsB,EAA6D,GAA7DA,EAA6D,EAAAtB,EAAA,EAAAA,EAC7Da,EAAA9C,IAAA,KAEA,OAAA8C,CACA,IACAb,EAAA,EAAAvD,EAAAiC,EAAAxG,MAAA,CAAsC8H,EAAAvD,EAASuD,IAE/C+K,CAAA,CAAAxJ,CADAA,EAAA7C,CAAA,CAAAsB,EAAA,EACA4B,CAAA,EAAA7D,IAAA,CAAAwD,GAEA,IAAAgD,EAAA,EAAAxE,EAAAgL,EAAA7S,MAAA,CAA4CqM,EAAAxE,EAAUwE,IAEtD3E,CADA,CAAA2E,EAAA,CACA9C,IAAA,UAAAC,CAAA,CAAAC,CAAA,EACA,OAAAD,EAAAlF,CAAA,CAAAmF,EAAAnF,CAAA,GAoHA,IAjHAwO,EAAA,CACAzJ,EAAA,WACA,IAAAV,EAAAuI,EAEA,IAAAiC,EADA,GACAjC,EAAA,EAAiC,GAAjC9H,EAAiC8H,EAAjC9H,EAAiC8H,EAAjC9H,EAA+D,GAA/DA,EAA+D,EAAA8H,EAAA,EAAAA,EAC/DvI,EAAA9C,IAAA,KAEA,OAAA8C,CACA,IACAyK,GAAA,WACA,IAAAzK,EAAAuI,EAEA,IAAAiC,EADA,GACAjC,EAAA,EAAiC,GAAjC9H,EAAiC8H,EAAjC9H,EAAiC8H,EAAjC9H,EAA+D,GAA/DA,EAA+D,EAAA8H,EAAA,EAAAA,EAC/DvI,EAAA9C,IAAA,KAEA,OAAA8C,CACA,IACA5J,EAAA,WACA,IAAA4J,EAAAuI,EAEA,IAAAiC,EADA,GACAjC,EAAA,EAAiC,GAAjC9H,EAAiC8H,EAAjC9H,EAAiC8H,EAAjC9H,EAA+D,GAA/DA,EAA+D,EAAA8H,EAAA,EAAAA,EAC/DvI,EAAA9C,IAAA,KAEA,OAAA8C,CACA,GACA,EACAmG,EA0BK,KA1BLD,EACA,SAAAxF,CAAA,CAAAnB,CAAA,EACA,IAAAmL,EAAAC,EAAAvU,EAAA2J,EAAA0K,EAAA1O,EAWA,IAAA4O,KAVA5K,EAAAW,EAAAK,CAAA,CACA0J,EAAAtE,EAAAyE,gBAAA,CAAAlK,EAAAjD,GACA8B,EAAA,GACAkL,CAAAA,GAAAN,EAAAM,EAAA,CAAA/J,EAAA/E,CAAA,IAAA4D,EAAA,IAEAnJ,EAAA+P,EAAA0D,SAAA,CAAAtK,GAAAkL,EACAV,GACA3T,CAAAA,GAAAwB,KAAAiT,GAAA,CApGA,IAoGAtL,EAAA,IAEAxD,EAAAoO,EAAA/T,CAAA,CAAA2J,EAAA,CAGA,GADA2K,EAAA3O,CAAA,CAAA4O,EAAA,EACAA,CAAAA,EAAApL,CAAAA,GAGAmL,GAAAtU,EACA,OAKA,OAFA+T,EAAA/T,CAAA,CAAA2J,EAAA,CAAAR,EAAA,CAAAnJ,EACA+T,EAAAzJ,CAAA,CAAAX,EAAA,CAAAR,EAAA,CAAAmB,EACAyJ,EAAAM,EAAA,CAAA1K,EAAA,CAAAR,EAAA,CAAAkL,CACA,EAEAT,EACA,SAAAjK,CAAA,EACA,IAAApE,EAAA4D,EAAAuL,EAAA9K,EAAAuI,EAIA,IAFArC,EADAxF,EAAAuJ,EAAA,EAAAlK,GACA,GACAC,EAAA,GACArE,EAAA4M,EAAA,EAAiC,GAAjCxI,EAAiCwI,GAAjCxI,EAAiCwI,GAAjCxI,EAAiEpE,EAAA,GAAjEoE,EAAiE,EAAAwI,EAAA,EAAAA,EACjE7H,EAAAuJ,EAAAtO,EAAAoE,GACAC,EAAA9C,IAAA,YACA,IAAA4E,EAAAiJ,EAGA,IAAAxL,KAFAuC,EAAAqI,EAAAzJ,CAAA,CAAA/E,EAAA,GACAoP,EAAA,GACAjJ,EACAgJ,EAAAhJ,CAAA,CAAAvC,EAAA,CACAA,EAAA9E,SAAA8E,GACA,eAAAuL,EAAA1O,OAAA,EAGA2O,EAAA7N,IAAA,CAAAgJ,EAAAxF,EAAAnB,EAAA,IAEA,OAAAwL,CACA,KAEA,OAAA/K,CACA,EAEAiK,EACA,SAAAtO,CAAA,CAAAoF,CAAA,EACA,OACA3E,QAAA,aACAJ,MAAAyB,EAAAxH,KAAA,CAAA0F,EAAA,CAAAoF,EAAA,QACApF,EAAAA,EACAoF,EAAAA,CACA,CACA,EAEAuJ,EACA,SAAA7J,CAAA,EACA,IAAAuK,EAAAC,EAAA7U,EAAA2J,EAAAR,EAAA8K,EAAAtO,EAMA,IAAAkP,KALAZ,EAAA,GACAtK,EAAAU,EAAA,EACAlB,EAAA,OACAnJ,EAAA8U,IACAnP,EAAAoO,EAAA/T,CAAA,CAAA2J,EAAA,CAEAiL,CAAAA,EAAAjP,CAAA,CAAAkP,EAAA,EACA7U,IACAmJ,EAAA0L,EACA7U,EAAA4U,GAGA,KAAAjL,GAAA,GACAW,EAAAyJ,EAAAzJ,CAAA,CAAAX,EAAA,CAAAR,EAAA,CACA8K,EAAAnO,OAAA,CAAAwE,GACAX,EAAAW,EAAA/E,CAAA,GACA4D,IAEA,OAAA8K,CACA,EAEAtK,EAAAwI,EAAA,EAA6B,GAA7B9H,EAA6B8H,EAA7B9H,EAA6B8H,EAA7B9H,EAA2DV,EAAA,GAA3DU,EAA2D,EAAA8H,EAAA,EAAAA,EAAA,CAE3D,IAAAgC,EAAA,EAAA7H,EAAAZ,CADAA,EAAAoI,CAAA,CAAAnK,EAAA,EACA1I,MAAA,CAAsCkT,EAAA7H,EAAU6H,IAEhD,GAAA7J,CADAA,EAAAoB,CAAA,CAAAyI,EAAA,EACA5O,CAAA,GACA,IAAA4D,KAAA4K,EAAAzJ,CAAA,CAAAA,EAAA/E,CAAA,IACA4D,EAAA9E,SAAA8E,GACA2G,EAAAxF,EAAAnB,EAAA,QAGA2G,EAAAxF,EAAA,GAGAsJ,EAAAjK,EACA,CAQA,OANAqK,EAAAC,CADAA,EAAAC,EAAA7J,EAAA,EACApJ,MAAA,CAEAkH,EADAd,IAAAA,EAAApG,MAAA,CACA,EAEA8S,EAAA/T,CAAA,CAAAqK,EAAA,GAAA2J,EAAA,CAEA,CACA3M,SAAAA,EACAc,QAAAA,EACAxB,cAAA,KAAA2M,KAAA,CAAAnL,GACA9C,SAAA4O,CACA,CACA,EACAO,iBAAA,SAAA9O,CAAA,CAAA2B,CAAA,EACA,IAAAc,EAAA4M,SACA,MAAArP,EAAAyC,OAAA,GAGA4M,EAAA,EACArP,EAAAE,KAAA,CAAA3E,MAAA,CAAAoG,EAAApG,MAAA,EACA8T,CAAAA,EAAArP,IAAAA,EAAAE,KAAA,CAAA3E,MAAA,CAnNA,GAEA,EAiNA,EAWAkH,EAAA6M,CATA,CACAC,WAAA,KAAAC,kBAAA,CACAC,WAAA,KAAAC,kBAAA,CACAC,QAAA,KAAAC,eAAA,CACAC,OAAA,KAAAC,cAAA,CACAnQ,SAAA,KAAAoQ,gBAAA,CACAnF,MAAA,KAAAoF,aAAA,CACAC,KAAA,KAAAC,YAAA,CACA,CACA,CAAAlQ,EAAAM,OAAA,EAAAzF,IAAA,MAAAmF,GACAA,EAAAyC,OAAA,CAAA3G,KAAAC,GAAA,CAAA0G,EAAA4M,GACArP,EAAAiB,aAAA,MAAA2M,KAAA,CAAA5N,EAAAyC,OAAA,GAjBAzC,EAAAyC,OAAA,EAoBA+M,mBAAA,SAAAxP,CAAA,EACA,IAAAyC,EAMA,MALAA,CAAAA,EAAA3G,KAAAiT,GAAA,CAzOA,GAyOA/O,EAAAE,KAAA,CAAA3E,MAAA,KACA4U,OAAAC,iBAAA,EACA3N,CAAAA,EAAA0N,OAAAE,SAAA,EAGAvU,KAAAC,GAAA,CAAA0G,EADAzC,IAAAA,EAAAE,KAAA,CAAA3E,MAAA,CAAA+U,GAAAC,GAEA,EACAT,eAAA,SAAA9P,CAAA,EACA,OAAAA,EAAAwJ,YAAA,CAAAxJ,EAAAgK,YAAA,EAEA+F,iBAAA,SAAA/P,CAAA,EACA,IAAAwJ,EAAAgH,EAcA,OAXAhH,EADAgH,MADAA,CAAAA,EAAAxQ,EAAAE,KAAA,CAAAzE,MAAA,MACA+U,MAAAA,GAAAA,MAAAA,GAAAA,MAAAA,GAAAA,MAAAA,GAAAA,MAAAA,GAAAA,MAAAA,EACA,EAEAA,EAAAxQ,KAAA,OACA,GAEA,GAGAA,EAAAyK,SAAA,EACAjB,CAAAA,GAAA,GAEAA,EAAAxJ,EAAAE,KAAA,CAAA3E,MAAA,EAEAkV,eAAA,GACAvE,eAAA,IAAA/N,OAAAuS,WAAA,GACAV,cAAA,SAAAhQ,CAAA,EACA,IAAA2Q,QASA,CARAA,EAAA,CACAC,YAAA,GACAC,YAAA,GACAC,MAAA,GACAC,aAAA,GACAC,OAAA,GACAC,QAAA,EACA,EACAjR,EAAAY,UAAA,IAAA+P,GACA7U,KAAAiT,GAAA,CAAA4B,CAAA,CAAA3Q,EAAAY,UAAA,EAAAZ,EAAAE,KAAA,CAAA3E,MAAA,EAGA,gBADAyE,EAAAY,UAAA,CAGA9E,KAAAC,GAAA,CADAD,KAAA0O,GAAA,CAAA7L,SAAAqB,EAAA0F,WAAA,UAAAwG,cAAA,EACA,KAAAuE,cAAA,QAIA,EACAP,aAAA,SAAAlQ,CAAA,EACA,IAAAyC,EAMA,OAJAA,EAAAyO,IADApV,KAAAC,GAAA,CAAAD,KAAA0O,GAAA,CAAAxK,EAAAiM,IAAA,MAAAC,cAAA,OAAAuE,cAAA,EAEAzQ,EAAAmM,SAAA,EACA1J,CAAAA,GAAA,GAEAA,CACA,EACA0O,wBAAA5D,EAAAxO,EAAAC,MAAA,EACAoS,sBAAA7D,EAAAxO,EAAAG,MAAA,EACAmS,4BAAA,WACA,IAAApR,EAAAiE,EAGA,IAAAD,KAFAhE,EAAAlB,EAAAC,MAAA,CACAkF,EAAA,GACAjE,EACAA,CAAA,CAAAgE,EAAA,CACAC,EAAA9C,IAAA,CAAA6C,GAEA,OAAAC,CACA,IAAG3I,MAAA,CACH+V,0BAAA,WACA,IAAArR,EAAAiE,EAGA,IAAAD,KAFAhE,EAAAlB,EAAAG,MAAA,CACAgF,EAAA,GACAjE,EACAA,CAAA,CAAAgE,EAAA,CACAC,EAAA9C,IAAA,CAAA6C,GAEA,OAAAC,CACA,IAAG3I,MAAA,CACHqU,gBAAA,SAAA5P,CAAA,EACA,IAAAuR,EAAAC,EAAAC,EAAAnE,EAAA7K,EAAA5C,EAAAoF,EAAA5B,EAAAqO,EAAA9J,EAAA3H,EAAAwL,EAAA/H,EAAAiO,EAAAhO,EAAA8I,EAWA,IAVA,WAAAxM,CAAAA,EAAAD,EAAAQ,KAAA,GAAAP,WAAAA,GACAyD,EAAA,KAAA2N,2BAAA,CACA/D,EAAA,KAAA6D,uBAAA,GAEAzN,EAAA,KAAA4N,yBAAA,CACAhE,EAAA,KAAA8D,qBAAA,EAEA3O,EAAA,EACA8O,EAAAvR,EAAAE,KAAA,CAAA3E,MAAA,CACAoI,EAAA3D,EAAAU,KAAA,CACAb,EAAAwD,EAAA,EAA8B,GAA9BkO,EAA8BlO,GAA9BkO,EAA8BlO,GAA9BkO,EAAiE1R,EAAA,GAAjE0R,EAAiE,EAAAlO,EAAA,EAAAA,EAEjE,IADAqO,EAAA5V,KAAAG,GAAA,CAAA0H,EAAA9D,EAAA,GACAoF,EAAA2C,EAAA,EAA6C,GAA7C8J,EAA6C9J,GAA7C8J,EAA6C9J,GAA7C8J,EAAgFzM,EAAA,GAAhFyM,EAAgF,EAAA9J,EAAA,EAAAA,EAChFnF,GAAA,KAAAkL,GAAA,CAAA9N,EAAA,EAAAoF,EAAA,GAAAvB,EAAA5H,KAAAiT,GAAA,CAAAzB,EAAArI,GAGA,GAAAjF,EAAAqJ,aAAA,EAGA,GAFAmI,EAAAxR,EAAAqJ,aAAA,CACAoI,EAAAzR,EAAAE,KAAA,CAAA3E,MAAA,CAAAyE,EAAAqJ,aAAA,CACAmI,IAAAA,GAAAC,IAAAA,EACAhP,GAAA,MACQ,CAER,IAAA5C,EADA,EACAA,EAAA4M,EAAA,EAAAhB,EAAA3P,KAAAG,GAAA,CAAAuV,EAAAC,GAA+C,GAAAhG,EAAAgB,GAAAhB,EAAAgB,GAAAhB,EAAmC5L,EAAA,GAAA4L,EAAA,EAAAgB,EAAA,EAAAA,EAClFkF,GAAA,KAAAhE,GAAA,CAAA6D,EAAAC,EAAA5R,GAEA4C,GAAAkP,CACA,EAEA,OAAAlP,CACA,EACAiN,mBAAA,SAAA1P,CAAA,EACA,IAAA4R,EAKA,OAJA5R,EAAAwJ,YAAA,CAAAxJ,EAAAkB,IAAA,CACAlB,EAAA6R,oBAAA,MAAAA,oBAAA,CAAA7R,GACAA,EAAA8R,eAAA,MAAAA,eAAA,CAAA9R,GACA4R,EAAA5R,EAAAgB,QAAA,OACAhB,EAAAwJ,YAAA,CAAAxJ,EAAA6R,oBAAA,CAAA7R,EAAA8R,eAAA,CAAAF,CACA,EACAzQ,YAAA,iBACA4Q,UAAA,iBACA1Q,UAAA,YACA2Q,UAAA,YACAH,qBAAA,SAAA7R,CAAA,EACA,IAAAuR,EAAAE,EAAAlN,EAAA1E,EAAAC,EAAAuD,EAAAuE,EAAA3H,EAAA+F,EAAA4E,EAAAqH,EAAApR,EAEA,GAAAA,CADAA,EAAAb,EAAAE,KAAA,EACAF,KAAA,MAAAgS,SAAA,GAAAnR,EAAAS,WAAA,KAAAT,EACA,SAGA,IAAAwC,EAAA,EAAAvD,EAAAG,CADAA,EAAA,MAAAkB,WAAA,MAAA4Q,SAAA,MAAA1Q,SAAA,GACA9F,MAAA,CAAkC8H,EAAAvD,EAASuD,IAE3C,GADAuH,EAAA3K,CAAA,CAAAoD,EAAA,CACAxC,EAAAb,KAAA,CAAA4K,GACA,SA4BA,IAAA/K,EAzBA,WACA,IAAAuD,EAAAwE,EAAA5B,EAAA9B,EAGA,IAAA0D,EAAA,EAFA5B,EAAAnF,EAAA2D,KAAA,KACAN,EAAA,GACAd,EAAA4C,EAAAzK,MAAA,CAAsCqM,EAAAxE,EAAUwE,IAEhDrD,CADAA,EAAAyB,CAAA,CAAA4B,EAAA,EACA5H,KAAA,WACAkE,EAAA9C,IAAA,CAAAmD,GAGA,OAAAL,CACA,IAAK3I,MAAA,CACLgW,EAAA,WACA,IAAAnO,EAAAwE,EAAA5B,EAAA9B,EAGA,IAAA0D,EAAA,EAFA5B,EAAAnF,EAAA2D,KAAA,KACAN,EAAA,GACAd,EAAA4C,EAAAzK,MAAA,CAAsCqM,EAAAxE,EAAUwE,IAEhDrD,CADAA,EAAAyB,CAAA,CAAA4B,EAAA,EACA5H,KAAA,WACAkE,EAAA9C,IAAA,CAAAmD,GAGA,OAAAL,CACA,IAAK3I,MAAA,CACL0W,EAAA,EACApS,EAAA+H,EAAA,EAAA5B,EAAAlK,KAAAG,GAAA,CAAAwV,EAAAF,GAA2C,GAAAvL,EAAA4B,GAAA5B,EAAA4B,GAAA5B,EAAmCnG,EAAA,GAAAmG,EAAA,EAAA4B,EAAA,EAAAA,EAC9EqK,GAAA,KAAAtE,GAAA,CAAA8D,EAAAF,EAAA1R,GAEA,OAAAoS,CACA,EACAH,gBAAA,SAAA9R,CAAA,EACA,IAAAwR,EAAAC,EAAAlN,EAAA2N,EAAArS,EAAAwD,EAAAwC,EAAAsM,EAAAlS,EAAAmS,EAAAC,EAAAJ,EACA,IAAAjS,EAAAe,IAAA,CACA,SAIA,IAAAqR,KAFAH,EAAA,EACAhS,EAAAD,EAAAyG,GAAA,CA0BA,GAxBA4L,EAAApS,CAAA,CAAAmS,EAAA,CACAF,EAAAlS,EAAAE,KAAA,CAAAoB,WAAA,GAAAkD,KAAA,KACAgN,EAAA,WACA,IAAA1R,EAAAuD,EAAAa,EAEA,IAAAb,EAAA,EADAa,EAAA,GACApE,EAAAoS,EAAA3W,MAAA,CAAuC8H,EAAAvD,EAASuD,IAChDkB,CAAAA,EAAA2N,CAAA,CAAA7O,EAAA,IACA+O,GACAlO,EAAA9C,IAAA,CAAAmD,GAGA,OAAAL,CACA,IAAO3I,MAAA,CACPkW,EAAA,WACA,IAAA3R,EAAAuD,EAAAa,EAEA,IAAAb,EAAA,EADAa,EAAA,GACApE,EAAAoS,EAAA3W,MAAA,CAAuC8H,EAAAvD,EAASuD,IAChDkB,CAAAA,EAAA2N,CAAA,CAAA7O,EAAA,IACAgP,GACAnO,EAAA9C,IAAA,CAAAmD,GAGA,OAAAL,CACA,IAAO3I,MAAA,CACPiW,IAAAA,GAAAC,IAAAA,EACAQ,GAAA,MACQ,CAGR,IAFApM,EAAA/J,KAAAG,GAAA,CAAAwV,EAAAD,GACAW,EAAA,EACAtS,EAAAwD,EAAA,EAAkC,GAAlCwC,EAAkCxC,GAAlCwC,EAAkCxC,GAAlCwC,EAAqEhG,EAAA,GAArEgG,EAAqE,EAAAxC,EAAA,EAAAA,EACrE8O,GAAA,KAAAxE,GAAA,CAAA8D,EAAAD,EAAA3R,GAEAoS,GAAAE,CACA,CAEA,OAAAF,CACA,CACA,EAEA3Y,EAAAC,OAAA,CAAA8F,qBCleA,IAAAmC,EAEAA,EAAA,CACAgB,sBAAA,SAAAC,CAAA,EACA,IAAA6P,EAAAC,EAAAC,EAAAC,EAQA,IAAAD,KADAF,EAAA,GANAC,EAAA,CACAG,+BAAAjQ,EAAA,WACAkQ,mCAAAlQ,EAAA,GACAmQ,oCAAAnQ,EAAA,IACAoQ,qCAAApQ,EAAA,IACA,EAGAgQ,EAAAF,CAAA,CAAAC,EAAA,CACAF,CAAA,CAAAE,EAAA,MAAAM,YAAA,CAAAL,GAEA,OACAF,oBAAAA,EACAD,oBAAAA,EACA5S,MAAA,KAAAqT,gBAAA,CAAAtQ,EACA,CACA,EACAsQ,iBAAA,SAAAtQ,CAAA,SAGA,OACA,EACMA,EAAA,QACN,EACMA,EAAA,UACN,EACMA,EAAA,YACN,EAEA,CAEA,EACAqQ,aAAA,SAAAL,CAAA,EACA,IAAAO,EAAAC,EAAAC,EAAAC,EAAA/G,EAAAnM,EAAAgM,EAWA,OALAgH,EAAAhH,IADAA,CAAAA,EAAAG,GADAA,CAAAA,EAAAC,OAAA,CACA,EAEA6G,EAAAjT,CAAAA,EAAAwS,EAAA,8BAAAA,EANA,GAMA,CAAAO,EAAAlX,KAAAsX,KAAA,CAAAX,GAAAO,EAAA,WAAAP,EALAY,KAKA,CAAAL,EAAAlX,KAAAsX,KAAA,CAAAX,EANA,IAMAO,EAAA,WAAAP,EAJAa,MAIA,CAAAN,EAAAlX,KAAAsX,KAAA,CAAAX,EALAY,MAKAL,EAAA,SAAAP,EAAArG,EAAA,CAAA4G,EAAAlX,KAAAsX,KAAA,CAAAX,EAJAa,OAIAN,EAAA,QAAAP,EAAAxG,EAAA,CAAA+G,EAAAlX,KAAAsX,KAAA,CAAAX,EAAArG,GAAA4G,EAAA,UAAAP,EAAAQ,EAAA,CAAAD,EAAAlX,KAAAsX,KAAA,CAAAX,EAAAxG,GAAA+G,EAAA,gCAAAG,EAAAlT,CAAA,IACA,MAAAiT,GAAAA,IAAAA,GACAC,CAAAA,GAAA,KAEAA,CACA,CACA,EAEA7Z,EAAAC,OAAA,CAAAiI","sources":["webpack://_N_E/../../node_modules/lodash/_Symbol.js","webpack://_N_E/../../node_modules/lodash/_baseGetTag.js","webpack://_N_E/../../node_modules/lodash/_baseTrim.js","webpack://_N_E/../../node_modules/lodash/_freeGlobal.js","webpack://_N_E/../../node_modules/lodash/_getRawTag.js","webpack://_N_E/../../node_modules/lodash/_objectToString.js","webpack://_N_E/../../node_modules/lodash/_root.js","webpack://_N_E/../../node_modules/lodash/_trimmedEndIndex.js","webpack://_N_E/../../node_modules/lodash/debounce.js","webpack://_N_E/../../node_modules/lodash/isObject.js","webpack://_N_E/../../node_modules/lodash/isObjectLike.js","webpack://_N_E/../../node_modules/lodash/isSymbol.js","webpack://_N_E/../../node_modules/lodash/now.js","webpack://_N_E/../../node_modules/lodash/toNumber.js","webpack://_N_E/../../node_modules/zxcvbn/lib/adjacency_graphs.js","webpack://_N_E/../../node_modules/zxcvbn/lib/feedback.js","webpack://_N_E/../../node_modules/zxcvbn/lib/main.js","webpack://_N_E/../../node_modules/zxcvbn/lib/matching.js","webpack://_N_E/../../node_modules/zxcvbn/lib/scoring.js","webpack://_N_E/../../node_modules/zxcvbn/lib/time_estimates.js"],"sourcesContent":["var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// Generated by CoffeeScript 1.10.0\nvar adjacency_graphs;\n\nadjacency_graphs = {\n qwerty: {\n \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"\\\\\": [\"]}\", null, null, null, null, null],\n \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"|\": [\"]}\", null, null, null, null, null],\n \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n dvorak: {\n \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \":\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \";\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"\\\\\": [\"=+\", null, null, null, null, null],\n \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"|\": [\"=+\", null, null, null, null, null],\n \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n keypad: {\n \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"],\n \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"],\n \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"],\n \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"]\n },\n mac_keypad: {\n \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"],\n \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"],\n \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"],\n \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"],\n \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"]\n }\n};\n\nmodule.exports = adjacency_graphs;\n\n//# sourceMappingURL=adjacency_graphs.js.map\n","// Generated by CoffeeScript 1.10.0\nvar feedback, scoring;\n\nscoring = require('./scoring');\n\nfeedback = {\n default_feedback: {\n warning: '',\n suggestions: [\"Use a few words, avoid common phrases\", \"No need for symbols, digits, or uppercase letters\"]\n },\n get_feedback: function(score, sequence) {\n var extra_feedback, i, len, longest_match, match, ref;\n if (sequence.length === 0) {\n return this.default_feedback;\n }\n if (score > 2) {\n return {\n warning: '',\n suggestions: []\n };\n }\n longest_match = sequence[0];\n ref = sequence.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n match = ref[i];\n if (match.token.length > longest_match.token.length) {\n longest_match = match;\n }\n }\n feedback = this.get_match_feedback(longest_match, sequence.length === 1);\n extra_feedback = 'Add another word or two. Uncommon words are better.';\n if (feedback != null) {\n feedback.suggestions.unshift(extra_feedback);\n if (feedback.warning == null) {\n feedback.warning = '';\n }\n } else {\n feedback = {\n warning: '',\n suggestions: [extra_feedback]\n };\n }\n return feedback;\n },\n get_match_feedback: function(match, is_sole_match) {\n var layout, warning;\n switch (match.pattern) {\n case 'dictionary':\n return this.get_dictionary_match_feedback(match, is_sole_match);\n case 'spatial':\n layout = match.graph.toUpperCase();\n warning = match.turns === 1 ? 'Straight rows of keys are easy to guess' : 'Short keyboard patterns are easy to guess';\n return {\n warning: warning,\n suggestions: ['Use a longer keyboard pattern with more turns']\n };\n case 'repeat':\n warning = match.base_token.length === 1 ? 'Repeats like \"aaa\" are easy to guess' : 'Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"';\n return {\n warning: warning,\n suggestions: ['Avoid repeated words and characters']\n };\n case 'sequence':\n return {\n warning: \"Sequences like abc or 6543 are easy to guess\",\n suggestions: ['Avoid sequences']\n };\n case 'regex':\n if (match.regex_name === 'recent_year') {\n return {\n warning: \"Recent years are easy to guess\",\n suggestions: ['Avoid recent years', 'Avoid years that are associated with you']\n };\n }\n break;\n case 'date':\n return {\n warning: \"Dates are often easy to guess\",\n suggestions: ['Avoid dates and years that are associated with you']\n };\n }\n },\n get_dictionary_match_feedback: function(match, is_sole_match) {\n var ref, result, suggestions, warning, word;\n warning = match.dictionary_name === 'passwords' ? is_sole_match && !match.l33t && !match.reversed ? match.rank <= 10 ? 'This is a top-10 common password' : match.rank <= 100 ? 'This is a top-100 common password' : 'This is a very common password' : match.guesses_log10 <= 4 ? 'This is similar to a commonly used password' : void 0 : match.dictionary_name === 'english_wikipedia' ? is_sole_match ? 'A word by itself is easy to guess' : void 0 : (ref = match.dictionary_name) === 'surnames' || ref === 'male_names' || ref === 'female_names' ? is_sole_match ? 'Names and surnames by themselves are easy to guess' : 'Common names and surnames are easy to guess' : '';\n suggestions = [];\n word = match.token;\n if (word.match(scoring.START_UPPER)) {\n suggestions.push(\"Capitalization doesn't help very much\");\n } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {\n suggestions.push(\"All-uppercase is almost as easy to guess as all-lowercase\");\n }\n if (match.reversed && match.token.length >= 4) {\n suggestions.push(\"Reversed words aren't much harder to guess\");\n }\n if (match.l33t) {\n suggestions.push(\"Predictable substitutions like '@' instead of 'a' don't help very much\");\n }\n result = {\n warning: warning,\n suggestions: suggestions\n };\n return result;\n }\n};\n\nmodule.exports = feedback;\n\n//# sourceMappingURL=feedback.js.map\n","// Generated by CoffeeScript 1.10.0\nvar feedback, matching, scoring, time, time_estimates, zxcvbn;\n\nmatching = require('./matching');\n\nscoring = require('./scoring');\n\ntime_estimates = require('./time_estimates');\n\nfeedback = require('./feedback');\n\ntime = function() {\n return (new Date()).getTime();\n};\n\nzxcvbn = function(password, user_inputs) {\n var arg, attack_times, i, len, matches, prop, ref, result, sanitized_inputs, start, val;\n if (user_inputs == null) {\n user_inputs = [];\n }\n start = time();\n sanitized_inputs = [];\n for (i = 0, len = user_inputs.length; i < len; i++) {\n arg = user_inputs[i];\n if ((ref = typeof arg) === \"string\" || ref === \"number\" || ref === \"boolean\") {\n sanitized_inputs.push(arg.toString().toLowerCase());\n }\n }\n matching.set_user_input_dictionary(sanitized_inputs);\n matches = matching.omnimatch(password);\n result = scoring.most_guessable_match_sequence(password, matches);\n result.calc_time = time() - start;\n attack_times = time_estimates.estimate_attack_times(result.guesses);\n for (prop in attack_times) {\n val = attack_times[prop];\n result[prop] = val;\n }\n result.feedback = feedback.get_feedback(result.score, result.sequence);\n return result;\n};\n\nmodule.exports = zxcvbn;\n\n//# sourceMappingURL=main.js.map\n","// Generated by CoffeeScript 1.10.0\nvar DATE_MAX_YEAR, DATE_MIN_YEAR, DATE_SPLITS, GRAPHS, L33T_TABLE, RANKED_DICTIONARIES, REGEXEN, adjacency_graphs, build_ranked_dict, frequency_lists, lst, matching, name, scoring;\n\nfrequency_lists = require('./frequency_lists');\n\nadjacency_graphs = require('./adjacency_graphs');\n\nscoring = require('./scoring');\n\nbuild_ranked_dict = function(ordered_list) {\n var i, len1, o, result, word;\n result = {};\n i = 1;\n for (o = 0, len1 = ordered_list.length; o < len1; o++) {\n word = ordered_list[o];\n result[word] = i;\n i += 1;\n }\n return result;\n};\n\nRANKED_DICTIONARIES = {};\n\nfor (name in frequency_lists) {\n lst = frequency_lists[name];\n RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n}\n\nGRAPHS = {\n qwerty: adjacency_graphs.qwerty,\n dvorak: adjacency_graphs.dvorak,\n keypad: adjacency_graphs.keypad,\n mac_keypad: adjacency_graphs.mac_keypad\n};\n\nL33T_TABLE = {\n a: ['4', '@'],\n b: ['8'],\n c: ['(', '{', '[', '<'],\n e: ['3'],\n g: ['6', '9'],\n i: ['1', '!', '|'],\n l: ['1', '|', '7'],\n o: ['0'],\n s: ['$', '5'],\n t: ['+', '7'],\n x: ['%'],\n z: ['2']\n};\n\nREGEXEN = {\n recent_year: /19\\d\\d|200\\d|201\\d/g\n};\n\nDATE_MAX_YEAR = 2050;\n\nDATE_MIN_YEAR = 1000;\n\nDATE_SPLITS = {\n 4: [[1, 2], [2, 3]],\n 5: [[1, 3], [2, 3]],\n 6: [[1, 2], [2, 4], [4, 5]],\n 7: [[1, 3], [2, 3], [4, 5], [4, 6]],\n 8: [[2, 4], [4, 6]]\n};\n\nmatching = {\n empty: function(obj) {\n var k;\n return ((function() {\n var results;\n results = [];\n for (k in obj) {\n results.push(k);\n }\n return results;\n })()).length === 0;\n },\n extend: function(lst, lst2) {\n return lst.push.apply(lst, lst2);\n },\n translate: function(string, chr_map) {\n var chr;\n return ((function() {\n var len1, o, ref, results;\n ref = string.split('');\n results = [];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n results.push(chr_map[chr] || chr);\n }\n return results;\n })()).join('');\n },\n mod: function(n, m) {\n return ((n % m) + m) % m;\n },\n sorted: function(matches) {\n return matches.sort(function(m1, m2) {\n return (m1.i - m2.i) || (m1.j - m2.j);\n });\n },\n omnimatch: function(password) {\n var len1, matcher, matchers, matches, o;\n matches = [];\n matchers = [this.dictionary_match, this.reverse_dictionary_match, this.l33t_match, this.spatial_match, this.repeat_match, this.sequence_match, this.regex_match, this.date_match];\n for (o = 0, len1 = matchers.length; o < len1; o++) {\n matcher = matchers[o];\n this.extend(matches, matcher.call(this, password));\n }\n return this.sorted(matches);\n },\n dictionary_match: function(password, _ranked_dictionaries) {\n var dictionary_name, i, j, len, matches, o, p, password_lower, rank, ranked_dict, ref, ref1, ref2, word;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n matches = [];\n len = password.length;\n password_lower = password.toLowerCase();\n for (dictionary_name in _ranked_dictionaries) {\n ranked_dict = _ranked_dictionaries[dictionary_name];\n for (i = o = 0, ref = len; 0 <= ref ? o < ref : o > ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i, ref2 = len; ref1 <= ref2 ? p < ref2 : p > ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (password_lower.slice(i, +j + 1 || 9e9) in ranked_dict) {\n word = password_lower.slice(i, +j + 1 || 9e9);\n rank = ranked_dict[word];\n matches.push({\n pattern: 'dictionary',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n matched_word: word,\n rank: rank,\n dictionary_name: dictionary_name,\n reversed: false,\n l33t: false\n });\n }\n }\n }\n }\n return this.sorted(matches);\n },\n reverse_dictionary_match: function(password, _ranked_dictionaries) {\n var len1, match, matches, o, ref, reversed_password;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n reversed_password = password.split('').reverse().join('');\n matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n for (o = 0, len1 = matches.length; o < len1; o++) {\n match = matches[o];\n match.token = match.token.split('').reverse().join('');\n match.reversed = true;\n ref = [password.length - 1 - match.j, password.length - 1 - match.i], match.i = ref[0], match.j = ref[1];\n }\n return this.sorted(matches);\n },\n set_user_input_dictionary: function(ordered_list) {\n return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n },\n relevant_l33t_subtable: function(password, table) {\n var chr, len1, letter, o, password_chars, ref, relevant_subs, sub, subs, subtable;\n password_chars = {};\n ref = password.split('');\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n password_chars[chr] = true;\n }\n subtable = {};\n for (letter in table) {\n subs = table[letter];\n relevant_subs = (function() {\n var len2, p, results;\n results = [];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n if (sub in password_chars) {\n results.push(sub);\n }\n }\n return results;\n })();\n if (relevant_subs.length > 0) {\n subtable[letter] = relevant_subs;\n }\n }\n return subtable;\n },\n enumerate_l33t_subs: function(table) {\n var chr, dedup, helper, k, keys, l33t_chr, len1, len2, o, p, ref, sub, sub_dict, sub_dicts, subs;\n keys = (function() {\n var results;\n results = [];\n for (k in table) {\n results.push(k);\n }\n return results;\n })();\n subs = [[]];\n dedup = function(subs) {\n var assoc, deduped, label, len1, members, o, sub, v;\n deduped = [];\n members = {};\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n assoc = (function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = sub.length; p < len2; v = ++p) {\n k = sub[v];\n results.push([k, v]);\n }\n return results;\n })();\n assoc.sort();\n label = ((function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = assoc.length; p < len2; v = ++p) {\n k = assoc[v];\n results.push(k + ',' + v);\n }\n return results;\n })()).join('-');\n if (!(label in members)) {\n members[label] = true;\n deduped.push(sub);\n }\n }\n return deduped;\n };\n helper = function(keys) {\n var dup_l33t_index, first_key, i, l33t_chr, len1, len2, next_subs, o, p, q, ref, ref1, rest_keys, sub, sub_alternative, sub_extension;\n if (!keys.length) {\n return;\n }\n first_key = keys[0];\n rest_keys = keys.slice(1);\n next_subs = [];\n ref = table[first_key];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n l33t_chr = ref[o];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n dup_l33t_index = -1;\n for (i = q = 0, ref1 = sub.length; 0 <= ref1 ? q < ref1 : q > ref1; i = 0 <= ref1 ? ++q : --q) {\n if (sub[i][0] === l33t_chr) {\n dup_l33t_index = i;\n break;\n }\n }\n if (dup_l33t_index === -1) {\n sub_extension = sub.concat([[l33t_chr, first_key]]);\n next_subs.push(sub_extension);\n } else {\n sub_alternative = sub.slice(0);\n sub_alternative.splice(dup_l33t_index, 1);\n sub_alternative.push([l33t_chr, first_key]);\n next_subs.push(sub);\n next_subs.push(sub_alternative);\n }\n }\n }\n subs = dedup(next_subs);\n return helper(rest_keys);\n };\n helper(keys);\n sub_dicts = [];\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n sub_dict = {};\n for (p = 0, len2 = sub.length; p < len2; p++) {\n ref = sub[p], l33t_chr = ref[0], chr = ref[1];\n sub_dict[l33t_chr] = chr;\n }\n sub_dicts.push(sub_dict);\n }\n return sub_dicts;\n },\n l33t_match: function(password, _ranked_dictionaries, _l33t_table) {\n var chr, k, len1, len2, match, match_sub, matches, o, p, ref, ref1, sub, subbed_chr, subbed_password, token, v;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n if (_l33t_table == null) {\n _l33t_table = L33T_TABLE;\n }\n matches = [];\n ref = this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table));\n for (o = 0, len1 = ref.length; o < len1; o++) {\n sub = ref[o];\n if (this.empty(sub)) {\n break;\n }\n subbed_password = this.translate(password, sub);\n ref1 = this.dictionary_match(subbed_password, _ranked_dictionaries);\n for (p = 0, len2 = ref1.length; p < len2; p++) {\n match = ref1[p];\n token = password.slice(match.i, +match.j + 1 || 9e9);\n if (token.toLowerCase() === match.matched_word) {\n continue;\n }\n match_sub = {};\n for (subbed_chr in sub) {\n chr = sub[subbed_chr];\n if (token.indexOf(subbed_chr) !== -1) {\n match_sub[subbed_chr] = chr;\n }\n }\n match.l33t = true;\n match.token = token;\n match.sub = match_sub;\n match.sub_display = ((function() {\n var results;\n results = [];\n for (k in match_sub) {\n v = match_sub[k];\n results.push(k + \" -> \" + v);\n }\n return results;\n })()).join(', ');\n matches.push(match);\n }\n }\n return this.sorted(matches.filter(function(match) {\n return match.token.length > 1;\n }));\n },\n spatial_match: function(password, _graphs) {\n var graph, graph_name, matches;\n if (_graphs == null) {\n _graphs = GRAPHS;\n }\n matches = [];\n for (graph_name in _graphs) {\n graph = _graphs[graph_name];\n this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n }\n return this.sorted(matches);\n },\n SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n spatial_match_helper: function(password, graph, graph_name) {\n var adj, adjacents, cur_char, cur_direction, found, found_direction, i, j, last_direction, len1, matches, o, prev_char, shifted_count, turns;\n matches = [];\n i = 0;\n while (i < password.length - 1) {\n j = i + 1;\n last_direction = null;\n turns = 0;\n if ((graph_name === 'qwerty' || graph_name === 'dvorak') && this.SHIFTED_RX.exec(password.charAt(i))) {\n shifted_count = 1;\n } else {\n shifted_count = 0;\n }\n while (true) {\n prev_char = password.charAt(j - 1);\n found = false;\n found_direction = -1;\n cur_direction = -1;\n adjacents = graph[prev_char] || [];\n if (j < password.length) {\n cur_char = password.charAt(j);\n for (o = 0, len1 = adjacents.length; o < len1; o++) {\n adj = adjacents[o];\n cur_direction += 1;\n if (adj && adj.indexOf(cur_char) !== -1) {\n found = true;\n found_direction = cur_direction;\n if (adj.indexOf(cur_char) === 1) {\n shifted_count += 1;\n }\n if (last_direction !== found_direction) {\n turns += 1;\n last_direction = found_direction;\n }\n break;\n }\n }\n }\n if (found) {\n j += 1;\n } else {\n if (j - i > 2) {\n matches.push({\n pattern: 'spatial',\n i: i,\n j: j - 1,\n token: password.slice(i, j),\n graph: graph_name,\n turns: turns,\n shifted_count: shifted_count\n });\n }\n i = j;\n break;\n }\n }\n }\n return matches;\n },\n repeat_match: function(password) {\n var base_analysis, base_guesses, base_matches, base_token, greedy, greedy_match, i, j, lastIndex, lazy, lazy_anchored, lazy_match, match, matches, ref;\n matches = [];\n greedy = /(.+)\\1+/g;\n lazy = /(.+?)\\1+/g;\n lazy_anchored = /^(.+?)\\1+$/;\n lastIndex = 0;\n while (lastIndex < password.length) {\n greedy.lastIndex = lazy.lastIndex = lastIndex;\n greedy_match = greedy.exec(password);\n lazy_match = lazy.exec(password);\n if (greedy_match == null) {\n break;\n }\n if (greedy_match[0].length > lazy_match[0].length) {\n match = greedy_match;\n base_token = lazy_anchored.exec(match[0])[1];\n } else {\n match = lazy_match;\n base_token = match[1];\n }\n ref = [match.index, match.index + match[0].length - 1], i = ref[0], j = ref[1];\n base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n base_matches = base_analysis.sequence;\n base_guesses = base_analysis.guesses;\n matches.push({\n pattern: 'repeat',\n i: i,\n j: j,\n token: match[0],\n base_token: base_token,\n base_guesses: base_guesses,\n base_matches: base_matches,\n repeat_count: match[0].length / base_token.length\n });\n lastIndex = j + 1;\n }\n return matches;\n },\n MAX_DELTA: 5,\n sequence_match: function(password) {\n var delta, i, j, k, last_delta, o, ref, result, update;\n if (password.length === 1) {\n return [];\n }\n update = (function(_this) {\n return function(i, j, delta) {\n var ref, sequence_name, sequence_space, token;\n if (j - i > 1 || Math.abs(delta) === 1) {\n if ((0 < (ref = Math.abs(delta)) && ref <= _this.MAX_DELTA)) {\n token = password.slice(i, +j + 1 || 9e9);\n if (/^[a-z]+$/.test(token)) {\n sequence_name = 'lower';\n sequence_space = 26;\n } else if (/^[A-Z]+$/.test(token)) {\n sequence_name = 'upper';\n sequence_space = 26;\n } else if (/^\\d+$/.test(token)) {\n sequence_name = 'digits';\n sequence_space = 10;\n } else {\n sequence_name = 'unicode';\n sequence_space = 26;\n }\n return result.push({\n pattern: 'sequence',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n sequence_name: sequence_name,\n sequence_space: sequence_space,\n ascending: delta > 0\n });\n }\n }\n };\n })(this);\n result = [];\n i = 0;\n last_delta = null;\n for (k = o = 1, ref = password.length; 1 <= ref ? o < ref : o > ref; k = 1 <= ref ? ++o : --o) {\n delta = password.charCodeAt(k) - password.charCodeAt(k - 1);\n if (last_delta == null) {\n last_delta = delta;\n }\n if (delta === last_delta) {\n continue;\n }\n j = k - 1;\n update(i, j, last_delta);\n i = j;\n last_delta = delta;\n }\n update(i, password.length - 1, last_delta);\n return result;\n },\n regex_match: function(password, _regexen) {\n var matches, regex, rx_match, token;\n if (_regexen == null) {\n _regexen = REGEXEN;\n }\n matches = [];\n for (name in _regexen) {\n regex = _regexen[name];\n regex.lastIndex = 0;\n while (rx_match = regex.exec(password)) {\n token = rx_match[0];\n matches.push({\n pattern: 'regex',\n token: token,\n i: rx_match.index,\n j: rx_match.index + rx_match[0].length - 1,\n regex_name: name,\n regex_match: rx_match\n });\n }\n }\n return this.sorted(matches);\n },\n date_match: function(password) {\n var best_candidate, candidate, candidates, distance, dmy, i, j, k, l, len1, len2, matches, maybe_date_no_separator, maybe_date_with_separator, metric, min_distance, o, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, rx_match, s, t, token;\n matches = [];\n maybe_date_no_separator = /^\\d{4,8}$/;\n maybe_date_with_separator = /^(\\d{1,4})([\\s\\/\\\\_.-])(\\d{1,2})\\2(\\d{1,4})$/;\n for (i = o = 0, ref = password.length - 4; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i + 3, ref2 = i + 7; ref1 <= ref2 ? p <= ref2 : p >= ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n if (!maybe_date_no_separator.exec(token)) {\n continue;\n }\n candidates = [];\n ref3 = DATE_SPLITS[token.length];\n for (q = 0, len1 = ref3.length; q < len1; q++) {\n ref4 = ref3[q], k = ref4[0], l = ref4[1];\n dmy = this.map_ints_to_dmy([parseInt(token.slice(0, k)), parseInt(token.slice(k, l)), parseInt(token.slice(l))]);\n if (dmy != null) {\n candidates.push(dmy);\n }\n }\n if (!(candidates.length > 0)) {\n continue;\n }\n best_candidate = candidates[0];\n metric = function(candidate) {\n return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n };\n min_distance = metric(candidates[0]);\n ref5 = candidates.slice(1);\n for (r = 0, len2 = ref5.length; r < len2; r++) {\n candidate = ref5[r];\n distance = metric(candidate);\n if (distance < min_distance) {\n ref6 = [candidate, distance], best_candidate = ref6[0], min_distance = ref6[1];\n }\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: '',\n year: best_candidate.year,\n month: best_candidate.month,\n day: best_candidate.day\n });\n }\n }\n for (i = s = 0, ref7 = password.length - 6; 0 <= ref7 ? s <= ref7 : s >= ref7; i = 0 <= ref7 ? ++s : --s) {\n for (j = t = ref8 = i + 5, ref9 = i + 9; ref8 <= ref9 ? t <= ref9 : t >= ref9; j = ref8 <= ref9 ? ++t : --t) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n rx_match = maybe_date_with_separator.exec(token);\n if (rx_match == null) {\n continue;\n }\n dmy = this.map_ints_to_dmy([parseInt(rx_match[1]), parseInt(rx_match[3]), parseInt(rx_match[4])]);\n if (dmy == null) {\n continue;\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: rx_match[2],\n year: dmy.year,\n month: dmy.month,\n day: dmy.day\n });\n }\n }\n return this.sorted(matches.filter(function(match) {\n var is_submatch, len3, other_match, u;\n is_submatch = false;\n for (u = 0, len3 = matches.length; u < len3; u++) {\n other_match = matches[u];\n if (match === other_match) {\n continue;\n }\n if (other_match.i <= match.i && other_match.j >= match.j) {\n is_submatch = true;\n break;\n }\n }\n return !is_submatch;\n }));\n },\n map_ints_to_dmy: function(ints) {\n var dm, int, len1, len2, len3, o, over_12, over_31, p, possible_year_splits, q, ref, ref1, rest, under_1, y;\n if (ints[1] > 31 || ints[1] <= 0) {\n return;\n }\n over_12 = 0;\n over_31 = 0;\n under_1 = 0;\n for (o = 0, len1 = ints.length; o < len1; o++) {\n int = ints[o];\n if ((99 < int && int < DATE_MIN_YEAR) || int > DATE_MAX_YEAR) {\n return;\n }\n if (int > 31) {\n over_31 += 1;\n }\n if (int > 12) {\n over_12 += 1;\n }\n if (int <= 0) {\n under_1 += 1;\n }\n }\n if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n return;\n }\n possible_year_splits = [[ints[2], ints.slice(0, 2)], [ints[0], ints.slice(1, 3)]];\n for (p = 0, len2 = possible_year_splits.length; p < len2; p++) {\n ref = possible_year_splits[p], y = ref[0], rest = ref[1];\n if ((DATE_MIN_YEAR <= y && y <= DATE_MAX_YEAR)) {\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n } else {\n return;\n }\n }\n }\n for (q = 0, len3 = possible_year_splits.length; q < len3; q++) {\n ref1 = possible_year_splits[q], y = ref1[0], rest = ref1[1];\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n y = this.two_to_four_digit_year(y);\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n }\n }\n },\n map_ints_to_dm: function(ints) {\n var d, len1, m, o, ref, ref1;\n ref = [ints, ints.slice().reverse()];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n ref1 = ref[o], d = ref1[0], m = ref1[1];\n if ((1 <= d && d <= 31) && (1 <= m && m <= 12)) {\n return {\n day: d,\n month: m\n };\n }\n }\n },\n two_to_four_digit_year: function(year) {\n if (year > 99) {\n return year;\n } else if (year > 50) {\n return year + 1900;\n } else {\n return year + 2000;\n }\n }\n};\n\nmodule.exports = matching;\n\n//# sourceMappingURL=matching.js.map\n","// Generated by CoffeeScript 1.10.0\nvar BRUTEFORCE_CARDINALITY, MIN_GUESSES_BEFORE_GROWING_SEQUENCE, MIN_SUBMATCH_GUESSES_MULTI_CHAR, MIN_SUBMATCH_GUESSES_SINGLE_CHAR, adjacency_graphs, calc_average_degree, k, scoring, v;\n\nadjacency_graphs = require('./adjacency_graphs');\n\ncalc_average_degree = function(graph) {\n var average, k, key, n, neighbors, v;\n average = 0;\n for (key in graph) {\n neighbors = graph[key];\n average += ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = neighbors.length; o < len; o++) {\n n = neighbors[o];\n if (n) {\n results.push(n);\n }\n }\n return results;\n })()).length;\n }\n average /= ((function() {\n var results;\n results = [];\n for (k in graph) {\n v = graph[k];\n results.push(k);\n }\n return results;\n })()).length;\n return average;\n};\n\nBRUTEFORCE_CARDINALITY = 10;\n\nMIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\n\nMIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\n\nMIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nscoring = {\n nCk: function(n, k) {\n var d, o, r, ref;\n if (k > n) {\n return 0;\n }\n if (k === 0) {\n return 1;\n }\n r = 1;\n for (d = o = 1, ref = k; 1 <= ref ? o <= ref : o >= ref; d = 1 <= ref ? ++o : --o) {\n r *= n;\n r /= d;\n n -= 1;\n }\n return r;\n },\n log10: function(n) {\n return Math.log(n) / Math.log(10);\n },\n log2: function(n) {\n return Math.log(n) / Math.log(2);\n },\n factorial: function(n) {\n var f, i, o, ref;\n if (n < 2) {\n return 1;\n }\n f = 1;\n for (i = o = 2, ref = n; 2 <= ref ? o <= ref : o >= ref; i = 2 <= ref ? ++o : --o) {\n f *= i;\n }\n return f;\n },\n most_guessable_match_sequence: function(password, matches, _exclude_additive) {\n var _, bruteforce_update, guesses, k, l, len, len1, len2, lst, m, make_bruteforce_match, matches_by_j, n, o, optimal, optimal_l, optimal_match_sequence, q, ref, ref1, u, unwind, update, w;\n if (_exclude_additive == null) {\n _exclude_additive = false;\n }\n n = password.length;\n matches_by_j = (function() {\n var o, ref, results;\n results = [];\n for (_ = o = 0, ref = n; 0 <= ref ? o < ref : o > ref; _ = 0 <= ref ? ++o : --o) {\n results.push([]);\n }\n return results;\n })();\n for (o = 0, len = matches.length; o < len; o++) {\n m = matches[o];\n matches_by_j[m.j].push(m);\n }\n for (q = 0, len1 = matches_by_j.length; q < len1; q++) {\n lst = matches_by_j[q];\n lst.sort(function(m1, m2) {\n return m1.i - m2.i;\n });\n }\n optimal = {\n m: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n pi: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n g: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })()\n };\n update = (function(_this) {\n return function(m, l) {\n var competing_g, competing_l, g, k, pi, ref;\n k = m.j;\n pi = _this.estimate_guesses(m, password);\n if (l > 1) {\n pi *= optimal.pi[m.i - 1][l - 1];\n }\n g = _this.factorial(l) * pi;\n if (!_exclude_additive) {\n g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n }\n ref = optimal.g[k];\n for (competing_l in ref) {\n competing_g = ref[competing_l];\n if (competing_l > l) {\n continue;\n }\n if (competing_g <= g) {\n return;\n }\n }\n optimal.g[k][l] = g;\n optimal.m[k][l] = m;\n return optimal.pi[k][l] = pi;\n };\n })(this);\n bruteforce_update = (function(_this) {\n return function(k) {\n var i, l, last_m, ref, results, u;\n m = make_bruteforce_match(0, k);\n update(m, 1);\n results = [];\n for (i = u = 1, ref = k; 1 <= ref ? u <= ref : u >= ref; i = 1 <= ref ? ++u : --u) {\n m = make_bruteforce_match(i, k);\n results.push((function() {\n var ref1, results1;\n ref1 = optimal.m[i - 1];\n results1 = [];\n for (l in ref1) {\n last_m = ref1[l];\n l = parseInt(l);\n if (last_m.pattern === 'bruteforce') {\n continue;\n }\n results1.push(update(m, l + 1));\n }\n return results1;\n })());\n }\n return results;\n };\n })(this);\n make_bruteforce_match = (function(_this) {\n return function(i, j) {\n return {\n pattern: 'bruteforce',\n token: password.slice(i, +j + 1 || 9e9),\n i: i,\n j: j\n };\n };\n })(this);\n unwind = (function(_this) {\n return function(n) {\n var candidate_g, candidate_l, g, k, l, optimal_match_sequence, ref;\n optimal_match_sequence = [];\n k = n - 1;\n l = void 0;\n g = Infinity;\n ref = optimal.g[k];\n for (candidate_l in ref) {\n candidate_g = ref[candidate_l];\n if (candidate_g < g) {\n l = candidate_l;\n g = candidate_g;\n }\n }\n while (k >= 0) {\n m = optimal.m[k][l];\n optimal_match_sequence.unshift(m);\n k = m.i - 1;\n l--;\n }\n return optimal_match_sequence;\n };\n })(this);\n for (k = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; k = 0 <= ref ? ++u : --u) {\n ref1 = matches_by_j[k];\n for (w = 0, len2 = ref1.length; w < len2; w++) {\n m = ref1[w];\n if (m.i > 0) {\n for (l in optimal.m[m.i - 1]) {\n l = parseInt(l);\n update(m, l + 1);\n }\n } else {\n update(m, 1);\n }\n }\n bruteforce_update(k);\n }\n optimal_match_sequence = unwind(n);\n optimal_l = optimal_match_sequence.length;\n if (password.length === 0) {\n guesses = 1;\n } else {\n guesses = optimal.g[n - 1][optimal_l];\n }\n return {\n password: password,\n guesses: guesses,\n guesses_log10: this.log10(guesses),\n sequence: optimal_match_sequence\n };\n },\n estimate_guesses: function(match, password) {\n var estimation_functions, guesses, min_guesses;\n if (match.guesses != null) {\n return match.guesses;\n }\n min_guesses = 1;\n if (match.token.length < password.length) {\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR : MIN_SUBMATCH_GUESSES_MULTI_CHAR;\n }\n estimation_functions = {\n bruteforce: this.bruteforce_guesses,\n dictionary: this.dictionary_guesses,\n spatial: this.spatial_guesses,\n repeat: this.repeat_guesses,\n sequence: this.sequence_guesses,\n regex: this.regex_guesses,\n date: this.date_guesses\n };\n guesses = estimation_functions[match.pattern].call(this, match);\n match.guesses = Math.max(guesses, min_guesses);\n match.guesses_log10 = this.log10(match.guesses);\n return match.guesses;\n },\n bruteforce_guesses: function(match) {\n var guesses, min_guesses;\n guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n if (guesses === Number.POSITIVE_INFINITY) {\n guesses = Number.MAX_VALUE;\n }\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1 : MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1;\n return Math.max(guesses, min_guesses);\n },\n repeat_guesses: function(match) {\n return match.base_guesses * match.repeat_count;\n },\n sequence_guesses: function(match) {\n var base_guesses, first_chr;\n first_chr = match.token.charAt(0);\n if (first_chr === 'a' || first_chr === 'A' || first_chr === 'z' || first_chr === 'Z' || first_chr === '0' || first_chr === '1' || first_chr === '9') {\n base_guesses = 4;\n } else {\n if (first_chr.match(/\\d/)) {\n base_guesses = 10;\n } else {\n base_guesses = 26;\n }\n }\n if (!match.ascending) {\n base_guesses *= 2;\n }\n return base_guesses * match.token.length;\n },\n MIN_YEAR_SPACE: 20,\n REFERENCE_YEAR: new Date().getFullYear(),\n regex_guesses: function(match) {\n var char_class_bases, year_space;\n char_class_bases = {\n alpha_lower: 26,\n alpha_upper: 26,\n alpha: 52,\n alphanumeric: 62,\n digits: 10,\n symbols: 33\n };\n if (match.regex_name in char_class_bases) {\n return Math.pow(char_class_bases[match.regex_name], match.token.length);\n } else {\n switch (match.regex_name) {\n case 'recent_year':\n year_space = Math.abs(parseInt(match.regex_match[0]) - this.REFERENCE_YEAR);\n year_space = Math.max(year_space, this.MIN_YEAR_SPACE);\n return year_space;\n }\n }\n },\n date_guesses: function(match) {\n var guesses, year_space;\n year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n guesses = year_space * 365;\n if (match.separator) {\n guesses *= 4;\n }\n return guesses;\n },\n KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n KEYBOARD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.qwerty;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n KEYPAD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.keypad;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n spatial_guesses: function(match) {\n var L, S, U, d, guesses, i, j, o, possible_turns, q, ref, ref1, ref2, ref3, s, shifted_variations, t, u;\n if ((ref = match.graph) === 'qwerty' || ref === 'dvorak') {\n s = this.KEYBOARD_STARTING_POSITIONS;\n d = this.KEYBOARD_AVERAGE_DEGREE;\n } else {\n s = this.KEYPAD_STARTING_POSITIONS;\n d = this.KEYPAD_AVERAGE_DEGREE;\n }\n guesses = 0;\n L = match.token.length;\n t = match.turns;\n for (i = o = 2, ref1 = L; 2 <= ref1 ? o <= ref1 : o >= ref1; i = 2 <= ref1 ? ++o : --o) {\n possible_turns = Math.min(t, i - 1);\n for (j = q = 1, ref2 = possible_turns; 1 <= ref2 ? q <= ref2 : q >= ref2; j = 1 <= ref2 ? ++q : --q) {\n guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n }\n }\n if (match.shifted_count) {\n S = match.shifted_count;\n U = match.token.length - match.shifted_count;\n if (S === 0 || U === 0) {\n guesses *= 2;\n } else {\n shifted_variations = 0;\n for (i = u = 1, ref3 = Math.min(S, U); 1 <= ref3 ? u <= ref3 : u >= ref3; i = 1 <= ref3 ? ++u : --u) {\n shifted_variations += this.nCk(S + U, i);\n }\n guesses *= shifted_variations;\n }\n }\n return guesses;\n },\n dictionary_guesses: function(match) {\n var reversed_variations;\n match.base_guesses = match.rank;\n match.uppercase_variations = this.uppercase_variations(match);\n match.l33t_variations = this.l33t_variations(match);\n reversed_variations = match.reversed && 2 || 1;\n return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n },\n START_UPPER: /^[A-Z][^A-Z]+$/,\n END_UPPER: /^[^A-Z]+[A-Z]$/,\n ALL_UPPER: /^[^a-z]+$/,\n ALL_LOWER: /^[^A-Z]+$/,\n uppercase_variations: function(match) {\n var L, U, chr, i, len, o, q, ref, ref1, regex, variations, word;\n word = match.token;\n if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n return 1;\n }\n ref = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n for (o = 0, len = ref.length; o < len; o++) {\n regex = ref[o];\n if (word.match(regex)) {\n return 2;\n }\n }\n U = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[A-Z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n L = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[a-z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n variations = 0;\n for (i = q = 1, ref1 = Math.min(U, L); 1 <= ref1 ? q <= ref1 : q >= ref1; i = 1 <= ref1 ? ++q : --q) {\n variations += this.nCk(U + L, i);\n }\n return variations;\n },\n l33t_variations: function(match) {\n var S, U, chr, chrs, i, o, p, possibilities, ref, ref1, subbed, unsubbed, variations;\n if (!match.l33t) {\n return 1;\n }\n variations = 1;\n ref = match.sub;\n for (subbed in ref) {\n unsubbed = ref[subbed];\n chrs = match.token.toLowerCase().split('');\n S = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === subbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n U = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === unsubbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n if (S === 0 || U === 0) {\n variations *= 2;\n } else {\n p = Math.min(U, S);\n possibilities = 0;\n for (i = o = 1, ref1 = p; 1 <= ref1 ? o <= ref1 : o >= ref1; i = 1 <= ref1 ? ++o : --o) {\n possibilities += this.nCk(U + S, i);\n }\n variations *= possibilities;\n }\n }\n return variations;\n }\n};\n\nmodule.exports = scoring;\n\n//# sourceMappingURL=scoring.js.map\n","// Generated by CoffeeScript 1.10.0\nvar time_estimates;\n\ntime_estimates = {\n estimate_attack_times: function(guesses) {\n var crack_times_display, crack_times_seconds, scenario, seconds;\n crack_times_seconds = {\n online_throttling_100_per_hour: guesses / (100 / 3600),\n online_no_throttling_10_per_second: guesses / 10,\n offline_slow_hashing_1e4_per_second: guesses / 1e4,\n offline_fast_hashing_1e10_per_second: guesses / 1e10\n };\n crack_times_display = {};\n for (scenario in crack_times_seconds) {\n seconds = crack_times_seconds[scenario];\n crack_times_display[scenario] = this.display_time(seconds);\n }\n return {\n crack_times_seconds: crack_times_seconds,\n crack_times_display: crack_times_display,\n score: this.guesses_to_score(guesses)\n };\n },\n guesses_to_score: function(guesses) {\n var DELTA;\n DELTA = 5;\n if (guesses < 1e3 + DELTA) {\n return 0;\n } else if (guesses < 1e6 + DELTA) {\n return 1;\n } else if (guesses < 1e8 + DELTA) {\n return 2;\n } else if (guesses < 1e10 + DELTA) {\n return 3;\n } else {\n return 4;\n }\n },\n display_time: function(seconds) {\n var base, century, day, display_num, display_str, hour, minute, month, ref, year;\n minute = 60;\n hour = minute * 60;\n day = hour * 24;\n month = day * 31;\n year = month * 12;\n century = year * 100;\n ref = seconds < 1 ? [null, 'less than a second'] : seconds < minute ? (base = Math.round(seconds), [base, base + \" second\"]) : seconds < hour ? (base = Math.round(seconds / minute), [base, base + \" minute\"]) : seconds < day ? (base = Math.round(seconds / hour), [base, base + \" hour\"]) : seconds < month ? (base = Math.round(seconds / day), [base, base + \" day\"]) : seconds < year ? (base = Math.round(seconds / month), [base, base + \" month\"]) : seconds < century ? (base = Math.round(seconds / year), [base, base + \" year\"]) : [null, 'centuries'], display_num = ref[0], display_str = ref[1];\n if ((display_num != null) && display_num !== 1) {\n display_str += 's';\n }\n return display_str;\n }\n};\n\nmodule.exports = time_estimates;\n\n//# sourceMappingURL=time_estimates.js.map\n"],"names":["Symbol","root","module","exports","__webpack_require__","getRawTag","objectToString","symToStringTag","toStringTag","undefined","value","Object","trimmedEndIndex","reTrimStart","string","slice","replace","freeGlobal","g","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","isOwn","call","tag","unmasked","e","result","freeSelf","self","Function","reWhitespace","index","length","test","charAt","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timeSinceLastInvoke","timerExpired","timeWaiting","trailingEdge","setTimeout","debounced","isInvoking","arguments","clearTimeout","cancel","flush","type","baseGetTag","isObjectLike","Date","baseTrim","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","adjacency_graphs","qwerty","dvorak","keypad","mac_keypad","feedback","scoring","default_feedback","warning","suggestions","get_feedback","score","sequence","extra_feedback","i","len","longest_match","match","ref","token","get_match_feedback","unshift","is_sole_match","pattern","get_dictionary_match_feedback","graph","toUpperCase","turns","base_token","regex_name","word","dictionary_name","l33t","reversed","guesses_log10","rank","START_UPPER","push","ALL_UPPER","toLowerCase","matching","time_estimates","zxcvbn","getTime","password","user_inputs","arg","attack_times","matches","prop","sanitized_inputs","start","val","set_user_input_dictionary","omnimatch","most_guessable_match_sequence","calc_time","estimate_attack_times","guesses","DATE_SPLITS","GRAPHS","L33T_TABLE","RANKED_DICTIONARIES","REGEXEN","build_ranked_dict","frequency_lists","lst","name","ordered_list","len1","o","a","b","c","l","s","t","x","z","recent_year","empty","obj","k","results","extend","lst2","translate","chr_map","chr","split","join","mod","n","m","sorted","sort","m1","m2","j","matcher","matchers","dictionary_match","reverse_dictionary_match","l33t_match","spatial_match","repeat_match","sequence_match","regex_match","date_match","_ranked_dictionaries","p","password_lower","ranked_dict","ref1","matched_word","reversed_password","reverse","relevant_l33t_subtable","table","letter","password_chars","relevant_subs","sub","subs","subtable","len2","enumerate_l33t_subs","dedup","helper","keys","l33t_chr","sub_dict","sub_dicts","assoc","deduped","label","members","v","dup_l33t_index","first_key","next_subs","q","rest_keys","sub_alternative","sub_extension","concat","splice","_l33t_table","match_sub","subbed_chr","subbed_password","indexOf","sub_display","filter","_graphs","graph_name","spatial_match_helper","SHIFTED_RX","adj","adjacents","cur_char","cur_direction","found","found_direction","last_direction","prev_char","shifted_count","exec","base_analysis","base_guesses","base_matches","greedy","greedy_match","lastIndex","lazy","lazy_anchored","lazy_match","repeat_count","MAX_DELTA","delta","last_delta","update","_this","sequence_name","sequence_space","abs","ascending","charCodeAt","_regexen","regex","rx_match","best_candidate","candidate","candidates","distance","dmy","maybe_date_no_separator","maybe_date_with_separator","metric","min_distance","r","ref2","ref3","ref4","ref5","ref6","ref7","ref8","ref9","map_ints_to_dmy","year","REFERENCE_YEAR","separator","month","day","is_submatch","len3","other_match","u","ints","dm","int","over_12","over_31","possible_year_splits","rest","under_1","y","DATE_MIN_YEAR","map_ints_to_dm","two_to_four_digit_year","d","calc_average_degree","average","key","neighbors","nCk","log10","log","log2","factorial","f","_exclude_additive","bruteforce_update","make_bruteforce_match","matches_by_j","optimal","optimal_l","optimal_match_sequence","unwind","w","_","pi","competing_g","competing_l","estimate_guesses","pow","last_m","results1","candidate_g","candidate_l","Infinity","min_guesses","estimation_functions","bruteforce","bruteforce_guesses","dictionary","dictionary_guesses","spatial","spatial_guesses","repeat","repeat_guesses","sequence_guesses","regex_guesses","date","date_guesses","Number","POSITIVE_INFINITY","MAX_VALUE","MIN_SUBMATCH_GUESSES_SINGLE_CHAR","MIN_SUBMATCH_GUESSES_MULTI_CHAR","first_chr","MIN_YEAR_SPACE","getFullYear","char_class_bases","alpha_lower","alpha_upper","alpha","alphanumeric","digits","symbols","year_space","KEYBOARD_AVERAGE_DEGREE","KEYPAD_AVERAGE_DEGREE","KEYBOARD_STARTING_POSITIONS","KEYPAD_STARTING_POSITIONS","L","S","U","possible_turns","shifted_variations","reversed_variations","uppercase_variations","l33t_variations","END_UPPER","ALL_LOWER","variations","chrs","possibilities","subbed","unsubbed","crack_times_display","crack_times_seconds","scenario","seconds","online_throttling_100_per_hour","online_no_throttling_10_per_second","offline_slow_hashing_1e4_per_second","offline_fast_hashing_1e10_per_second","display_time","guesses_to_score","base","century","display_num","display_str","round","minute","hour"],"sourceRoot":""}