diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index 5f04a02..572d488 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,145 +1,158 @@ -manifest.json,1587708725191,4e1418768bff8c85dba64c236c868a65edbc4b1891e9ae03fac073bb6e2ce6e2 -index.html,1587708725191,f90fe2fb20311b6481506ecc107762c42a7756aca37554440e394523e8386b88 -robots.txt,1587708725196,21f6197d2193a02223a81d0a86ae9acf83d8f1b53591ace9334892287487c207 -service-worker.js,1587708725196,c404cab374163f925fd5463881f56830ce8407ad15c858d9049cd2e5865a60f3 -css/app.930c3b53.css,1587708725143,5130894acc6daf581ff1712f2f02243850c84ba65474bd31b9680738eac4aebf -precache-manifest.baa1eabfbfc7963e08f1684df359e536.js,1587708725196,8fadc482b14c246048bf965fe57280119903e2529771a58dfe6bf6d084a56bed -css/chunk-0020f4bd.e2e7e85b.css,1587708725143,80555e490f78585bc50e12817766f4bce6f67f81846f4c887198468196ad32f8 -css/chunk-05517db2.975ad97f.css,1587708725147,aecb257f816144c63ac8d02771cc7537278faf1a6653daf48df558480ecd2433 -css/chunk-01b5a656.e705afd5.css,1587708725143,6b241391c8d9bbd400b79cd6899167c5e429f66c26ad8f01b7f38eae005f6afb -css/chunk-0dcef6c0.2218a4b1.css,1587708725147,ad1bfc34e58f73e65d45b7c514e99f0ccdf4904a88e9fd10499fe9bff5fdb01e -css/chunk-0bf51304.9f5c9992.css,1587708725146,83acbda24c08c1b99e007fb895257061f18129956bb6935e2150bf094ac356ad -css/chunk-16aed84c.50fb5bbc.css,1587708725147,75ddd0d03f3b748757df81f4f9a91487d98f3cf9e6dba0aaab4c7231498ad33d -css/chunk-148d4a92.84ce830e.css,1587708725147,d612a68ba3afa015ba2a0b892b051002340bbbd6a6f3ba1deebea523be6d50e5 -css/chunk-18bf49ac.d552d3c8.css,1587708725148,92ce1b24ad3b5a0d597070f55fe00eaab0ad59597307b0fbfbc2387d8f094b9a -css/chunk-1efb6023.e3e01292.css,1587708725150,6b0eec956aa3ca081aac0eab232b2871d64d1bbbd359f0aa23c9b11baa5f226d -css/chunk-20bae7f8.bedc865e.css,1587708725150,bdde1b2f4bc5bf9bf131eb50c2f7f93f1c468b1723fd1cffb70d1b87353da914 -css/chunk-24c5ec52.d71cc5d5.css,1587708725150,163ce814b851e08ccbf7babee20083fb4acee0f2e76058e521ee1d46051f97aa -css/chunk-25df79fa.bd166e72.css,1587708725150,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b -css/chunk-271b78fe.2218a4b1.css,1587708725151,ad1bfc34e58f73e65d45b7c514e99f0ccdf4904a88e9fd10499fe9bff5fdb01e -css/chunk-1a58f2ee.afa64be9.css,1587708725148,ca503be61d5240c9f3e7731ad3ddd32dbe43022a88019dd43a567466379315bb -css/chunk-29c9a0fa.f5cffcf4.css,1587708725151,6f7a18c0db519680cd74e400cc6382c3812e1abb74fbc6b0cacbe374adc3152d -css/chunk-319fbc92.0a53b1ef.css,1587708725153,05cd1e77fd4965526c708e20398147598322031b3d37a28307f18e44b9e128e4 -favicon.ico,1587708725196,67973a1c40851e46ce946aecd5ef3b58c6e03bade87774482c8d92cb9091993e -css/chunk-2f63cc10.5b2847a8.css,1587708725153,8a9c7c719bdf1bd3701ca03a8dc72be69783415e37ae4988713c9a8801942702 -css/chunk-3801de82.e2e7e85b.css,1587708725154,80555e490f78585bc50e12817766f4bce6f67f81846f4c887198468196ad32f8 -css/chunk-423a4ab9.aea8fc7f.css,1587708725154,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b -css/chunk-3c625cec.8dbfab61.css,1587708725154,4968ac0c8ae0df305d39556b45d2be663c2e048579279d74aa7abd85e40ac854 -css/chunk-57c9cd66.8b8f4869.css,1587708725157,177876cf40b4f57c46d846b34fde0d01ceecf4a9daf3bcddf370a893bcda68a8 -css/chunk-33e51dd4.cb5f54e4.css,1587708725153,a4be74a56f1b1e1aeb15b2fe98cd0eb6c8aa13347a62067a8e0fa5a53ff9a1da -css/chunk-51f0bcc7.bbe1fbfb.css,1587708725156,784ceb5891f8037e821b97dd13c66466f9cd026ee735b3aa723a410c3b6acbac -css/chunk-5aa85b8e.bd166e72.css,1587708725157,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b -css/chunk-5bdfb66e.aea8fc7f.css,1587708725158,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b -css/chunk-6350c24f.e881d556.css,1587708725160,b2d23a1b2b6f19015e214b63cc1c675c1a61507c6ac60748794eea523dec1b21 -css/chunk-5242fc22.0c19f835.css,1587708725156,10c67f94584fe17627e27cdaa22bb580073c3fe41b613ac5a14d30a276e0c39d -css/chunk-6314b46a.cf9866aa.css,1587708725159,e710836be243ba40bae7cb035e49c4d9c057518989197d023b6cf625c22df62b -css/chunk-5e5d8658.e4fb1c3c.css,1587708725159,bccee1610fa2fc53e0ef42dff0ed7ff4cef11af83c892c8305400de949e97d5b -css/chunk-6d4774c2.f613719f.css,1587708725161,1cb0c02d897d175115931fc4038ee9041abe4010c43fcb121eb42f74381be680 -css/chunk-727ad614.e3e01292.css,1587708725162,6b0eec956aa3ca081aac0eab232b2871d64d1bbbd359f0aa23c9b11baa5f226d -css/chunk-a5dd2522.975ad97f.css,1587708725162,aecb257f816144c63ac8d02771cc7537278faf1a6653daf48df558480ecd2433 -css/chunk-99a99e16.e705afd5.css,1587708725162,6b241391c8d9bbd400b79cd6899167c5e429f66c26ad8f01b7f38eae005f6afb -css/chunk-aa548be0.97c3096f.css,1587708725162,73190afc623cf05c1477ed55bff23a0944e43c00a7866b3cec4f105f2c51770f -css/chunk-ad53c150.4b85e88f.css,1587708725162,dafc9497dc73b1dbc5a82c5f926bd42d1e949b3b2e2a48e55856161624064b25 -css/chunk-d4029fb2.bedc865e.css,1587708725162,bdde1b2f4bc5bf9bf131eb50c2f7f93f1c468b1723fd1cffb70d1b87353da914 -css/chunk-b4ed32b0.220d52a4.css,1587708725162,4968ac0c8ae0df305d39556b45d2be663c2e048579279d74aa7abd85e40ac854 -css/chunk-e0ccd912.97c3096f.css,1587708725162,73190afc623cf05c1477ed55bff23a0944e43c00a7866b3cec4f105f2c51770f -css/chunk-e194464a.e4829005.css,1587708725181,b3573554aefbea83b40a5f54000d9caf117541344e17b1c57e4106572ff01041 -css/chunk-d224f764.c22350bf.css,1587708725162,88fa8e38386f698751658668d658c6dddcc6d78656f3ca79112a0d9494f340f9 -css/config.2bc9bd9b.css,1587708725181,cf11cd431ed2d139cbf282492aaee0c1c83c71ad06c984bea09b6639257da24a -css/event-details.22301412.css,1587708725181,8edb2ebd7ecbb9fa33d42e4e37628ac3df83c953f16c5d077251effba0019259 -css/events.46189ee5.css,1587708725186,ad1bfc34e58f73e65d45b7c514e99f0ccdf4904a88e9fd10499fe9bff5fdb01e -css/home.e9a01353.css,1587708725186,5425640949439a1497c1703fa5d0858b20f3e9b5f606085ac01bd9e8d69fb3dc -css/login.5a3a141d.css,1587708725186,7b8e254cf7154799bca592582116383ede901f3b2bda693d9c48dde5cbc42ac6 -css/partners-details.a5e6fb45.css,1587708725191,2a403bb8b060616e238efe7a60fdcc131a0efa6762fc1c1ca2caaabfac5e4423 -css/notifications.aeb8a6cc.css,1587708725186,b6dbfc19e7fe7e9c49fde78edc7743a6f3539467cd60248de275bddd54dbe538 -css/speakers-details.462bed8b.css,1587708725191,3479d3f4e0716f7f1ef551887aac3aadc68afd5c92d657700f10714a67be9d26 -css/partners.52858009.css,1587708725191,7d29a9e06794898646435680d697bb11742b4121b3e8bdc091790eb139914cc5 -css/team-details.61db3f5f.css,1587708725196,19481d58af832bf450b4dc22bafdce077ebf045603d0eb2abe5477253a2a1951 -css/speakers.f7e70b57.css,1587708725191,a2afe18e3060d5450494eb670d1155b7dda8da43121c6ebc2a7897077b045cb7 -img/dataentry.4bdd9d8c.svg,1587708725143,d151dd8fc88f0104a659c36b8f89d54f0ea0dec907fafcdec20ab39909e29860 -img/DataNotFound.a6502a0b.svg,1587708725142,8f10c65a823f7a144868fc0211506d5bda0b6c8ed369f7d93de96e5b25746f97 -img/default_avatar.4652b754.jpg,1587708725143,cda39ff89a30901f2f4fce4a9dbd1022a6b6e854f380fc9be6e6e369422a8d41 -img/login.53c57684.svg,1587708725143,b1ec63be9f4a7c5de7b424daa1bacb383436f27d9b069e20229c30b929a77cef -css/team.090704ed.css,1587708725196,df256f0bc948649f0ece06d0edf6a72e930954b2784edc444cd7464bbfbe4465 -img/noimage.855e8ca0.jpg,1587708725143,46d7f16f81b70129997f851cb91420e95d4c2e018f0b2d3af5fc75cbd7f29dd1 -img/icons/android-chrome-192x192.png,1587708725196,c90d99809d9444d2713a6b2350248c304ab5e5b80236d30f7ba788e2b652e695 -img/icons/apple-touch-icon-120x120.png,1587708725196,8a96a682aede99ced153d613fc3727ee3df0c6258ee79a0c08530a6a66b0d4ad -img/icons/apple-touch-icon-152x152.png,1587708725196,9b2c9c3f6b45c4cae463955d1aa2be7c426c95b76183c2180b9054e35ee1c65d -img/icons/apple-touch-icon-180x180.png,1587708725196,9352e8d87bc440ce8e306799d1879f5c169457eff829c8e9440d1fefd838acee -img/icons/apple-touch-icon-60x60.png,1587708725196,8056b6f2ea2ca0dac8d8a5a2282b62bc2a0ee58889f80c4334ce7f9cf76292dd -img/icons/apple-touch-icon-76x76.png,1587708725196,e9cda20eec6dd2e697badfe257ca1bb817d8e95b6d29efac4cb95bbf5b89e428 -img/icons/favicon-16x16.png,1587708725196,a907fe95af11fbde97cfbaada361d77c7350c0c3c1764654a824cc75e4dcf077 -img/icons/apple-touch-icon.png,1587708725196,9352e8d87bc440ce8e306799d1879f5c169457eff829c8e9440d1fefd838acee -img/icons/favicon-32x32.png,1587708725196,b7d9cadce4544ec4009bdab85738ccd6529a672f326fbc5a1b15b9f7ab1b02a7 -img/icons/manifest.json,1587708725196,31d3c11b157f36da08257025373173aeb7a9fde5b392fe2348d88fcac6f360eb -img/icons/msapplication-icon-144x144.png,1587708725196,34e3b7a98bd2f85de8a8b40c467e51a628184b7cc3fe12442000f8e885667d39 -img/icons/mstile-150x150.png,1587708725196,d6bf904f31b2401527995d6c941f09e8109d83577a5a310fdf471be99d7334d3 -js/about.2b229a9f.js,1587708725143,53cad453c939407992c9523c2ad0fbf48bb726b3006e0a6af937ed08078af8d3 -js/app.2b58df29.js,1587708725144,af78ee8780cdc5b1c326818b1796a490da4005d98bc92ffe4bdb131b35f4d112 -js/chunk-0020f4bd.d9a37d8f.js,1587708725144,d8c79734b026d0bcf370c182f2a4bc1e84a8918dca0f67e25c5174e9823c96ef -img/icons/favicon.ico,1587708725196,67973a1c40851e46ce946aecd5ef3b58c6e03bade87774482c8d92cb9091993e -js/chunk-01b5a656.8a3352d4.js,1587708725145,de82506c80e76d336278b41da02c5c44ca9fc5b261db76706e2aa3cfefa115ff -img/home.520969e6.svg,1587708725143,b05a61b8736b8d81d7180ede9428942e67e112664ca5b85e3e6cb47e2232ebb7 -js/chunk-05517db2.ced0d1d5.js,1587708725146,db98dae4349e84dd11136e059900b196504b255a419c356060c5e47e46c5be14 -js/chunk-148d4a92.804f1205.js,1587708725147,3e1a4e6c287067064543a1273b3668a4b99ae46c1a963d10b2c95d6a28a1ecb2 -js/chunk-0dcef6c0.ad55cdba.js,1587708725147,37d8e726b521b1534927263349d844d9d8524b2dc05a90e2767295ba606f462c -js/chunk-0bf51304.e20f5667.js,1587708725147,856b4d114474d88cc1ab230de4d13b8a7d4d2143f2db57b4f9a0b459719bd55a -js/chunk-18bf49ac.77da515c.js,1587708725148,28709f20cf896ffdf8e8781518178dec4b3279cb9661fd171a0dd56ff8048c8a -js/chunk-1a58f2ee.cb8d702f.js,1587708725148,c102e2f148c08f7aad2923fda375e506cf48436cc60f730b9effee7ffcd87673 -js/chunk-1efb6023.56850cd2.js,1587708725150,3256bd37c0d3be45f1557906cbff953af51763d12de3de0b50afbbbaa05928e2 -js/chunk-20bae7f8.1621e567.js,1587708725150,45828b332abd6083f06ff17b59601e68545aaa87858b01af6a57f7edacbe91bf -js/chunk-16aed84c.f3266eef.js,1587708725147,514e0a84a14267708233d983dfb2581fabdb0008bb8324761ae4f45757d2a65f -js/chunk-25df79fa.71ca52bb.js,1587708725151,095eca47fcab2919ef3c3e135ba9cfa2bbe62a13a5aa774e0c6cf9e06e6bd99c -js/chunk-271b78fe.a966414c.js,1587708725151,a34cd4a053b0313b2ff53aae7104ea8d2a77ba8d25fc2fa4e34ad456b861421e -fonts/google-font.923a543c.woff2,1587708725142,6d36dedfe418aa5c03c6f3ad5c4a59a0948a0f94ed3c1e535043114fb3c8a098 -img/eventbanner.bc14a693.jpg,1587708725143,4888de9495331e0d956efde779c29e9dbec3ee45b4e8fc6f66fb0653d1045d23 -img/icons/android-chrome-512x512.png,1587708725196,b74dcbb290e76d77b775c688b478b062bc6c4c28e6f33e60c6f47536567847a5 -js/chunk-24c5ec52.c8ae6794.js,1587708725150,3a03fb73a59e22f4f07c45f240dcad495dc2c304bd4ab75dae5dd463a16eb60d -js/chunk-2aceec70.8d56e1d1.js,1587708725151,0cf8f6ceec71a296228ca009ba38668356cb1add3c45a2b0ee468ad6c754fe59 -js/chunk-2d0e13fe.ed3e8993.js,1587708725151,771dba89b661ae4c4f8478106b2bbb882f5563a404e60bab3dc3988969a60624 -js/chunk-2d0f0263.41ff4ac9.js,1587708725152,1f2df9813f18fa8dd5ef3f975cc223d7b95acf9feb40d377d6d0852d0cb02223 -js/chunk-2d0f0dd4.ba7f93d3.js,1587708725153,4948b82576a4c78994e4f9843517679cec0bd0ac4595b82e1eb8dba4b93801be -js/chunk-2ef4673e.db7f89fc.js,1587708725153,fbbbf9b9802f9878e4f2098370701e655129d62b1d7e7d3231da3df594364c75 -js/chunk-2f2345f8.b0474fdb.js,1587708725153,ca6622e0977282b37829eb364e47d90b96f67f0940e7e4ee997ff8d495d52f30 -js/chunk-2f63cc10.6cf2f046.js,1587708725153,ccdd90dacece826d7c32d13d2bf31f707e092a9267ba6fd4048d515167d5d040 -css/chunk-vendors.7c1dcc85.css,1587708725181,c7f82c49301541692597b0650c73f850f3876a99375f00f3f26ee8bf0c49cfd4 -js/chunk-29c9a0fa.3522e700.js,1587708725151,6f0436c2bebefecdce8439d6f8a3f9f0d3c89dccda578cab0222a3d45b19bc58 -js/chunk-3801de82.be032954.js,1587708725154,740ff85c0c308b14f4ac8ea9303e4d0520a1fc951c7b07ed4694e397d47c66c4 -js/chunk-423a4ab9.99b44647.js,1587708725155,c469561b3cab95dcf09f1fd93a32848b54e07d1d12a96f3cb12053e59e6d0933 -js/chunk-5242fc22.5f30cb77.js,1587708725157,32fca6591b9d3e7760ae9323d89c43e1788cd94a266203636f3f26a21e85ed51 -js/chunk-5bdfb66e.17d0f363.js,1587708725158,c732cbe1ada3023469888019bb367c6925f08b389962ce8096dca48899ee76ff -js/chunk-6314b46a.e0463a0d.js,1587708725159,6f49304d0ee0ba24af5a22c3aa93b260c06099792bc79c1496629ac6fa076a25 -js/chunk-6350c24f.43349981.js,1587708725161,a02c7134653ad30904ace4c92cdeb92062e37cd681db98d2ee196933e0481b20 -js/chunk-95526cc4.68a8994e.js,1587708725161,5922c4ab8610207b02fc77243477652014babbe8636a7ca9b01fe31a8fcdbf64 -js/chunk-727ad614.27ef41c7.js,1587708725161,ca8638d9bdf5c4ee4d07fba6f17a374e27caf453aa8a362c307145c2be5ea849 -js/chunk-5aa85b8e.4beaf97f.js,1587708725157,c966c913dbba5103652d5aae8e55dc3077780f9ee4dc49c7a191a49296bf1637 -js/chunk-99a99e16.5e9257e9.js,1587708725162,2b9c50fa267ccde719834f3dbbafa0aa8a58f34e11a0c464fa2773264624aa82 -js/chunk-a5dd2522.be3046b3.js,1587708725162,8bf760be93bf88841f10efd8cbfaf1d7f80c2df6c2966048c0af7e83053093dd -js/chunk-ad53c150.d5e09b98.js,1587708725162,c8ddb842a130d823fd937666e5965c8e26192e6614bba87fde57f821f46193fd -js/chunk-aa548be0.b22d623f.js,1587708725162,531086a11eeabd1feb2812be80e97660c3a555a5503ade327d30d7549de094ec -js/chunk-d4029fb2.838dfdeb.js,1587708725162,9ebde942cb7093adad7859e979f85a37572b1020554938629ef6afaf377c1c90 -js/chunk-e0ccd912.69480ec6.js,1587708725166,c9dc1236389d74670b679d4689ce04ff3015c93eaf07e43776b69065bf2788ca -img/spakerhead.7edb812a.jpg,1587708725144,423065403c576b4e083f6667aae4d0cbe504dac2c58f5229cede4b9a24b5eafd -js/chunk-e194464a.42aadfed.js,1587708725181,6d53fb51f826a19e92c4b284f28ef698b2933ba6bc5648ecc183212534297158 -js/chunk-b4ed32b0.3cd3a15a.js,1587708725162,2d2e829e6071de3aa99cec3dcd4de22fbd64cdbeeefcd621266a88f014df80d6 -js/chunk-d224f764.b80420b1.js,1587708725162,7c667da769ae6b447fc6e7040b8c929792b5003a5238f1bec57246415194299b -js/home.6e1dc302.js,1587708725186,6831567ee0c21b2dce49e9eb46f79d185b784eccf59bbbd29af0e9fffdb319f3 -js/events.634c608e.js,1587708725186,db33914a7f90b056ba2d59405d5e9bb84505dee23ce15b24fa90e64f40872d5b -js/login.1e6b6096.js,1587708725186,275f7fae53ec6793c9777d57d8f894fc72fb8e9fc0a9b9acda5f3ccddc318380 -js/chunk-33e51dd4.abd33401.js,1587708725154,c78fa1e59dd81974f83f82a184f3168775f1274a089ca8b50526fd0e8031c12b -js/chunk-3c625cec.f77cd5e8.js,1587708725154,47d60154c08f4e798983a1062e38c9a65aa335fdf3e965b4f26e0a25b20135b1 -js/chunk-51f0bcc7.b64a8472.js,1587708725157,7e83585a345870415e5010adc06d65f3643c79574c3ba11e53c7a0377cc6c776 -js/chunk-57c9cd66.bbcd2092.js,1587708725157,c4953d23bb5de5813d6307e40d4f966b24fa326872210dbd2db90ca00cd4be5b -js/chunk-6d4774c2.611abbcb.js,1587708725161,d336fd175cafcce3472661508c023218171273057dc9013feabf2a6e2865f6ab -js/chunk-319fbc92.00965e13.js,1587708725153,2d22f5907adc5d2f703e74b66e8d98e0a4374002ffdccf39f92c5caab1a9591c -js/config.84086c47.js,1587708725181,432639adbb44023e678545f5f380e1752853bb5492ed31f09b52e6281364f7f2 -js/notifications.e3be49b6.js,1587708725191,176dbb90102ffca3bafb634501563bdfe07934a4867c55b41fd5e93d791ebd49 -js/partners-details.073e2c24.js,1587708725191,4fe0e611ec85149b4ad969380a46b0e854de03531f943c553dc0f75f3b98ca97 -js/speakers-details.42f1fcef.js,1587708725196,6d8f41dc3d8d5fd707b951fe3010bc043841a778051e81d5e87ea4becd023436 -js/team-details.63fcd2e1.js,1587708725196,99086e9f241f37e9071e91d3be522c9d1e0764b53c2209b2a836c954f84d8b37 -js/chunk-5e5d8658.660e35be.js,1587708725159,bb4a52ef081891353bdc0ee985502aa61d7a1c8e87b555a7dd286d7914feecc8 -js/event-details.f53c1505.js,1587708725186,abb29fede8cbba30f034a47295d5c78014de2bf54327f1c072c75ba56e1217a9 -js/partners.5f8f6755.js,1587708725191,d9babb27960e8719e1fe65d5ec45ea8c377324b2632736177109c69c9ec709c4 -js/speakers.622f4c36.js,1587708725191,d820743693d031b0bcdd0981a5f05cb480145c52b464b0a85e342690a48cdf3c -js/team.71d5871e.js,1587708725196,c4f2ee2cf290b3e1d587b0463e8302bc29f9583762ef71d8ee4f87decff14cf1 -js/chunk-vendors.465a6d02.js,1587708725181,c5754b89498112083be83595564a9db692f0c700e1d1d91051815687d3dd7240 +favicon.ico,1589214444579,67973a1c40851e46ce946aecd5ef3b58c6e03bade87774482c8d92cb9091993e +manifest.json,1589214444574,4e1418768bff8c85dba64c236c868a65edbc4b1891e9ae03fac073bb6e2ce6e2 +index.html,1589214444573,0ac0c9fa65eb71ed0f7a8b0c24fc49e770e89ec47c669e849e3b869d44959737 +robots.txt,1589214444578,21f6197d2193a02223a81d0a86ae9acf83d8f1b53591ace9334892287487c207 +service-worker.js,1589214444579,80fdb294cb426a12d17e4ad60b2ab3de87d359d088d7b5953ac2d2f1e20dce35 +precache-manifest.128ec910bd814da274d486a9a5bed961.js,1589214444579,0556c8d878d2ce432e504f4be1fb4a303608398c8140b052ae8d5191a722b00f +css/app.930c3b53.css,1589214444510,5130894acc6daf581ff1712f2f02243850c84ba65474bd31b9680738eac4aebf +css/chunk-0020f4bd.e2e7e85b.css,1589214444510,80555e490f78585bc50e12817766f4bce6f67f81846f4c887198468196ad32f8 +css/chunk-05517db2.975ad97f.css,1589214444527,aecb257f816144c63ac8d02771cc7537278faf1a6653daf48df558480ecd2433 +css/chunk-00bb9f02.dd5ccf60.css,1589214444511,71de7d01876f92e6d53d9dc528503f5684c20ee1b312eb5499e222c3acf2a78b +css/chunk-098ccfc5.bd166e72.css,1589214444527,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b +css/chunk-0dcef6c0.2218a4b1.css,1589214444527,ad1bfc34e58f73e65d45b7c514e99f0ccdf4904a88e9fd10499fe9bff5fdb01e +css/chunk-148d4a92.84ce830e.css,1589214444528,be01541f0ae55c091bfefbd617a085a8a78259f8906666e503f5f57614400dfb +css/chunk-1576dc82.e4176afc.css,1589214444528,dc2a485e3f9bfe47c2557b13dbe2a9c19bf4985fd4a846ebf34bdfbc72ccf9a7 +css/chunk-1aebb0c0.1558e882.css,1589214444528,b3573554aefbea83b40a5f54000d9caf117541344e17b1c57e4106572ff01041 +css/chunk-1efb6023.e3e01292.css,1589214444531,6b0eec956aa3ca081aac0eab232b2871d64d1bbbd359f0aa23c9b11baa5f226d +css/chunk-1a58f2ee.afa64be9.css,1589214444528,ca503be61d5240c9f3e7731ad3ddd32dbe43022a88019dd43a567466379315bb +css/chunk-20bae7f8.bedc865e.css,1589214444531,bdde1b2f4bc5bf9bf131eb50c2f7f93f1c468b1723fd1cffb70d1b87353da914 +css/chunk-271b78fe.2218a4b1.css,1589214444531,ad1bfc34e58f73e65d45b7c514e99f0ccdf4904a88e9fd10499fe9bff5fdb01e +css/chunk-36a22801.09399c64.css,1589214444535,784ceb5891f8037e821b97dd13c66466f9cd026ee735b3aa723a410c3b6acbac +css/chunk-28b6a464.cd5f3c34.css,1589214444531,75ddd0d03f3b748757df81f4f9a91487d98f3cf9e6dba0aaab4c7231498ad33d +css/chunk-3801de82.e2e7e85b.css,1589214444535,80555e490f78585bc50e12817766f4bce6f67f81846f4c887198468196ad32f8 +css/chunk-3c9e3e38.93ec0997.css,1589214444535,92ee74ec27cd651916692763951edf599cb5523c1642b45e8d00c8699da50d96 +css/chunk-3fdb2d9c.e705afd5.css,1589214444535,6b241391c8d9bbd400b79cd6899167c5e429f66c26ad8f01b7f38eae005f6afb +css/chunk-40eec342.bedc865e.css,1589214444536,bdde1b2f4bc5bf9bf131eb50c2f7f93f1c468b1723fd1cffb70d1b87353da914 +css/chunk-423a4ab9.aea8fc7f.css,1589214444536,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b +css/chunk-5242fc22.0c19f835.css,1589214444537,10c67f94584fe17627e27cdaa22bb580073c3fe41b613ac5a14d30a276e0c39d +css/chunk-5678239e.bd166e72.css,1589214444539,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b +css/chunk-5b8ac88e.edc9c452.css,1589214444540,4968ac0c8ae0df305d39556b45d2be663c2e048579279d74aa7abd85e40ac854 +css/chunk-595073e4.8b200117.css,1589214444539,aa2e6317cdf9417cad15ddc44ab0f911b5c4cbe3123cc09331303f176f1c116a +css/chunk-5bdfb66e.aea8fc7f.css,1589214444540,fc451c6d698e8325e7e75fc9866ca40fd356dd547890c1aafb03ae38f5499e2b +css/chunk-5ec76c43.8dbfab61.css,1589214444541,4968ac0c8ae0df305d39556b45d2be663c2e048579279d74aa7abd85e40ac854 +css/chunk-5fe1ac48.29ace679.css,1589214444541,88fa8e38386f698751658668d658c6dddcc6d78656f3ca79112a0d9494f340f9 +css/chunk-6216219c.8b459291.css,1589214444542,e0d5fc35f0fa4c04383847bfcf084153bc99b0c3546792658865ecdcfab1ba52 +css/chunk-6350c24f.e881d556.css,1589214444545,b2d23a1b2b6f19015e214b63cc1c675c1a61507c6ac60748794eea523dec1b21 +css/chunk-6314b46a.cf9866aa.css,1589214444543,e710836be243ba40bae7cb035e49c4d9c057518989197d023b6cf625c22df62b +css/chunk-6d4774c2.f613719f.css,1589214444545,1cb0c02d897d175115931fc4038ee9041abe4010c43fcb121eb42f74381be680 +css/chunk-727ad614.e3e01292.css,1589214444545,6b0eec956aa3ca081aac0eab232b2871d64d1bbbd359f0aa23c9b11baa5f226d +css/chunk-7b742d36.a218db9b.css,1589214444546,460b5d27f6012e538e2810e5f7c85d76e8c7601e5d0e04cb8f6ffce4155ea5a9 +css/chunk-7f3c30c6.ca6df252.css,1589214444546,ca332d1976802c19edc07bb635d1e6e8131e00f84eb9a2bef40e888a7ed1df35 +css/chunk-7f0a23ee.21dc0943.css,1589214444546,3dac68b858f3556bf7d949135d6f988b4f421346b98e3caeee8004cf004ecd8d +css/chunk-99a99e16.e705afd5.css,1589214444549,6b241391c8d9bbd400b79cd6899167c5e429f66c26ad8f01b7f38eae005f6afb +css/chunk-a5dd2522.975ad97f.css,1589214444550,aecb257f816144c63ac8d02771cc7537278faf1a6653daf48df558480ecd2433 +css/chunk-c4c22ad4.076ea886.css,1589214444550,a4942008bb1cb3bfc054ff93191408ef88370344bd4d056d87a31436091fa2dc +css/chunk-aa548be0.97c3096f.css,1589214444550,73190afc623cf05c1477ed55bff23a0944e43c00a7866b3cec4f105f2c51770f +css/chunk-d4029fb2.bedc865e.css,1589214444551,bdde1b2f4bc5bf9bf131eb50c2f7f93f1c468b1723fd1cffb70d1b87353da914 +css/chunk-e0ccd912.97c3096f.css,1589214444551,73190afc623cf05c1477ed55bff23a0944e43c00a7866b3cec4f105f2c51770f +css/chunk-e194464a.e4829005.css,1589214444551,b3573554aefbea83b40a5f54000d9caf117541344e17b1c57e4106572ff01041 +css/chunk-e2f77e02.8b8f4869.css,1589214444552,177876cf40b4f57c46d846b34fde0d01ceecf4a9daf3bcddf370a893bcda68a8 +css/chunk-f0698896.414c4cce.css,1589214444562,c6c0407fbca9c5b0532ecbddef5b622301c0761abe48edebaadb0c9d20e32e9f +css/config.0f3b1450.css,1589214444564,4615d223a7968bb67d5db59d3b373fec54ea11526e75309684f79e64d94614a8 +css/email.5c8023db.css,1589214444564,9815bf7d1a1b10f79824e806f5a7e66f255ddf3389095ee0db75b28f57121f61 +css/events.46189ee5.css,1589214444564,ad1bfc34e58f73e65d45b7c514e99f0ccdf4904a88e9fd10499fe9bff5fdb01e +css/login.859fa3f0.css,1589214444565,3af4f5db67ca13e1a98b5ddd4f71155495a2a86ea3f5f64f98d4dd7b39877ba9 +css/home.e9a01353.css,1589214444565,5425640949439a1497c1703fa5d0858b20f3e9b5f606085ac01bd9e8d69fb3dc +css/event-details.36d5f44b.css,1589214444564,ce04edfbf8b411fb2985d5070104f602b56368f4d8990e254e5b4a9536a06ba8 +css/partners-details.a5e6fb45.css,1589214444569,2a403bb8b060616e238efe7a60fdcc131a0efa6762fc1c1ca2caaabfac5e4423 +css/notifications.ab6f4330.css,1589214444567,a6f34ca83829fdb275e2eae74c4379ee64f800b8b6b387b4c7bb1b9dfaf6d4aa +css/speakers-details.2de22832.css,1589214444572,70af363206a79547a51b242dff631b14acc97d4635b24f141c766b63e1840f23 +css/roles.41127f04.css,1589214444570,2cd37db22e97790b7624d69d1272e7227b688779158ab5f12a00386405a7d598 +css/team-details.a1a6c875.css,1589214444575,5784f0b1c0e90bf7fe6c45e557721416980458e119120d7a8b285eb42acdd91d +css/partners.f07a6e52.css,1589214444569,643bf362f51cfa20f5a935c8f23df18706b0f358baf5f7e76bf420c00ed28629 +img/dataentry.4bdd9d8c.svg,1589214444511,d151dd8fc88f0104a659c36b8f89d54f0ea0dec907fafcdec20ab39909e29860 +img/DataNotFound.a6502a0b.svg,1589214444509,8f10c65a823f7a144868fc0211506d5bda0b6c8ed369f7d93de96e5b25746f97 +css/speakers.6b0c6c57.css,1589214444570,4c43cd60abd9a3130dfbc1ddc6d1006fe69b23ec693c8872bb54f83385f0ae56 +img/default_avatar.4652b754.jpg,1589214444509,cda39ff89a30901f2f4fce4a9dbd1022a6b6e854f380fc9be6e6e369422a8d41 +img/login.53c57684.svg,1589214444509,b1ec63be9f4a7c5de7b424daa1bacb383436f27d9b069e20229c30b929a77cef +img/noimage.855e8ca0.jpg,1589214444509,46d7f16f81b70129997f851cb91420e95d4c2e018f0b2d3af5fc75cbd7f29dd1 +css/team.90274d57.css,1589214444573,f418a52adda48bb2b78f1c70c3e395e98e21f07b4f3d63a4b88c7c53e29ee511 +img/icons/android-chrome-192x192.png,1589214444576,c90d99809d9444d2713a6b2350248c304ab5e5b80236d30f7ba788e2b652e695 +img/icons/apple-touch-icon-120x120.png,1589214444577,8a96a682aede99ced153d613fc3727ee3df0c6258ee79a0c08530a6a66b0d4ad +img/icons/apple-touch-icon-152x152.png,1589214444577,9b2c9c3f6b45c4cae463955d1aa2be7c426c95b76183c2180b9054e35ee1c65d +img/icons/apple-touch-icon-180x180.png,1589214444577,9352e8d87bc440ce8e306799d1879f5c169457eff829c8e9440d1fefd838acee +img/icons/apple-touch-icon-76x76.png,1589214444578,e9cda20eec6dd2e697badfe257ca1bb817d8e95b6d29efac4cb95bbf5b89e428 +img/icons/apple-touch-icon-60x60.png,1589214444577,8056b6f2ea2ca0dac8d8a5a2282b62bc2a0ee58889f80c4334ce7f9cf76292dd +img/icons/apple-touch-icon.png,1589214444578,9352e8d87bc440ce8e306799d1879f5c169457eff829c8e9440d1fefd838acee +img/icons/favicon-16x16.png,1589214444578,a907fe95af11fbde97cfbaada361d77c7350c0c3c1764654a824cc75e4dcf077 +img/icons/favicon-32x32.png,1589214444579,b7d9cadce4544ec4009bdab85738ccd6529a672f326fbc5a1b15b9f7ab1b02a7 +img/icons/manifest.json,1589214444579,31d3c11b157f36da08257025373173aeb7a9fde5b392fe2348d88fcac6f360eb +img/icons/msapplication-icon-144x144.png,1589214444579,34e3b7a98bd2f85de8a8b40c467e51a628184b7cc3fe12442000f8e885667d39 +img/icons/mstile-150x150.png,1589214444579,d6bf904f31b2401527995d6c941f09e8109d83577a5a310fdf471be99d7334d3 +js/about.c367a75c.js,1589214444509,53cad453c939407992c9523c2ad0fbf48bb726b3006e0a6af937ed08078af8d3 +js/app.79642b64.js,1589214444511,4836bdb635dfd8377100d6fdab90ecda4e35d7e910b7b0b4c3eeea3c1c34cef1 +img/home.520969e6.svg,1589214444511,b05a61b8736b8d81d7180ede9428942e67e112664ca5b85e3e6cb47e2232ebb7 +img/icons/favicon.ico,1589214444580,67973a1c40851e46ce946aecd5ef3b58c6e03bade87774482c8d92cb9091993e +js/chunk-05517db2.0f1072b5.js,1589214444527,db98dae4349e84dd11136e059900b196504b255a419c356060c5e47e46c5be14 +js/chunk-098ccfc5.a32db036.js,1589214444527,012d058460be43a9acfe3d817616e5020608a2aee36121e10f27055bad278138 +js/chunk-05b1dbd0.12bf1866.js,1589214444527,59bb394d0157db248196477792b62d6d74f32c4bebd18e96e40d8dd6f7de8633 +js/chunk-0020f4bd.f86cb285.js,1589214444511,ed5ef3848dcc3f44fbb889bb63d47895d2b5f6d34426cd3638fac3dde41b0f66 +js/chunk-148d4a92.804f1205.js,1589214444528,3e1a4e6c287067064543a1273b3668a4b99ae46c1a963d10b2c95d6a28a1ecb2 +js/chunk-0dcef6c0.6969df08.js,1589214444528,604a3dd98384a3cc3fac4efa45ca3ee0dfd7cc172fe0c4d5b5882f29f7efd97a +js/chunk-1aebb0c0.d1a5c523.js,1589214444531,6a451b1b9d0a3cae5ca0f6ddb6aeb9fcd98bbbb763e37f294656e32270f86cbc +js/chunk-1a58f2ee.cb8d702f.js,1589214444529,c102e2f148c08f7aad2923fda375e506cf48436cc60f730b9effee7ffcd87673 +js/chunk-1576dc82.0845b11e.js,1589214444529,6f52ce113f1672ddb924c7192a82b867c7996966262d51cbaef593b3b29a1a4d +fonts/google-font.923a543c.woff2,1589214444508,6d36dedfe418aa5c03c6f3ad5c4a59a0948a0f94ed3c1e535043114fb3c8a098 +img/eventbanner.bc14a693.jpg,1589214444509,4888de9495331e0d956efde779c29e9dbec3ee45b4e8fc6f66fb0653d1045d23 +img/icons/android-chrome-512x512.png,1589214444579,b74dcbb290e76d77b775c688b478b062bc6c4c28e6f33e60c6f47536567847a5 +js/chunk-00bb9f02.7296dc32.js,1589214444527,7688c2f27b1313fbc2fff76b61c01200139567f7adcd52d760681ada7935d736 +js/chunk-1efb6023.7138a3e5.js,1589214444531,3256bd37c0d3be45f1557906cbff953af51763d12de3de0b50afbbbaa05928e2 +js/chunk-20bae7f8.ff4607c1.js,1589214444531,45828b332abd6083f06ff17b59601e68545aaa87858b01af6a57f7edacbe91bf +js/chunk-271b78fe.df0a5d6b.js,1589214444531,4051d07909bfd4c22ce219ab218ed0fab5fb5585998e32b4e4d0fa14603804af +js/chunk-2aceec70.98312273.js,1589214444531,0cf8f6ceec71a296228ca009ba38668356cb1add3c45a2b0ee468ad6c754fe59 +js/chunk-2d0e13fe.53d67c82.js,1589214444532,771dba89b661ae4c4f8478106b2bbb882f5563a404e60bab3dc3988969a60624 +js/chunk-2d0f0263.59583098.js,1589214444532,1f2df9813f18fa8dd5ef3f975cc223d7b95acf9feb40d377d6d0852d0cb02223 +js/chunk-28b6a464.87919166.js,1589214444531,d65a55ff13010eb31c4c8cb3b35dff71da15b47e73178a029affa693a1dbc46d +js/chunk-2d216d59.07dfa9fa.js,1589214444532,9578bd78709cecaed3bd79c4bffe2c597236188fb1e35d03ebc2fbd6852262f0 +js/chunk-2d0f0dd4.828f96db.js,1589214444532,4948b82576a4c78994e4f9843517679cec0bd0ac4595b82e1eb8dba4b93801be +js/chunk-2ef4673e.0fa9e90a.js,1589214444533,f1c2e9fb843fef6e90d0919eb394ea3ab96fabda0d3cc6b24bc9e7d318809269 +js/chunk-2f2345f8.287d0e49.js,1589214444535,78aba1954414bd5a97b1c6394c92782f08d7ceaba4c906a4d603652abc17ca5e +js/chunk-36a22801.4ee6ab0d.js,1589214444535,4a9e06eafea336b27f08a799c7dbe8a93c107bc2c96fce8721225d40c319ed60 +js/chunk-3801de82.6223b038.js,1589214444535,740ff85c0c308b14f4ac8ea9303e4d0520a1fc951c7b07ed4694e397d47c66c4 +js/chunk-3c9e3e38.330e5d65.js,1589214444535,c53594bcb4338b2aede6c3f6c1449e91c6acb928391513071b8c293e5e1ef8ec +js/chunk-3fdb2d9c.13739791.js,1589214444536,dc155b490a9890db4647fbdbf25bfd1fec68134a6338d754cf2ed01e04892bd4 +js/chunk-40eec342.37ba68de.js,1589214444536,9c0bb06031535e26e767df9938819432cf8bd7173443a5e25984c1563e78289b +js/chunk-423a4ab9.8b7a0634.js,1589214444536,c469561b3cab95dcf09f1fd93a32848b54e07d1d12a96f3cb12053e59e6d0933 +js/chunk-5678239e.6c56c060.js,1589214444540,475598cbf0504879a0955b62fcf4b2c03abe73f4fe748c6c44cfd90b64a8dd7b +js/chunk-5242fc22.56e0a122.js,1589214444537,32fca6591b9d3e7760ae9323d89c43e1788cd94a266203636f3f26a21e85ed51 +js/chunk-5b8ac88e.cc4284de.js,1589214444540,6fe284d95c9bda2388d5de4af10fe493e87e6527d4f8ddf3729dd437d59c7918 +js/chunk-5bdfb66e.1d761f39.js,1589214444541,c732cbe1ada3023469888019bb367c6925f08b389962ce8096dca48899ee76ff +img/spakerhead.7edb812a.jpg,1589214444511,423065403c576b4e083f6667aae4d0cbe504dac2c58f5229cede4b9a24b5eafd +js/chunk-5ec76c43.b88ba88b.js,1589214444541,e3c2e4aef69bb8f277164f37eb2127837620f5fc0f37ba50baccaf19f8eda96e +js/chunk-6216219c.6a7fe29f.js,1589214444542,caa76975fe350a4c2e68dca66201874ae7c066f3935f18fe3015003525f82277 +js/chunk-6314b46a.2d58f6a9.js,1589214444545,6f49304d0ee0ba24af5a22c3aa93b260c06099792bc79c1496629ac6fa076a25 +js/chunk-6350c24f.440c0d9b.js,1589214444545,a02c7134653ad30904ace4c92cdeb92062e37cd681db98d2ee196933e0481b20 +js/chunk-7f3c30c6.e5f94d66.js,1589214444546,c1ff9be82caec3b347da36f65e4e751789c078454792e0ee5ce2efa209dea771 +js/chunk-95526cc4.0317f9e7.js,1589214444549,5922c4ab8610207b02fc77243477652014babbe8636a7ca9b01fe31a8fcdbf64 +js/chunk-c4c22ad4.9f00a955.js,1589214444551,2bf221a0067533d4ac7cb1dafdcfb93214e326d11b0693532535d1f8a4b74e00 +js/chunk-a5dd2522.df115ebc.js,1589214444550,3730405b7d039b6ddc16e005b47352ef1664209fb3c0518c2171174ca5cf544a +js/chunk-e0ccd912.2d903184.js,1589214444551,c9dc1236389d74670b679d4689ce04ff3015c93eaf07e43776b69065bf2788ca +js/chunk-e194464a.13c10c70.js,1589214444552,6d53fb51f826a19e92c4b284f28ef698b2933ba6bc5648ecc183212534297158 +js/chunk-ef9e55b8.f2ea1c7a.js,1589214444555,3ead1db6ea17c7ab24b3c046336138e68b5d7c494d2e2d0d633747c750565b04 +js/chunk-e2f77e02.578c0eff.js,1589214444552,9bfdeeea7d485a1527693c0e508cb8eef22b181a9363f859d4c7c62f9895be40 +js/chunk-5fe1ac48.244755be.js,1589214444541,6f3d585dfb29ad5f247bef6de6c7d1faf0f0630b97937345bb4b5a019e1375a0 +js/chunk-6d4774c2.0950cec0.js,1589214444546,d336fd175cafcce3472661508c023218171273057dc9013feabf2a6e2865f6ab +js/chunk-727ad614.a03233a0.js,1589214444545,ca8638d9bdf5c4ee4d07fba6f17a374e27caf453aa8a362c307145c2be5ea849 +js/chunk-99a99e16.d798b9de.js,1589214444551,2b9c50fa267ccde719834f3dbbafa0aa8a58f34e11a0c464fa2773264624aa82 +js/chunk-7b742d36.d6fef8f2.js,1589214444546,0255760dda515f37512f4c72dfda0f4e8913870ae3502d9c4ace4229418625ac +js/chunk-aa548be0.e0a11b16.js,1589214444551,531086a11eeabd1feb2812be80e97660c3a555a5503ade327d30d7549de094ec +js/chunk-7f0a23ee.06a0bd69.js,1589214444546,07c12d334e2825388a9a155ee0b7717dfb2af83e5657bcbfca280129a5219002 +js/chunk-d4029fb2.c18e5a59.js,1589214444551,9ebde942cb7093adad7859e979f85a37572b1020554938629ef6afaf377c1c90 +js/events.808f1ada.js,1589214444564,086443170d90106b7f1fe3812f4b7d42f13038a9a5d4632c03e3814b74fc5493 +js/chunk-595073e4.431712bd.js,1589214444540,8e1165d4dc3eb7161b7e2487a70db3ff9a7d388de8f6c47617f41896d91d7839 +js/chunk-f0698896.4a654579.js,1589214444562,1783ad87ffde1493abbfa1577faffa20600feb6921f4ac77ebc7bcf7da2cdbbc +js/email.4fa22d24.js,1589214444564,b2601dda80f504ffd96310640a93551ba38d6b8eb0e624772cb2292e02da16d6 +js/event-details.c22de66f.js,1589214444564,ce509c455425d49c8f0ca17bf93be72e71ad26a2f31bc9149ffff0c97d0a91e4 +css/chunk-vendors.97a4252a.css,1589214444561,c7f82c49301541692597b0650c73f850f3876a99375f00f3f26ee8bf0c49cfd4 +js/home.0d4f9623.js,1589214444565,27fff9e4f1bdf5d90db7d606df872879e8635f9700c37f5cdc51c05d91059956 +js/login.432f86f4.js,1589214444567,ffa6ea919f864fd78baac41e0e1a2013f9a53f7e09417423e4b48c28afedaa7f +js/partners-details.0fae24cc.js,1589214444569,55bd86219ff94e20c5eecbe43322cfcf54531c874eb44f4d42d2efff363bd695 +js/speakers-details.28f0d20f.js,1589214444572,42362bc463ee73b59851a8b61e4592c5e4b05cc2bcc89a4b4faa530c3ef8db27 +js/config.bb0e350a.js,1589214444563,9fd9d11f2cad657536c2b8f03f5fe3653ad165b5ec07de1d10253607911b8354 +js/team-details.b2bd93fc.js,1589214444576,07c992e1db0740edebc892e503944d8273238990ec1b70c81b0d39586946497f +js/roles.8f083304.js,1589214444570,8032b6fe7955c33b97cb585aa4950fd539d8637182750b3951af1f1b4da0c5df +js/partners.1d4e7a82.js,1589214444569,53870c7b593a2bac3318be21a7c7e381f3950700ccbc01fbbe438a157978d906 +js/notifications.764cce7c.js,1589214444569,6109b7b2ac7f40e02781debd537c1d4047b73ab14d919f92e78db1df0ae59357 +js/team.36ea6e7f.js,1589214444574,1b5934a14ba95c8ac8992bebbb7e2907b41bfff17bab97dca87381ebdfd7ad0f +js/speakers.ee248b6f.js,1589214444572,e6fded9e479e0fe648e7f119876f3ccf81411ee721e03c19904d54338907b69f +js/chunk-vendors.bcecf4de.js,1589214444565,d5a022df53eddb7ead7337c2e814cd8b5612d4433e3867e23f11fb828b40276f diff --git a/README.md b/README.md index 103b992..2e6ca82 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ The template is created by [GDG Jalandhar](https://meetup.com/GDG-Jalandhar/) te | **SEO optimized** | index all content and get to the top in search results | | **Easy in management** | Store all the data in Cloud Firestore | | **Trigger Push Notification** | Trigger Push Notification to Aura Main | +| **User Management** | Role based Authentication for the Team | | **Usability** | Any Tech Communities can use | @@ -42,11 +43,16 @@ The template is created by [GDG Jalandhar](https://meetup.com/GDG-Jalandhar/) te service cloud.firestore { match /databases/{database}/documents { match /apiEnd/{apiEndpoint}{ - allow read, write : if true; + allow read, create : if true; + allow delete : if request.auth.uid != null; + allow update : if request.auth.uid != null; + allow list: if request.auth.uid != null; } match /{document=**} { - allow read : if true; - allow write : if request.auth.uid != null; + allow read : if true; + allow delete : if request.auth.uid != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.userType == "Super Admin"; + allow create : if request.auth.uid != null; + allow update : if request.auth.uid != null; } } } @@ -69,6 +75,12 @@ The template is created by [GDG Jalandhar](https://meetup.com/GDG-Jalandhar/) te 1. Click on Authentication in the left navigation. 1. Click on Sign-in method and enable Email/Password - Create user with Email and Password +1. For Cloud Functions + - `npm install` for installing dependencies + - Goto src/functions and then in the terminal run this command + ```js + firebase functions:config:set someservice.email="yourmail@gmail.com" someservice.password="yourpassword" + ``` 1. Run locally `npm run serve` 1. When you are ready to build for production, use the following command - @@ -123,6 +135,8 @@ The template is created by [GDG Jalandhar](https://meetup.com/GDG-Jalandhar/) te ``` 1. In your terminal at the root directory of the project, build and deploy using the following command - `firebase deploy` +1. [Google LessSecure App](https://myaccount.google.com/lesssecureapps) open this link and enable Less secure app access +Also Allow access to your Google account from this [url](https://accounts.google.com/b/0/DisplayUnlockCaptcha) 1. If the project is successfully deployed, you should be able to visit your domain as found, and see the Aura Admin Dashboard. In future, we’ll refer to this website as your Aura Admin Dashboard. diff --git a/firebase.json b/firebase.json index 3fc234d..5a182fe 100644 --- a/firebase.json +++ b/firebase.json @@ -1,15 +1,13 @@ { "hosting": { - "site":"gdgnadmin", + "site": "gdgnadmin", "public": "dist", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ], - "rewrites": [ { + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { "source": "**", "destination": "/index.html" - } ] + } + ] } } diff --git a/functions/.gitignore b/functions/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/functions/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/functions/index.js b/functions/index.js new file mode 100644 index 0000000..f079500 --- /dev/null +++ b/functions/index.js @@ -0,0 +1,6 @@ +const functions = require('firebase-functions'); +const admin = require('firebase-admin'); +admin.initializeApp(); + +// modules +exports.team = require('./modules/team') diff --git a/functions/modules/team.js b/functions/modules/team.js new file mode 100644 index 0000000..9a572a3 --- /dev/null +++ b/functions/modules/team.js @@ -0,0 +1,246 @@ +const functions = require('firebase-functions'); +const admin = require('firebase-admin'); +const nodemailer = require('nodemailer'); + +const APP_NAME = 'Aura Admin'; +const mailTransport = nodemailer.createTransport({ + service: 'gmail', + auth: { + user: functions.config().someservice.email, + pass: functions.config().someservice.password + }, +}); + +exports.addMessage = functions.https.onCall((data) => { + console.log(data) + return data.text + ' Vrijraj Singh' +}); + +exports.disabledAuth = functions.https.onCall((uid) => { + return admin.auth().updateUser(uid, { + disabled: true + }).then(async (userRecord) => { + try { + let updateUser = await admin.firestore().collection('users').doc(uid).update({ + disabled: true + }) + return { + success: true, + msg: `${userRecord.toJSON().email} is Disabled` + } + } catch (e) { + return { + success: false, + cc: 'Error while updating user collections', + msg: e + } + } + }).catch(e => { + return { + success: false, + cc: 'Error while disabling user auth', + msg: e + } + }) +}) + +exports.enabledAuth = functions.https.onCall((uid) => { + return admin.auth().updateUser(uid, { + disabled: false + }).then(async (userRecord) => { + try { + let updateUser = await admin.firestore().collection('users').doc(uid).update({ + disabled: false + }) + return { + success: true, + msg: `${userRecord.toJSON().email} is Enabled` + } + } catch (e) { + return { + success: false, + cc: 'Error while updating user collections', + msg: e + } + } + }).catch(e => { + return { + success: false, + cc: 'Error while disabling user auth', + msg: e + } + }) +}) + +exports.removeAuth = functions.https.onCall((data) => { + console.log(data) + const uid = data.uid + const name = data.name + const communityEmail = data.communityEmail + const communityName = data.communityName + let email = '' + + admin.auth().getUser(uid) + .then(function (userRecord) { + console.log('Successfully fetched user data:', userRecord.toJSON()); + email = userRecord.toJSON().email + }) + .catch(function (error) { + console.log('Error fetching user data:', error); + }); + + return admin.auth().deleteUser(uid) + .then(() => { + console.log('Successfully deleted user'); + return admin.firestore().collection('users').doc(uid).delete().then(async () => { + let maildata = await sendGoodbyeEmail(email, name, communityName, communityEmail); + return { + success: true, + mailstatus: maildata, + msg: 'Successfully deleted user' + } + }) + }) + .catch((error) => { + console.log('Error deleting user:', error); + return { + success: false, + msg: error + } + }); +}) + +exports.createAuthUser = functions.https.onCall(async (data) => { + console.log(data) + const email = data.email + const password = generateP() + const name = data.name + const userType = data.userType + const communityEmail = data.communityEmail + const communityName = data.communityName + return admin.auth().createUser({ + email: email, + password: password + }) + .then((userRecord) => { + console.log('Successfully created new user:', userRecord.uid); + return admin.firestore().collection('users').doc(userRecord.uid).set({ + uid: userRecord.uid, + userType: userType, + id: data.id, + disabled: false + }).then(async () => { + console.log('User Created with uid: ' + userRecord.uid) + let maildata = await sendWelcomeEmail(email, name, password, communityEmail, communityName); + return admin.firestore().collection('team').doc(data.id).update({ + uid: userRecord.uid + }).then(() => { + return { + success: true, + emailstatus: maildata, + msg: 'Successfully created new user', + uid: userRecord.uid, + docid: data.id + } + }).catch(e => { + return { + success: false, + emailstatus: maildata, + msg: 'Problem while updating team data', + error: e + } + }) + }).catch(e => { + return { + success: false, + msg: 'Error in Creating User : ' + e, + } + }) + + }) + .catch((error) => { + console.log('Error creating new user:', error); + return { + success: false, + msg: 'Error in Creating User : ' + error, + } + }); +}) + +async function sendWelcomeEmail(email, displayName, pass, communityEmail, communityName) { + const mailOptions = { + from: `${communityName} <${communityEmail}>`, + to: email, + }; + mailOptions.subject = `Welcome to ${communityName}!`; + mailOptions.html = ` +

Hey ${displayName || ''}!

+

Welcome to ${communityName}. I hope you will enjoy our service.

+

This email contains important account access information for your ${email} account.

+

This is your temporary password: ${pass}

+

Kindly Login into Admin panel or Contact Admin

+
+

If you have any questions, please contact ${communityEmail}

+
+

Regards

+

Team ${communityName}

+ `; + try { + let data = await mailTransport.sendMail(mailOptions); + return { + success: true, + msg: `Mail Sent to ${email}` + } + } catch (e) { + console.log(e); + return { + success: false, + msg: `Error ${e}` + } + } + +} + +async function sendGoodbyeEmail(email, name, communityName, communityEmail) { + const mailOptions = { + from: `${communityName} <${communityEmail}>`, + to: email, + }; + mailOptions.subject = `Bye! to ${communityName}!`; + mailOptions.html = ` +

Hey ${name}!

+

Bye to ${communityName}. I hope you have enjoyed our service.

+

We confirm that we have deleted your ${communityName} account.

+
+

If you have any questions, please contact ${communityEmail}

+
+

Regards

+

Team ${communityName}

+ `; + try { + let data = await mailTransport.sendMail(mailOptions); + return { + success: true, + msg: `Mail Sent to ${email}` + }; + } catch (e) { + console.log(e); + return { + success: false, + msg: `Error ${e}` + }; + } + +} + +function generateP() { + var pass = ''; + var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + + 'abcdefghijklmnopqrstuvwxyz0123456789@#$'; + for (let i = 1; i <= 8; i++) { + var char = Math.floor(Math.random() * str.length + 1); + + pass += str.charAt(char); + } + return pass; +} \ No newline at end of file diff --git a/functions/package-lock.json b/functions/package-lock.json new file mode 100644 index 0000000..ef63d59 --- /dev/null +++ b/functions/package-lock.json @@ -0,0 +1,2123 @@ +{ + "name": "functions", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@firebase/app-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.0.tgz", + "integrity": "sha512-ld6rzjXk/SUauHiQZJkeuSJpxIZ5wdnWuF5fWBFQNPaxsaJ9kyYg9GqEvwZ1z2e6JP5cU9gwRBlfW1WkGtGDYA==" + }, + "@firebase/auth-interop-types": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.4.tgz", + "integrity": "sha512-CLKNS84KGAv5lRnHTQZFWoR11Ti7gIPFirDDXWek/fSU+TdYdnxJFR5XSD4OuGyzUYQ3Dq7aVj5teiRdyBl9hA==" + }, + "@firebase/component": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.10.tgz", + "integrity": "sha512-Iy1+f8wp6mROz19oxWUd31NxMlGxtW1IInGHITnVa6eZtXOg0lxcbgYeLp9W3PKzvvNfshHU0obDkcMY97zRAw==", + "requires": { + "@firebase/util": "0.2.45", + "tslib": "1.11.1" + } + }, + "@firebase/database": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.1.tgz", + "integrity": "sha512-7XqUbj3nK2vEdFjGOXBfKISmpLrM0caIwwfDPxhn6i7X/g6AIH+D1limH+Jit4QeKMh/IJZDNqO7P+Fz+e8q1Q==", + "requires": { + "@firebase/auth-interop-types": "0.1.4", + "@firebase/component": "0.1.10", + "@firebase/database-types": "0.5.0", + "@firebase/logger": "0.2.2", + "@firebase/util": "0.2.45", + "faye-websocket": "0.11.3", + "tslib": "1.11.1" + } + }, + "@firebase/database-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.0.tgz", + "integrity": "sha512-6/W3frFznYOALtw2nrWVPK2ytgdl89CzTqVBHCCGf22wT6uKU63iDBo+Nw+7olFGpD15O0zwYalFIcMZ27tkew==", + "requires": { + "@firebase/app-types": "0.6.0" + } + }, + "@firebase/logger": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.2.tgz", + "integrity": "sha512-MbEy17Ha1w/DlLtvxG89ScQ+0+yoElGKJ1nUCQHHLjeMNsRwd2wnUPOVCsZvtBzQp8Z0GaFmD4a2iG2v91lEbA==" + }, + "@firebase/util": { + "version": "0.2.45", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.45.tgz", + "integrity": "sha512-k3IqXaIgwlPg7m5lXmMUtkqA/p+LMFkFQIqBuDtdT0iyWB6kQDokyjw2Sgd3GoTybs6tWqUKFZupZpV6r73UHw==", + "requires": { + "tslib": "1.11.1" + } + }, + "@google-cloud/common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.4.0.tgz", + "integrity": "sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg==", + "optional": true, + "requires": { + "@google-cloud/projectify": "^1.0.0", + "@google-cloud/promisify": "^1.0.0", + "arrify": "^2.0.0", + "duplexify": "^3.6.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^5.5.0", + "retry-request": "^4.0.0", + "teeny-request": "^6.0.0" + } + }, + "@google-cloud/firestore": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-3.7.5.tgz", + "integrity": "sha512-yfgGDQUlkMLxUMRZnGICWSDSvcV2EIjjK3Wc9MEBfju9ULBX1MfR0hU1PzRdtEK7HQ6a8Dh53QJBBngY2CkazA==", + "optional": true, + "requires": { + "deep-equal": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^1.13.0", + "readable-stream": "^3.4.0", + "through2": "^3.0.0" + } + }, + "@google-cloud/paginator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz", + "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz", + "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz", + "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==", + "optional": true + }, + "@google-cloud/storage": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-4.7.0.tgz", + "integrity": "sha512-f0guAlbeg7Z0m3gKjCfBCu7FG9qS3M3oL5OQQxlvGoPtK7/qg3+W+KQV73O2/sbuS54n0Kh2mvT5K2FWzF5vVQ==", + "optional": true, + "requires": { + "@google-cloud/common": "^2.1.1", + "@google-cloud/paginator": "^2.0.0", + "@google-cloud/promisify": "^1.0.0", + "arrify": "^2.0.0", + "compressible": "^2.0.12", + "concat-stream": "^2.0.0", + "date-and-time": "^0.13.0", + "duplexify": "^3.5.0", + "extend": "^3.0.2", + "gaxios": "^3.0.0", + "gcs-resumable-upload": "^2.2.4", + "hash-stream-validation": "^0.2.2", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "onetime": "^5.1.0", + "p-limit": "^2.2.0", + "pumpify": "^2.0.0", + "readable-stream": "^3.4.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "through2": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "gaxios": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.0.3.tgz", + "integrity": "sha512-PkzQludeIFhd535/yucALT/Wxyj/y2zLyrMwPcJmnLHDugmV49NvAi/vb+VUq/eWztATZCNcb8ue+ywPG+oLuw==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + } + } + }, + "@grpc/grpc-js": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.7.9.tgz", + "integrity": "sha512-ihn9xWOqubMPBlU77wcYpy7FFamGo5xtsK27EAILL/eoOvGEAq29UOrqRvqYPwWfl2+3laFmGKNR7uCdJhKu4Q==", + "optional": true, + "requires": { + "semver": "^6.2.0" + } + }, + "@grpc/proto-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.4.tgz", + "integrity": "sha512-HTM4QpI9B2XFkPz7pjwMyMgZchJ93TVkL3kWPW8GDMDKYxsMnmf4w2TNMJK7+KNiYHS5cJrCEAFlF+AwtXWVPA==", + "optional": true, + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "optional": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "optional": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "optional": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "optional": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "optional": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "optional": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "optional": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "optional": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "optional": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "optional": true + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.6.tgz", + "integrity": "sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.5.tgz", + "integrity": "sha512-578YH5Lt88AKoADy0b2jQGwJtrBxezXtVe/MBqWXKZpqx91SnC0pVkVCcxcytz3lWW+cHBYDi3Ysh0WXc+rAYw==", + "requires": { + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.150", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.150.tgz", + "integrity": "sha512-kMNLM5JBcasgYscD9x/Gvr6lTAv2NVgsKtet/hm93qMyf/D1pt+7jeEZklKJKxMVmXjxbRVQQGfqDSfipYCO6w==", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", + "optional": true + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" + }, + "@types/node": { + "version": "8.10.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.60.tgz", + "integrity": "sha512-YjPbypHFuiOV0bTgeF07HpEEqhmHaZqYNSdCKeBJa+yFoQ/7BC+FpJcwmi34xUIIRVFktnUyP1dPU8U0612GOg==" + }, + "@types/qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz", + "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "optional": true, + "requires": { + "debug": "4" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "optional": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "optional": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "optional": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "optional": true + }, + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", + "optional": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "optional": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "optional": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "optional": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true + }, + "date-and-time": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.13.1.tgz", + "integrity": "sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw==", + "optional": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-equal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.3.tgz", + "integrity": "sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA==", + "optional": true, + "requires": { + "es-abstract": "^1.17.5", + "es-get-iterator": "^1.1.0", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.0.5", + "isarray": "^2.0.5", + "object-is": "^1.1.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "requires": { + "streamsearch": "0.1.2" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "optional": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "optional": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + } + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "optional": true, + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "optional": true + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "optional": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "fast-text-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.2.tgz", + "integrity": "sha512-5rQdinSsycpzvAoHga2EDn+LRX1d5xLFsuNG0Kg61JrAT/tASXcLL0nf/33v+sAxlQcfYmWbTURa1mmAf55jGw==", + "optional": true + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "firebase-admin": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-8.11.0.tgz", + "integrity": "sha512-DapjZBeilXIDJShlWIvcgPkX6HhOHCs5C9972ZDNpfm0aSSgWuwgVQz9vs9iTk0u+oQuqRjxcHveZki0qaHJ2w==", + "requires": { + "@firebase/database": "^0.6.0", + "@google-cloud/firestore": "^3.0.0", + "@google-cloud/storage": "^4.1.2", + "@types/node": "^8.10.59", + "dicer": "^0.3.0", + "jsonwebtoken": "8.1.0", + "node-forge": "0.7.4" + } + }, + "firebase-functions": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.6.1.tgz", + "integrity": "sha512-CBvlDEoFgsdm10PTHs7gRd5xBmhp+eqCqgsyqKbzmdbU3J8RYqtBWoHm2O31gjtZv6MyOWvS3oFITShzBulylQ==", + "requires": { + "@types/express": "^4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "firebase-functions-test": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.1.7.tgz", + "integrity": "sha512-/zVQhaUZ+M7z25aUaZSIah0MIDZIfnRfQxtHYTE8hgUgODmKdaMX20vh5Gv23hnCPauIHuYb7XFTUOZiWU1udA==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "optional": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "optional": true + }, + "gaxios": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz", + "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz", + "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==", + "optional": true, + "requires": { + "gaxios": "^2.1.0", + "json-bigint": "^0.3.0" + } + }, + "gcs-resumable-upload": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz", + "integrity": "sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "configstore": "^5.0.0", + "gaxios": "^2.0.0", + "google-auth-library": "^5.0.0", + "pumpify": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "google-auth-library": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz", + "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^2.1.0", + "gcp-metadata": "^3.4.0", + "gtoken": "^4.1.0", + "jws": "^4.0.0", + "lru-cache": "^5.0.0" + } + }, + "google-gax": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.2.tgz", + "integrity": "sha512-yNNiRf9QxWpZNfQQmSPz3rIDTBDDKnLKY/QEsjCaJyDxttespr6v8WRGgU5KrU/6ZM7QRlgBAYXCkxqHhJp0wA==", + "optional": true, + "requires": { + "@grpc/grpc-js": "^0.7.4", + "@grpc/proto-loader": "^0.5.1", + "@types/fs-extra": "^8.0.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^3.6.0", + "google-auth-library": "^5.0.0", + "is-stream-ended": "^0.1.4", + "lodash.at": "^4.6.0", + "lodash.has": "^4.5.2", + "node-fetch": "^2.6.0", + "protobufjs": "^6.8.9", + "retry-request": "^4.0.0", + "semver": "^6.0.0", + "walkdir": "^0.4.0" + } + }, + "google-p12-pem": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz", + "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==", + "optional": true, + "requires": { + "node-forge": "^0.9.0" + }, + "dependencies": { + "node-forge": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", + "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==", + "optional": true + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "optional": true + }, + "gtoken": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz", + "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==", + "optional": true, + "requires": { + "gaxios": "^2.1.0", + "google-p12-pem": "^2.0.0", + "jws": "^4.0.0", + "mime": "^2.2.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "hash-stream-validation": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.2.tgz", + "integrity": "sha512-cMlva5CxWZOrlS/cY0C+9qAzesn5srhFA8IT1VPiHc9bWWBLkJfEUIZr7MWoi89oOOGmpg8ymchaOjiArsGu5A==", + "optional": true, + "requires": { + "through2": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "optional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "optional": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "optional": true + }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "optional": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "optional": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "optional": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "optional": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "optional": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "optional": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "optional": true + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "optional": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "optional": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "optional": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "optional": true + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "optional": true + }, + "json-bigint": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", + "optional": true, + "requires": { + "bignumber.js": "^7.0.0" + } + }, + "jsonwebtoken": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", + "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", + "requires": { + "jws": "^3.1.4", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + } + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "optional": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "optional": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.at": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz", + "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g=", + "optional": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "optional": true + }, + "lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=", + "optional": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "optional": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "optional": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "optional": true, + "requires": { + "semver": "^6.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "optional": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "optional": true + }, + "node-forge": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", + "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" + }, + "nodemailer": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.6.tgz", + "integrity": "sha512-/kJ+FYVEm2HuUlw87hjSqTss+GU35D4giOpdSfGp7DO+5h6RlJj7R94YaYHOkoxu1CSaM0d3WRBtCzwXrY6MKA==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "optional": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "optional": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "optional": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "protobufjs": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.9.0.tgz", + "integrity": "sha512-LlGVfEWDXoI/STstRDdZZKb/qusoAWUnmLg9R8OLSO473mBLWHowx8clbX5/+mKDEI+v7GzjoK9tRPZMMcoTrg==", + "optional": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "13.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", + "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", + "optional": true + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "optional": true, + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + }, + "dependencies": { + "duplexify": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz", + "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==", + "optional": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + } + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "optional": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "retry-request": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz", + "integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==", + "optional": true, + "requires": { + "debug": "^4.1.1", + "through2": "^3.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "optional": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "optional": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "optional": true + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", + "optional": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "optional": true + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + } + } + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "optional": true + }, + "teeny-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.3.tgz", + "integrity": "sha512-TZG/dfd2r6yeji19es1cUIwAlVD8y+/svB1kAC2Y0bjEyysrfbO8EZvJBRwIE6WkwmUoB7uvWLwTIhJbMXZ1Dw==", + "optional": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^7.0.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "optional": true, + "requires": { + "readable-stream": "2 || 3" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "optional": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "optional": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "optional": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "walkdir": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==", + "optional": true + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "optional": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "optional": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "optional": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "optional": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } +} diff --git a/functions/package.json b/functions/package.json new file mode 100644 index 0000000..5eef73d --- /dev/null +++ b/functions/package.json @@ -0,0 +1,23 @@ +{ + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "serve": "firebase emulators:start --only functions", + "shell": "firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "8" + }, + "dependencies": { + "firebase-admin": "^8.9.0", + "firebase-functions": "^3.3.0", + "nodemailer": "*" + }, + "devDependencies": { + "firebase-functions-test": "^0.1.6" + }, + "private": true +} diff --git a/package-lock.json b/package-lock.json index c524640..572d91b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2027,6 +2027,14 @@ "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=", "dev": true }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, "aggregate-error": { "version": "3.0.1", "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.0.1.tgz", @@ -2193,6 +2201,11 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", @@ -2252,6 +2265,11 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==" + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz", @@ -2262,7 +2280,6 @@ "version": "2.6.3", "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz", "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", - "dev": true, "requires": { "lodash": "^4.17.14" } @@ -2282,8 +2299,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { "version": "2.1.2", @@ -2745,6 +2761,11 @@ "node-releases": "^1.1.49" } }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&sync_timestamp=1573257177572&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz", @@ -2759,8 +2780,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", - "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", - "dev": true + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" }, "buffer-indexof": { "version": "1.1.1", @@ -2789,8 +2809,7 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbytes%2Fdownload%2Fbytes-3.1.0.tgz", - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", - "dev": true + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" }, "cacache": { "version": "12.0.3", @@ -3347,6 +3366,11 @@ "shallow-clone": "^3.0.0" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, "coa": { "version": "2.0.2", "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", @@ -3413,7 +3437,6 @@ "version": "1.0.8", "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -3499,7 +3522,6 @@ "version": "1.6.2", "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", - "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -3681,8 +3703,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "5.2.1", @@ -3968,6 +3989,11 @@ "assert-plus": "^1.0.0" } }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" + }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz", @@ -3978,7 +4004,6 @@ "version": "4.1.1", "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.1.1.tgz", "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -4012,8 +4037,7 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "deepmerge": { "version": "1.5.2", @@ -4195,6 +4219,23 @@ } } }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, "del": { "version": "4.1.1", "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz", @@ -4242,14 +4283,12 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "depd": { "version": "1.1.2", "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { "version": "1.0.1", @@ -4607,6 +4646,19 @@ "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", @@ -4619,6 +4671,26 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, "eslint": { "version": "6.8.0", "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz", @@ -4923,8 +4995,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", - "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", - "dev": true + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" }, "esquery": { "version": "1.1.0", @@ -4947,14 +5018,12 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz", - "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", - "dev": true + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=" }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", - "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", - "dev": true + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=" }, "etag": { "version": "1.8.1", @@ -5128,8 +5197,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", - "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", - "dev": true + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" }, "extend-shallow": { "version": "3.0.2", @@ -5263,8 +5331,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "faye-websocket": { "version": "0.10.0", @@ -5312,9 +5379,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz", - "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=", - "dev": true, - "optional": true + "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=" }, "filesize": { "version": "3.6.1", @@ -5492,7 +5557,6 @@ "version": "2.3.3", "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&sync_timestamp=1573028231350&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz", "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -6126,6 +6190,38 @@ } } }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", @@ -6165,6 +6261,34 @@ "pump": "^3.0.0" } }, + "get-uri": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", @@ -6583,7 +6707,6 @@ "version": "1.7.2", "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz", "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -6595,8 +6718,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, @@ -6616,6 +6738,30 @@ "requires-port": "^1.0.0" } }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "http-proxy-middleware": { "version": "0.19.1", "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", @@ -6645,6 +6791,25 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz", @@ -6753,6 +6918,16 @@ "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", "dev": true }, + "infinity-agent": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", + "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=" + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", @@ -6766,8 +6941,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", - "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", - "dev": true + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" }, "inquirer": { "version": "6.5.2", @@ -6847,8 +7021,7 @@ "ip": { "version": "1.1.5", "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, "ip-regex": { "version": "2.1.0", @@ -7158,8 +7331,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -7404,7 +7576,6 @@ "version": "0.3.0", "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -7508,8 +7679,113 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz", - "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=", - "dev": true + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash._arraycopy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=" + }, + "lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=" + }, + "lodash._arraymap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz", + "integrity": "sha1-Go/Q9MDfS2HeoHbXF83Jfwo8PmY=" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecallback": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", + "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=", + "requires": { + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.pairs": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._baseeach": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", + "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", + "requires": { + "lodash.keys": "^3.0.0" + } + }, + "lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" + }, + "lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", + "requires": { + "lodash.isarray": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._createaggregator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createaggregator/-/lodash._createaggregator-3.0.0.tgz", + "integrity": "sha1-1my/OZSbBQ2H31NGHw0FnfsI3J8=", + "requires": { + "lodash._basecallback": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "requires": { + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "lodash._createwrapper": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-3.2.0.tgz", + "integrity": "sha1-30U+ZkFjIXuJWkVAZa8cR6DqPE0=", + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -7517,23 +7793,122 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash._replaceholders": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._replaceholders/-/lodash._replaceholders-3.0.0.tgz", + "integrity": "sha1-iru3EmxDH37XRPe6rznwi8m9nVg=" + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + }, + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "requires": { + "lodash.assign": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, "lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz", "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", "dev": true }, + "lodash.indexby": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.indexby/-/lodash.indexby-3.1.1.tgz", + "integrity": "sha1-8sqrD/J5g3hYFHcw2GPN2AwcBC4=", + "requires": { + "lodash._createaggregator": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isplainobject": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", + "integrity": "sha1-moI4rhayAEMpYM1zRlEtASP79MU=", + "requires": { + "lodash._basefor": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.keysin": "^3.0.0" + } + }, + "lodash.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=" + }, "lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz", "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", "dev": true }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.keysin": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", + "integrity": "sha1-IsRJPrvtsUJ5YqVLRFssinZ/tH8=", + "requires": { + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.last": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz", + "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw=" + }, + "lodash.map": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-3.1.4.tgz", + "integrity": "sha1-tIOs0beGxce0ksSV97UmYim8AMI=", + "requires": { + "lodash._arraymap": "^3.0.0", + "lodash._basecallback": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, "lodash.mapvalues": { "version": "4.6.0", "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz", @@ -7546,6 +7921,47 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.merge": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-3.3.2.tgz", + "integrity": "sha1-DZDZPtY3sYeEN7s+IWASYNev6ZQ=", + "requires": { + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.isplainobject": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.keysin": "^3.0.0", + "lodash.toplainobject": "^3.0.0" + } + }, + "lodash.pairs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", + "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=", + "requires": { + "lodash.keys": "^3.0.0" + } + }, + "lodash.partialright": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-3.1.1.tgz", + "integrity": "sha1-4SOJJz70UR2no68FI+L2VUQ/qq8=", + "requires": { + "lodash._createwrapper": "^3.0.0", + "lodash._replaceholders": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npm.taobao.org/lodash.template/download/lodash.template-4.5.0.tgz", @@ -7565,6 +7981,15 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.toplainobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz", + "integrity": "sha1-KHkK2ULSk9eKpmOgfs9/UsoEGY0=", + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keysin": "^3.0.0" + } + }, "lodash.transform": { "version": "4.6.0", "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz", @@ -7616,11 +8041,51 @@ "version": "5.1.1", "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", - "dev": true, "requires": { "yallist": "^3.0.2" } }, + "mailgun-js": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.22.0.tgz", + "integrity": "sha512-a2alg5nuTZA9Psa1pSEIEsbxr1Zrmqx4VkgGCQ30xVh0kIH7Bu57AYILo+0v8QLSdXtCyLaS+KVmdCrQo0uWFA==", + "requires": { + "async": "^2.6.1", + "debug": "^4.1.0", + "form-data": "^2.3.3", + "inflection": "~1.12.0", + "is-stream": "^1.1.0", + "path-proxy": "~1.0.0", + "promisify-call": "^2.0.2", + "proxy-agent": "^3.0.3", + "tsscmp": "^1.0.6" + } + }, + "mailgun.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mailgun.js/-/mailgun.js-2.0.1.tgz", + "integrity": "sha1-E9cD4MJehdopgYoD8dQkpZkddAI=", + "requires": { + "btoa": "^1.1.2", + "es6-promise": "^3.0.2", + "lodash.defaults": "^3.1.2", + "lodash.indexby": "^3.1.1", + "lodash.last": "^3.0.0", + "lodash.map": "^3.1.4", + "lodash.merge": "^3.3.2", + "lodash.partialright": "^3.1.1", + "popsicle": "^1.1.1", + "popsicle-status": "^0.2.0", + "url-join": "0.0.1" + }, + "dependencies": { + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + } + } + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", @@ -7745,8 +8210,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { "version": "3.1.10", @@ -7788,14 +8252,12 @@ "mime-db": { "version": "1.43.0", "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.43.0.tgz", - "integrity": "sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg=", - "dev": true + "integrity": "sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg=" }, "mime-types": { "version": "2.1.26", "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.26.tgz?cache=0&sync_timestamp=1578282585871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.26.tgz", "integrity": "sha1-nJIfwJt+FJpl39wNpNIJlyALCgY=", - "dev": true, "requires": { "mime-db": "1.43.0" } @@ -7979,8 +8441,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" }, "multicast-dns": { "version": "6.2.3", @@ -8041,6 +8502,11 @@ "to-regex": "^3.0.1" } }, + "native-or-bluebird": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.2.0.tgz", + "integrity": "sha1-OcR7/Xgl0fuf+tMiEK4l2q3xAck=" + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", @@ -8059,6 +8525,11 @@ "integrity": "sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=", "dev": true }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz", @@ -8402,7 +8873,6 @@ "version": "0.8.3", "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz", "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=", - "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -8529,6 +8999,33 @@ "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", "dev": true }, + "pac-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^4.1.1", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz", @@ -8667,6 +9164,21 @@ "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", "dev": true }, + "path-proxy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", + "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=", + "requires": { + "inflection": "~1.3.0" + }, + "dependencies": { + "inflection": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz", + "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=" + } + } + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", @@ -8759,6 +9271,69 @@ "ts-pnp": "^1.1.6" } }, + "popsicle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/popsicle/-/popsicle-1.4.0.tgz", + "integrity": "sha1-wuOKlnpvjEllzNwwwEKQwfLFW+0=", + "requires": { + "arrify": "^1.0.0", + "concat-stream": "^1.4.7", + "form-data": "^0.2.0", + "infinity-agent": "^2.0.3", + "methods": "^1.1.1", + "native-or-bluebird": "^1.2.0", + "tough-cookie": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "requires": { + "delayed-stream": "0.0.5" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" + }, + "form-data": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "requires": { + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" + } + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "requires": { + "mime-db": "~1.12.0" + } + } + } + }, + "popsicle-status": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/popsicle-status/-/popsicle-status-0.2.2.tgz", + "integrity": "sha1-jECzhIVhtRxp+oSNBu/CLZUgp98=" + }, "portfinder": { "version": "1.0.25", "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.25.tgz", @@ -9374,8 +9949,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prepend-http": { "version": "1.0.4", @@ -9420,8 +9994,7 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", - "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", - "dev": true + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" }, "progress": { "version": "2.0.3", @@ -9440,6 +10013,14 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" }, + "promisify-call": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz", + "integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=", + "requires": { + "with-callback": "^1.0.2" + } + }, "protobufjs": { "version": "6.8.9", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.9.tgz", @@ -9477,6 +10058,26 @@ "ipaddr.js": "1.9.1" } }, + "proxy-agent": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", + "requires": { + "agent-base": "^4.2.0", + "debug": "4", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", @@ -9492,8 +10093,7 @@ "psl": { "version": "1.7.0", "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.7.0.tgz", - "integrity": "sha1-8cTEeo75cWfepda79IFtc26ISjw=", - "dev": true + "integrity": "sha1-8cTEeo75cWfepda79IFtc26ISjw=" }, "public-encrypt": { "version": "4.0.3", @@ -9545,8 +10145,7 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", - "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", - "dev": true + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" }, "q": { "version": "1.5.1", @@ -9617,7 +10216,6 @@ "version": "2.4.0", "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", - "dev": true, "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -9641,7 +10239,6 @@ "version": "2.3.7", "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.7.tgz", "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10278,8 +10875,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz", - "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", - "dev": true + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" }, "sha.js": { "version": "2.4.11", @@ -10372,6 +10968,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", @@ -10538,6 +11139,34 @@ } } }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz?cache=0&sync_timestamp=1565864868236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-1.1.2.tgz", @@ -10745,8 +11374,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stealthy-require": { "version": "1.1.1", @@ -10850,7 +11478,6 @@ "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -11129,6 +11756,11 @@ "xtend": "~4.0.1" } }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz", @@ -11216,8 +11848,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", - "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", - "dev": true + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" }, "toposort": { "version": "1.0.7", @@ -11229,7 +11860,6 @@ "version": "2.5.0", "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz", "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=", - "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -11253,6 +11883,11 @@ "integrity": "sha1-8fNSgwFiGlMiDVg3OuUQ/3R6Zrw=", "dev": true }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", @@ -11278,7 +11913,6 @@ "version": "0.3.2", "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -11302,8 +11936,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "uglify-js": { "version": "3.4.10", @@ -11408,8 +12041,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "unquote": { "version": "1.1.1", @@ -11502,6 +12134,11 @@ } } }, + "url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" + }, "url-loader": { "version": "2.3.0", "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz?cache=0&sync_timestamp=1574768726631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-2.3.0.tgz", @@ -11549,8 +12186,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { "version": "1.0.1", @@ -12375,11 +13011,15 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "with-callback": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz", + "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=" + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz", - "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", - "dev": true + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=" }, "workbox-background-sync": { "version": "4.3.1", @@ -12639,11 +13279,15 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", - "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", - "dev": true + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" }, "y18n": { "version": "4.0.0", @@ -12654,8 +13298,7 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", - "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", - "dev": true + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=" }, "yargs": { "version": "15.1.0", diff --git a/src/App.vue b/src/App.vue index e34f67e..809f7d4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -20,11 +20,13 @@ + import firebase from "@/config/firebase"; import { mapState, mapMutations } from "vuex"; +import UserService from '@/services/UsersServices' +import TeamService from '@/services/TeamServices' +// import AddTeamFirst from '@/components/Team/AddTeam' + export default { name: "App", @@ -48,7 +54,8 @@ export default { AuraAdminToolbar: () => import("@/components/Core/Toolbar"), AuraAdminDrawer: () => import("@/components/Core/Drawer"), AuraAdminBottomNav: () => import("@/components/Core/BottomNav"), - AuraAdminView: () => import("@/components/Core/Views") + AuraAdminView: () => import("@/components/Core/Views"), + AddTeamFirst: () => import("@/components/Common/AddFirstTime") }, data: () => ({ refreshing: false, @@ -57,10 +64,11 @@ export default { snackWithBtnText: "", snackWithButtons: false, timeout: 25000, + addFirstTime:false, isLoading: false }), computed: { - ...mapState(["generalConfig", "keysandsecurity"]) + ...mapState(["generalConfig", "keysandsecurity","role"]) }, created() { // Listen for swUpdated event and display refresh snackbar as required. @@ -72,38 +80,18 @@ export default { window.location.reload(); }); }, - mounted() { + async mounted() { if (firebase.auth.currentUser) { - var getGeneralConfigData = JSON.parse( - localStorage.getItem("generalconfig") - ); - var getKeysAndSecurity = JSON.parse( - localStorage.getItem("keysandsecurity") - ); - if ( - getGeneralConfigData && - getKeysAndSecurity && - Object.keys(getGeneralConfigData).length > 2 && - Object.keys(getKeysAndSecurity).length > 2 - ) { - // console.log("Found in localstorage"); - if ( - Object.keys(this.generalConfig).length <= 2 && - Object.keys(this.keysandsecurity).length <= 2 - ) { - // console.log("not found in vuex") - this.setGeneral(getGeneralConfigData); - this.setKeysAndSecutity(getKeysAndSecurity); - } else { - console.log("data froung in vuex"); - } - } else { - this.getDataFromServer(); - } + if (this.role.length<=0) + await this.getData(); + + (Object.keys(this.generalConfig).length <= 2 && Object.keys(this.keysandsecurity).length <= 2)? + await this.getDataFromServer(): + console.log("data froung in vuex"); } }, methods: { - ...mapMutations(["setGeneral", "setKeysAndSecutity"]), + ...mapMutations(["setGeneral", "setKeysAndSecutity","roleSet", "userDetailsSet"]), showRefreshUI(e) { this.registration = e.detail; this.snackBtnText = "Refresh"; @@ -117,8 +105,31 @@ export default { } this.registration.waiting.postMessage("skipWaiting"); }, + getData(){ + this.isLoading = true; + UserService.getUserRole().then(async (res)=>{ + // console.log(res); + if(res.success){ + if(!res.exists){ + this.addFirstTime=true; + this.isLoading = false; + return; + } + this.roleSet(res.data.userType); + await TeamService.getTeamMemberDetails(res.data.id).then(res=>{ + // console.log(res) + if(res.isFound){ + this.userDetailsSet(res.data) + } + this.isLoading = false; + }).catch(e=>{ + console.log(e) + }) + this.isLoading = false; + } + }) + }, getDataFromServer() { - // console.log("calling server"); this.speakersData = []; this.isLoading = true; firebase.firestore @@ -128,17 +139,11 @@ export default { if (snapshot.empty){this.isLoading = false; return} snapshot.forEach(doc => { if (doc.id == "general") { - doc = doc.data(); - localStorage.setItem("generalconfig", JSON.stringify(doc)); - this.setGeneral(doc); + this.setGeneral(doc.data()); } else if (doc.id == "keysandsecurity") { - doc = doc.data(); - localStorage.setItem("keysandsecurity", JSON.stringify(doc)); - this.setKeysAndSecutity(doc); + this.setKeysAndSecutity(doc.data()); } }); - // - this.isLoading = false; }) .catch(err => { diff --git a/src/components/Common/AddFirstTime.vue b/src/components/Common/AddFirstTime.vue new file mode 100644 index 0000000..5a74bce --- /dev/null +++ b/src/components/Common/AddFirstTime.vue @@ -0,0 +1,173 @@ + + + \ No newline at end of file diff --git a/src/components/Common/EventsByUserTable.vue b/src/components/Common/EventsByUserTable.vue new file mode 100644 index 0000000..1c35462 --- /dev/null +++ b/src/components/Common/EventsByUserTable.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/components/Common/UserActivity.vue b/src/components/Common/UserActivity.vue new file mode 100644 index 0000000..52d44ea --- /dev/null +++ b/src/components/Common/UserActivity.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/components/Core/Drawer.vue b/src/components/Core/Drawer.vue index f6b5f0d..41a0a17 100644 --- a/src/components/Core/Drawer.vue +++ b/src/components/Core/Drawer.vue @@ -2,17 +2,17 @@ - + - Community Lead - {{ generalConfig.email || "Community-Email"}} + {{userDetails.name || "User-Name"}} + {{ userDetails.email || "User-Email"}} + + + @@ -51,7 +73,7 @@ data:()=>({ }), computed:{ - ...mapState(['generalConfig']), + ...mapState(['userDetails','role']), ...mapGetters(['links']), drawer: { get () { diff --git a/src/components/Core/Toolbar.vue b/src/components/Core/Toolbar.vue index c266fe3..cf8f584 100644 --- a/src/components/Core/Toolbar.vue +++ b/src/components/Core/Toolbar.vue @@ -1,67 +1,120 @@ \ No newline at end of file +}; + diff --git a/src/components/Email/AddEmail.vue b/src/components/Email/AddEmail.vue new file mode 100644 index 0000000..70a4f81 --- /dev/null +++ b/src/components/Email/AddEmail.vue @@ -0,0 +1,154 @@ + + + \ No newline at end of file diff --git a/src/components/Events/CustomEvents/AddCustomEvent.vue b/src/components/Events/CustomEvents/AddCustomEvent.vue index 378885f..7ff44f9 100644 --- a/src/components/Events/CustomEvents/AddCustomEvent.vue +++ b/src/components/Events/CustomEvents/AddCustomEvent.vue @@ -129,17 +129,17 @@ v-on="on" > - + Cancel - OK + OK - + + >--> @@ -167,14 +167,14 @@ v-on="on" > - + Cancel - OK + OK @@ -185,7 +185,7 @@ label="Event End Time*" type="time" outlined - > --> + >--> diff --git a/src/components/Users/editUser.vue b/src/components/Users/editUser.vue new file mode 100644 index 0000000..f5ead6d --- /dev/null +++ b/src/components/Users/editUser.vue @@ -0,0 +1,91 @@ + + + \ No newline at end of file diff --git a/src/components/Users/successDialog.vue b/src/components/Users/successDialog.vue new file mode 100644 index 0000000..95b8ab5 --- /dev/null +++ b/src/components/Users/successDialog.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/config/firebase.js b/src/config/firebase.js index ad1176a..1cf6a52 100644 --- a/src/config/firebase.js +++ b/src/config/firebase.js @@ -3,6 +3,7 @@ import 'firebase/auth'; import 'firebase/storage'; import 'firebase/firestore'; import 'firebase/messaging'; +import 'firebase/functions'; const firebaseConfig = { apiKey: "AIzaSyAvx7gMLcpEnol0lRzep687jXFzj4ENUoQ", @@ -21,5 +22,7 @@ export default{ messaging: (firebase.messaging.isSupported())?firebase.messaging():null, firestore:firebase.firestore(), auth:firebase.auth(), + authw:firebase.auth, storage:firebase.storage(), + functions: firebase.functions() }; \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 5f832de..b1c3762 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,18 +1,21 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; import firebase from '@/config/firebase'; -import store from '@/store/index'; Vue.use(VueRouter); -const routes = [ - { +const routes = [{ path: '/', name: 'Home', component: () => import( /* webpackChunkName: "home" */ '@/views/Home'), meta: { requiresAuth: true, title: "Home", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -21,7 +24,12 @@ const routes = [ component: () => import( /* webpackChunkName: "home1" */ '@/views/Home'), meta: { requiresAuth: true, - title: "Home" + title: "Home", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -30,7 +38,7 @@ const routes = [ component: () => import( /* webpackChunkName: "login" */ '@/views/Login'), meta: { requiresAuth: false, - title: "Login" + title: "Login", } }, { @@ -39,7 +47,12 @@ const routes = [ component: () => import( /* webpackChunkName: "team" */ '@/views/Team'), meta: { requiresAuth: true, - title: "Team" + title: "Team", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -48,7 +61,12 @@ const routes = [ component: () => import( /* webpackChunkName: "partners" */ '@/views/Partners'), meta: { requiresAuth: true, - title: "Partners" + title: "Partners", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -57,7 +75,12 @@ const routes = [ component: () => import( /* webpackChunkName: "partners-details" */ '@/views/Partners/ViewPartner'), meta: { requiresAuth: true, - title: "Partner Details" + title: "Partner Details", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -66,7 +89,12 @@ const routes = [ component: () => import( /* webpackChunkName: "team-details" */ '@/views/Team/ViewTeam'), meta: { requiresAuth: true, - title: "Team Details" + title: "Team Details", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -75,7 +103,12 @@ const routes = [ component: () => import( /* webpackChunkName: "speakers" */ '@/views/Speakers'), meta: { requiresAuth: true, - title: "Speakers" + title: "Speakers", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -84,7 +117,12 @@ const routes = [ component: () => import( /* webpackChunkName: "speakers-details" */ '@/views/Speakers/ViewSpeaker'), meta: { requiresAuth: true, - title: "Speakers Details" + title: "Speakers Details", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -93,7 +131,12 @@ const routes = [ component: () => import( /* webpackChunkName: "config" */ '@/views/Config'), meta: { requiresAuth: true, - title: "Config" + title: "Config", + access: { + "Super Admin": true, + "Admin": false, + "Viewer":false + } } }, { @@ -102,7 +145,12 @@ const routes = [ component: () => import( /* webpackChunkName: "events" */ '@/views/Events'), meta: { requiresAuth: true, - title: "Events" + title: "Events", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -111,7 +159,12 @@ const routes = [ component: () => import( /* webpackChunkName: "event-details" */ '@/views/Events/ViewEvent'), meta: { requiresAuth: true, - title: "Event Details" + title: "Event Details", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { @@ -120,7 +173,68 @@ const routes = [ component: () => import( /* webpackChunkName: "notifications" */ '@/views/Notifications'), meta: { requiresAuth: true, - title: "Notifications" + title: "Notifications", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":false + } + } + }, + { + path: '/emails', + name: "Email", + component: () => import( /* webpackChunkName: "email" */ '@/views/Email'), + meta: { + requiresAuth: true, + title: "Email", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":false + } + } + }, + { + path: '/roles', + name: "UserManagement", + component: () => import( /* webpackChunkName: "roles" */ '@/views/Users'), + meta: { + requiresAuth: true, + title: "User Management", + access: { + "Super Admin": true, + "Admin": false, + "Viewer":false + } + } + }, + { + path: '/profile', + name: "profile", + component: () => import( /* webpackChunkName: "roles" */ '@/views/Profile/Profile'), + meta: { + requiresAuth: true, + title: "Profile Settings", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } + } + }, + { + path: '/emails/:id', + name: "EmailView", + component: () => import( /* webpackChunkName: "notifications" */ '@/views/Email/ViewEmail'), + meta: { + requiresAuth: true, + title: "Email", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":false + } } }, { @@ -129,18 +243,25 @@ const routes = [ component: () => import( /* webpackChunkName: "about" */ '@/views/About.vue'), meta: { requiresAuth: true, - title: "About" + title: "About", + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } }, { - path: '*', - name: 'redirect', - redirect: { path: '/' }, - meta:{ - title:`Redirect `, - color:"#0277bd", - } + path: '*', + name: 'redirect', + redirect: { + path: '/' }, + meta: { + title: `Redirect `, + color: "#0277bd", + } + }, ]; const router = new VueRouter({ @@ -153,6 +274,7 @@ router.beforeEach((to, from, next) => { if (to.meta.title) { document.title = to.meta.title + " - Aura Admin"; } + if (to.matched.some(record => record.meta.requiresAuth)) { if (firebase.auth.currentUser) { next(); diff --git a/src/services/SpeakersServices.js b/src/services/SpeakersServices.js index 94cc195..4a8f4f2 100644 --- a/src/services/SpeakersServices.js +++ b/src/services/SpeakersServices.js @@ -1,6 +1,26 @@ import firebase from '@/config/firebase' let speakersServices = { + getEventsBySpeaker:(id)=>{ + let events=[] + return new Promise((resolve, reject)=>{ + firebase.firestore.collection('events').where('speakers',"array-contains",id).get().then(docs=>{ + docs.forEach(doc=>{ + events.push(doc.data()) + }) + resolve({ + success: true, + data:events + }) + }).catch(e=>{ + reject({ + success: false, + msg: e + }) + }) + }) + }, + // Get All the Speakers Details getAllSpeakers:()=>{ let speakers = [] diff --git a/src/services/TeamServices.js b/src/services/TeamServices.js index 81c7001..80b8c0b 100644 --- a/src/services/TeamServices.js +++ b/src/services/TeamServices.js @@ -1,6 +1,28 @@ import firebase from '@/config/firebase' +import UserService from './UsersServices' let teamServices = { + + getEventsByTeamMember:(id)=>{ + let events=[] + return new Promise((resolve, reject)=>{ + firebase.firestore.collection('events').where('team',"array-contains",id).get().then(docs=>{ + docs.forEach(doc=>{ + events.push(doc.data()) + }) + resolve({ + success: true, + data:events + }) + }).catch(e=>{ + reject({ + success: false, + msg: e + }) + }) + }) + }, + // Get All the Team Members Details getAllTeam:()=>{ let team = [] @@ -64,10 +86,10 @@ let teamServices = { .collection("team") .doc(id) .set(data) - .then(res => { + .then(() => { resolve({ success:true, - msg:'Team Member Addedd Successfully' + msg:'Team Member Addedd Successfully & User Created' }) }) .catch(e => { @@ -80,17 +102,33 @@ let teamServices = { }, // Remove Team Member whose id is id - removeTeamMember:(id)=>{ + removeTeamMember:(teamInfo)=>{ return new Promise((resolve,reject)=>{ firebase.firestore .collection("team") - .doc(id) + .doc(teamInfo.id) .delete() .then(() => { - resolve({ - success:true, - msg:'Team Member Removed Successfully' - }) + if(teamInfo.uid && teamInfo.uid.length>0){ + UserService.removeUser(teamInfo.uid, teamInfo.name).then(res=>{ + resolve({ + success:true, + msg:'Team Member Removed Successfully', + data:res + }) + }).catch(e=>{ + reject({ + success:false, + msg:'Error in Removing Team Member: '+e + }) + }) + }else{ + resolve({ + success:true, + msg:'Team Member Removed Successfully', + data:"" + }) + } }) .catch(e => { reject({ @@ -121,6 +159,45 @@ let teamServices = { }) }); }) + }, + addFirstTime:(info)=>{ + return new Promise((resolve, reject)=>{ + let uid = firebase.auth.currentUser.uid; + info.uid = uid; + teamServices.addTeamMember(info.id, info).then((res)=>{ + if(res.success==true){ + let data={ + disabled:false, + id:info.id, + uid:uid, + userType:"Super Admin", + } + firebase.firestore.collection('users').doc(uid).set(data) + .then(() =>{ + resolve({ + success:true, + }) + }).catch(e=>{ + + reject({ + success:false, + msg:e + }) + }) + }else{ + reject({ + success:false, + msg:"Something went wrong" + }) + } + }).catch(e=>{ + reject({ + success:false, + msg:e + }) + }) + }) + } } diff --git a/src/services/UsersServices.js b/src/services/UsersServices.js new file mode 100644 index 0000000..7d5a814 --- /dev/null +++ b/src/services/UsersServices.js @@ -0,0 +1,175 @@ +import firebase from '@/config/firebase' + +let usersServices = { + getCurrentUserDetails: () => { + let uid = '' + return new Promise((resolve, reject) => { + uid = firebase.auth.currentUser.uid + + firebase.firestore.collection('team').where("uid", "==", uid).get().then(docs => { + // console.log(docs) + docs.forEach(doc => { + resolve({ + success: true, + data: doc.data(), + uid: uid + }) + }) + }).catch(e => { + reject({ + success: false, + msg: e + }) + // console.log(e) + }) + }) + }, + + getUserRole: () => { + let uid = '' + return new Promise((resolve, reject) => { + uid = firebase.auth.currentUser.uid + + firebase.firestore.collection('users').doc(uid).get().then(docs => { + // console.log(docs) + resolve({ + success: true, + data: docs.data(), + exists: docs.exists + }) + }).catch(e => { + reject({ + success: false, + msg: e + }) + // console.log(e) + }) + }) + }, + updateUser: (docid, userType) => { + return new Promise((resolve, reject) => { + firebase.firestore.collection('users').doc(docid).update({ + userType: userType + }).then(() => { + // console.log(docs) + resolve({ + success: true, + msg: "User role updated" + }) + }).catch(e => { + reject({ + success: false, + msg: e + }) + }) + }) + }, + updateUserPassword: (currentPassword, newPassword) => { + return new Promise((resolve, reject) => { + var user = firebase.auth.currentUser; + var cred = firebase.authw.EmailAuthProvider.credential( + user.email, currentPassword); + user.reauthenticateWithCredential(cred).then(() => { + var user = firebase.auth.currentUser; + user.updatePassword(newPassword).then(() => { + // console.log("Password updated!"); + resolve({ + success: true, + msg: "Password updated!" + }); + }).catch((e) => { + // console.log(e); + reject({ + success: false, + msg: e + }); + }); + }).catch((error) => { + reject({ + success: false, + msg: error + }); + }); + }); + }, + + getAllUsers: () => { + let users = [] + let teams = [] + let finaldata = [] + // console.log('calling') + return new Promise((resolve, reject) => { + firebase.firestore + .collection("users") + .get() + .then(async (snapshot) => { + await snapshot.forEach(doc => { + users.push(doc.data()) + }) + await firebase.firestore.collection('team').get().then(docs => { + docs.forEach(teamdoc => { + teams.push(teamdoc.data()) + }) + }) + let asd = await users.map(user => { + teams.map(team => { + if (user.uid == team.uid) { + let fobj = { + ...team, + ...user + } + finaldata.push(fobj) + } + }) + }) + + resolve({ + success: true, + data: finaldata + }) + }) + .catch(err => { + reject(err) + }); + }) + }, + removeUser: (uid, name,communityName, communityEmail) => { + return new Promise((resolve, reject) => { + let appp = firebase.functions.httpsCallable('team-removeAuth') + appp({ + uid: uid, + name: name, + communityName:communityName, + communityEmail:communityEmail + }).then(res => { + resolve(res.data) + }).catch(e => { + reject(e) + }) + }) + }, + enableUser: (uid) => { + return new Promise((resolve, reject) => { + let appp = firebase.functions.httpsCallable('team-enabledAuth') + appp(uid).then(res => { + resolve(res.data) + }).catch(e => { + // console.log(e) + reject(e) + }) + }); + }, + disableUser: (uid) => { + return new Promise((resolve, reject) => { + let appp = firebase.functions.httpsCallable('team-disabledAuth'); + appp(uid).then(res => { + resolve(res.data); + }).catch(e => { + // console.log(e); + reject(e); + }); + }); + } + +}; +export default usersServices; \ No newline at end of file diff --git a/src/services/mailService.js b/src/services/mailService.js new file mode 100644 index 0000000..c185b90 --- /dev/null +++ b/src/services/mailService.js @@ -0,0 +1,124 @@ +import firebase from '@/config/firebase' + +let mailServices = { + // Get All the mail Details + getAllMails:()=>{ + let mails = [] + return new Promise((resolve,reject)=>{ + firebase.firestore + .collection("mails") + .get() + .then(snapshot => { + snapshot.forEach(doc => { + mails.push(doc.data()); + }) + resolve({ + success:true, + data:mails + }) + }) + .catch(err => { + reject(err) + }); + }) + }, + + // Get mail Details whose id = id + getMailDetails:(id)=>{ + return new Promise((resolve,reject)=>{ + firebase.firestore + .collection("mails") + .doc(id) + .get() + .then(doc => { + if (doc.data() == undefined) { + resolve({ + isFound:false, + data:{} + }) + } else if (doc.data()) { + resolve({ + isFound:true, + data: doc.data() + }) + } else { + resolve({ + isFound:false, + data:{} + }) + } + }) + .catch(e => { + reject(e) + }) + }) + }, + + // Add mail whose document id is id and Data is data + addMail:(id,data)=>{ + return new Promise((resolve,reject)=>{ + firebase.firestore + .collection("mails") + .doc(id) + .set(data) + .then(res => { + resolve({ + success:true, + msg:'Mail Addedd Successfully' + }) + }) + .catch(e => { + reject({ + success:false, + msg:'Failed to Add Mail: '+ e + }) + }); + }) + }, + + // Remove mail whose id is id + removeMail:(id)=>{ + return new Promise((resolve,reject)=>{ + firebase.firestore + .collection("mails") + .doc(id) + .delete() + .then(() => { + resolve({ + success:true, + msg:'Mail Removed Successfully' + }) + }) + .catch(e => { + reject({ + success:false, + msg:'Error in Removing Mail: '+e + }) + }); + }) + }, + + // Edit Mail whose id is id and data is data + editMail:(id, data)=>{ + return new Promise((resolve,reject)=>{ + firebase.firestore + .collection("mails") + .doc(id) + .update(data) + .then(() => { + resolve({ + success:true, + msg: data.name +' updated Successfully' + }) + }) + .catch(e => { + reject({ + success: false, + msg: 'Error in updating Mail '+ e + }) + }); + }) + } +} + +export default mailServices diff --git a/src/store/index.js b/src/store/index.js index bddc2b7..b3dab94 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -7,7 +7,8 @@ export default new Vuex.Store({ state: { drawer: true, isLoggedin: false, - role: "demo", + role: "", + userDetails:{}, generalConfig:{ email:'', name:'' @@ -19,36 +20,101 @@ export default new Vuex.Store({ text: 'Home', to: '/home', icon: 'mdi-home', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } }, { text: 'Events', to: '/events', icon: 'mdi-assistant', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } }, { text: 'Team', to: '/team', icon: 'mdi-nature-people', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } }, { text: 'Speakers', to: '/speakers', icon: 'mdi-account-multiple', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } }, { text: 'Partners', to: '/partners', icon: 'mdi-toaster-oven', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } }, + // { + // text: 'Email', + // to: '/emails', + // icon: 'mdi-email-outline', + // access: { + // "Super Admin": true, + // "Admin": true, + // "Viewer":false + // } + // }, { - text: 'Notification', + text: 'User Manangment', + to: '/roles', + icon: 'mdi-account-group', + access: { + "Super Admin": true, + "Admin": false, + "Viewer":false + } + }, + { + text: 'Push Notifications', to: '/notification', icon: 'mdi-bell', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":false + } }, { text: 'Config', to: '/config', icon: 'mdi-widgets', + access: { + "Super Admin": true, + "Admin": false, + "Viewer":false + } + }, + { + text: 'Profile', + to: '/profile', + icon: 'mdi-account-circle', + access: { + "Super Admin": true, + "Admin": true, + "Viewer":true + } } ] @@ -63,6 +129,7 @@ export default new Vuex.Store({ toggleDrawer: state => (state.drawer = !state.drawer), roleSet: (state, payload) => (state.role = payload), setGeneral:(state, payload)=>(state.generalConfig = payload), + userDetailsSet:(state, payload)=>(state.userDetails = payload), setKeysAndSecutity:(state, payload)=>(state.keysandsecurity= payload), }, actions: {}, diff --git a/src/views/Config.vue b/src/views/Config.vue index af64531..5b62112 100644 --- a/src/views/Config.vue +++ b/src/views/Config.vue @@ -45,6 +45,7 @@ diff --git a/src/views/Email/ViewEmail.vue b/src/views/Email/ViewEmail.vue new file mode 100644 index 0000000..5386ab5 --- /dev/null +++ b/src/views/Email/ViewEmail.vue @@ -0,0 +1,192 @@ + + + diff --git a/src/views/Events.vue b/src/views/Events.vue index d4b2216..4b117fb 100644 --- a/src/views/Events.vue +++ b/src/views/Events.vue @@ -66,10 +66,7 @@ export default { communityName:'' }), computed:{ - ...mapState(['generalConfig',"keysandsecurity"]), - }, - mounted(){ - // this.getConfig() + ...mapState(['generalConfig',"keysandsecurity",'role']), }, methods:{ getConfig(){ diff --git a/src/views/Events/ViewEvent.vue b/src/views/Events/ViewEvent.vue index fbdc30e..03bf21d 100644 --- a/src/views/Events/ViewEvent.vue +++ b/src/views/Events/ViewEvent.vue @@ -19,15 +19,17 @@ Events - + @@ -351,6 +353,7 @@ diff --git a/src/views/Login.vue b/src/views/Login.vue index 50e2756..ae1f987 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -72,26 +72,13 @@ export default { } }, methods: { - ...mapMutations(['roleSet']), login() { var self = this; self.loading = true; firebase.auth .signInWithEmailAndPassword(self.email, self.password) - .then(user => { - firebase.firestore - .collection("users") - .doc(user.user.uid) - .get() - .then(doc => { - self.roleSet(doc.role); - self.$router.replace("/home"); - self.loading = false; - }) - .catch(e => { - console.log(e+" SOmething went wrong"); - self.loading = false; - }); + .then((user) => { + }) .catch(e => { self.loading = false; diff --git a/src/views/Notifications.vue b/src/views/Notifications.vue index ca7bd6a..136fa55 100644 --- a/src/views/Notifications.vue +++ b/src/views/Notifications.vue @@ -68,6 +68,7 @@ diff --git a/src/views/Speakers.vue b/src/views/Speakers.vue index c253a51..1f101b0 100644 --- a/src/views/Speakers.vue +++ b/src/views/Speakers.vue @@ -85,7 +85,8 @@ - + + @@ -169,6 +170,18 @@ :items-per-page="5" class="elevation-0 ma-0 pa-0" > +