{"version":3,"file":"static/chunks/1764-8928a9d1ad0129c6.js","mappings":"sNAmBA,IAiEA,cAEA,SACA,IACA,YAAoB,WAAgB,KACpC,qBACA,OACA,UAEA,OACA,iBAGA,kBACA,cACA,kCAEA,gDACA,iBACA,qBAKA,iBACA,oBACA,gBAEA,CACA,QACA,EAOA,cAEA,SACA,QACA,kBACA,aACA,SACA,mCAEA,iBACA,aACA,0CACA,MACA,iBAEA,IAGA,iBAHA,MAGA,UAFA,MAEA,QADA,MACA,EACA,KACA,2CACA,0CACA,KACA,CACA,aACA,SACA,qDACA,CACA,CACA,iBACA,EAIA,GAIA,oBAIA,oBAKA,2BAKA,2BAKA,mFAIA,mBACA,mCACA,CAAK,CAIL,2BACA,mCACA,CAAK,CAQL,2CAUA,qBACA,qBACA,6DAEA,aACA,QACA,2BACA,oBACA,KACA,YAAwB,WAAkB,MAC1C,WACA,eACA,aACA,eACA,aACA,OACA,gBACA,iBACA,OACA,IACA,KACA,GACA,QAGA,2BACA,CACA,iBACA,CAAK,CASL,yBAGA,4BACA,QAEA,4BACA,CAAK,CASL,yBAGA,4BACA,QAEA,oCACA,CAAK,CAgBL,6BACA,aACA,QACA,2BACA,oBACA,KACA,YAAwB,WAAiB,EACzC,uBAEA,EADA,WACA,iBAGA,IADA,WACA,kBAGA,EADA,aACA,kBAEA,GADA,IACA,mCACA,YAEA,gBAEA,GADA,UACA,QACA,oBAEA,GADA,UACA,QACA,iBACA,SACA,CACA,CACA,CACA,QACA,CAAK,CAML,QACA,yBACA,uBACA,uBACA,8BACA,8BAEA,YAA4B,2BAA8B,IAC1D,mDACA,8CACA,kEACA,4DAEA,mCACA,2DACA,0DAGA,CACA,CACA,CAIA,uBACA,cACA,oBACA,mCACA,CACA,CAIA,kBACA,WACA,8BACA,EAKA,cAEA,6BACA,EAUA,cACA,IACA,2BACA,CACA,SACA,wCACA,CACA,WACA,EA+FA,aACA,4BACA,YAEA,8BACA,cAEA,QAAqB,IAAN,GAAM,CACrB,OAAe,GAAM,OAErB,wCACA,CAkBA,oCASA,OACA,QAAsB,IAAP,GAAO,KAAkC,IAAP,EAAO,IACxD,CADwD,MAGxD,MAA+B,EAAO,0BACtC,KACA,oBAEA,EACA,WAIA,EAHA,gCACA,OAGA,IACA,mDAAiE,KACjE,CACA,SAGA,MACA,CACA,iBACA,uBACA,EAQA,OACA,IACA,YACA,KACA,GACA,CACA,SAOA,4DAAoE,EAAE,GACtE,MACA,CACA,EAOA,MAAkD,QAAY,6FAO9D,MACA,WACA,MACA,OAEA,yBACA,CADkD,EAClD,qBACA,4BAAwC,GAAM,sCAG9C,0CACA,WAEA,uBAGA,sBAOA,OAAoC,MAAQ,kDAwB5C,SACA,cACA,mBACA,oBACA,iCACA,eACA,aACA,CAAS,CACT,CAMA,gBACA,cACA,EACA,eAGA,gBAEA,uBAGA,yBAA4C,EAG5C,aACA,KAGA,OAGA,CACA,CACA,CAkBA,gBACA,SACA,4HAGA,OACA,WACA,UACA,EACA,oBACA,WACA,mBACA,MACA,oEAEA,qBAEA,sCAA+C,EAAQ,+DACvD,0BACA,aACA,EAAW,IAEX,KACA,OACA,qBACA,qBACA,EACA,UACA,CA2IA,aACA,IACA,gCACA,CACA,SACA,QACA,CACA,CAQA,aACA,2BACA,IACA,SACA,4DACA,wBACA,kBACA,iBAEA,GACA,iCAEA,KACA,EACA,uBACA,IACA,EACA,eACA,MACA,wDACA,CACA,CACA,SACA,IACA,CACA,CAAK,CACL,CAqEA,qBAGA,uBACA,YAEA,IAEA,GACA,SACA,YACA,kBAEA,YAGA,wCAGA,yBACA,gDAEA,CACA,CACA,QACA,mBACA,eACA,mBACA,aACA,CACA,eACA,eACA,KAA4B,aAAa,GAAG,EAAK,EACjD,iBACA,mBAEA,KAA+B,iBAAiB,IAAI,GAAS,GAAG,EAAS,IAEzE,OADA,YAEA,CACA,CACA,gBACA,2BACA,WACA,6BAAmD,EAAI,IAClD,CACL,CACA,SAAmB,MAAM,IAAI,GAkM7B,gBACA,SACA,SAEA,qBACA,iBACA,gBACA,kBACA,SAEA,WACA,OACA,cACA,YACA,QACA,MAEA,SACA,QAEA,CACA,eACA,kBACA,SAGA,QACA,CACA,cACA,mCACA,CA23BA,qBACA,eACA,YAGA,CAEA,qBC/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AOA,eACA,YAIA,iBAKA,mBAIA,0BAIA,YACA,CACA,eACA,sBAEA,gBACA,aACA,kCAAkD,EAAI,4BAEtD,iBACA,CAEA,eACA,wCACA,CACA,iBACA,wBAEA,kBACA,wBACA,oEAEA,mBACA,CACA,qBACA,4BAEA,sBACA,sBACA,CAIA,YACA,8DACA,mCACA,CACA,UACA,sBACA,0CACA,qCACA,CACA,WACA,6DACA,kCACA,CACA,WACA,6DACA,kCACA,CACA,YACA,8DACA,mCACA,CACA,gBClKA,uCAKA,aACA,UACA,IACA,YACA,eACA,SACA,UACA,eACA,CACA,CAEA,aACA,UACA,IACA,4BACA,6BACA,uCACA,CACA,CACA,kBACA,cACA,cACA,cACA,cACA,cACA,0BACA,WACA,mCACA,gCACA,EACA,OACA,EAAoB,EAAI,WACxB,GACA,EACA,CAHwB,CAGxB,KACA,WACA,GACA,EACA,gCACA,6BACA,CAAK,EAcL,OAbA,EACA,SAGA,wBACA,UAGA,CAAK,EACL,YAAwB,EAGxB,WACA,CACA,CACA,cAEA,YACA,OACA,0BACA,WACA,oCACA,iCACA,gCACA,EACA,OACA,IACA,GACA,EACA,OACA,wDACA,GACA,EACA,iCACA,8BACA,6BACA,CAAK,EAEL,UACA,CACA,OACA,WACA,gCAEA,cACA,gBAEA,0BACA,oCAGA,eACA,6BACA,OACA,oCAEA,CAEA,OAAe,EAAI,KACnB,CAAK,CACL,UAFmB,IAGnB,OACA,IAEA,WACA,6BACA,2BAGA,MAEA,EACA,cACA,MACA,CACA,qBAIA,uCACA,8CAYA,gBACA,eAIA,OADA,mBACmB,EAAI,YACvB,EAEA,GAHuB,MAGvB,MAGA,OAAe,EAAI,mBACnB,EAvBA,iBACA,6BAEA,OADA,6BACmB,EAAI,EACvB,CAoBA,CACA,aAtBuB,OAuBvB,qBACA,MAGA,6BACA,KACA,UACA,eAEA,CACA,CACA,SAAS,EAAI,GAGb,cAHa,EAGb,WACA,YAGA,YACA,gBACA,WAOA,OAJA,QACA,WACA,YAEA,CACA,CACA,kBC5KA,wBAAiC,qCAAyC,EAAI,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CA,CACA,qBACA,IAEA,OADA,YACA,gBACA,qCAIA,OADA,aACA,CACA,CACA,SACA,gBAAyB,GAAa,CACtC,sBAEA,CACA,0BACA,8CACa,EACb,iBACA,CACA,CACA,CACA,uBACA,IAEA,MADA,aACA,4BACA,mBACA,sBACA,aAEA,SACA,gBAAyB,GAAa,CACtC,sBAEA,CACA,0BACA,8CACa,EACb,iBACA,CACA,CACA,CACA,eACA,SAAc,OAAS,GAAG,gBAAkB,CAC5C,CAkBA,YAEA,SACA,UACA,eACA,iBAUA,2BACA,sDACA,yBACA,2DACA,wBACA,GAEA,CAQA,yBACA,QACA,IAMA,UALA,WACA,+BACA,eAGA,wBACA,OACA,8EACA,yDAEA,2EAMA,iDACA,qDANA,OAoBA,OATA,4CAAwD,UAAa,EAGrE,iCACA,4CACA,iCAEA,OADA,WACA,KACA,CAAiB,EACjB,8CACA,CACA,SACA,SACA,CACA,CAQA,4BACA,MACA,IAKA,GAJA,8BACA,mCAGA,0EACA,4CACA,SAEA,WAEA,kBAAoB,mBAAkC,qCACtD,EAAiC,QAA6B,iBAAkB,uBAA0C,GAgB1H,OAdA,8CACA,YAEA,mCAIA,uDAGA,oCAEA,gDAEA,CACA,CACA,SAEA,OADA,UACA,EACA,CACA,CACA,CACA,cAGA,OAFA,WAEA,6BACA,CACA,oBAGA,SAEA,YACA,gBAEA,mCACA,KAiBA,IAHA,qBAGA,SACA,cACA,KACA,OAdA,GAJA,QACA,cACA,eACa,EACb,SAGA,QACA,KACA,CAaA,YACA,CACA,OACA,mBACA,eACA,CACA,CACA,SACA,eACA,WACA,gEACA,CACA,2CACA,EAAa,QAAoB,IAId,QAAyB,GAC5C,aACA,aAEA,CAIA,aAEA,IADA,mCAEA,OAAqB,cAErB,EACA,+BACA,8BACA,EAGA,CAAyB,cAEzB,CACA,CAEA,mBACA,MAEA,GADA,mCAIA,CACA,wBACA,oBACA,+FACA,wBACa,CACb,CACA,CAEA,aACA,MAEA,GADA,mCAIA,CACA,wBACA,oBACA,+FACA,eACA,gBACA,aACA,CACa,CACb,CACA,CACA,CAMA,eAEA,MAAW,QAA6B,CAExC,gBAAqB,uBAAyC,WAoC9D,SAjBA,GACA,MAA2B,IAAS,2CACpC,MAA2B,IAAS,sCAEpC,OAaA,IAXA,kBAEA,gBACA,EAQA,0EC1nCA,SAOA,mBACA,YACA,uBACA,YACA,0BAIA,qBACA,8BACA,2BACA,CACA,wBAEA,OADA,yBACA,KAEA,wBAEA,OADA,yBACA,IACA,CACA,mBAEA,OADA,oBACA,KAEA,8BAEA,OADA,yBACA,KAEA,CAkBA,iBAsBA,SACA,iBACA,YACA,iBACA,oBACA,uBACA,+BACA,8BACA,4BACA,CAKA,OAEA,0CACA,mCACA,UAAiC,IAAQ,CAEzC,GADA,gCACA,uBACA,4BAEA,IACA,mCACA,oBACA,CAAqB,EACrB,GACA,YAEA,CACA,SAGA,CAEA,CACA,6CAEA,gBACA,MAEA,oEACA,sDACA,0BACA,4BACA,IACA,oCACA,oBACA,CAAiB,CACjB,CACA,SACA,KACA,WAGA,QAEA,KAEA,CAEA,KACA,WAGA,wBAAuC,WAAW,kBAElD,CACA,CACA,eACA,sBAEA,gBACA,sBACA,qCAAiD,QAAgB,eAAe,UAAU,IAE1F,kBACA,6BAAyC,WAAW,4BAIpD,GAFA,iBAEA,6BAIA,QACA,IACA,6BAA8C,qBAAwC,CACtF,CACA,SAKA,CAKA,iDACA,0CACA,IAEA,mCACA,oBACA,CAAiB,EACjB,YACA,CACA,SAGA,CACA,EACA,CACA,mBACA,iCACA,gCACA,wBACA,CAGA,eACA,yCACA,uBACA,EACA,0BAEA,+BACA,EACA,yBAEA,oBACA,CACA,CACA,iBACA,2BACA,CACA,mBACA,4BACA,CACA,gBACA,uCACA,CACA,eAAwB,EACxB,YAAgB,MAAe,EAC/B,yDACA,yBACA,eAA2B,UAAU,GAAG,EAAqB,iCAE7D,0BACA,yBAAqC,WAAW,8BAEhD,mCACA,qBACA,SACA,CAAS,EAET,gDAEA,IADA,qCAEA,aAGA,QACA,CASA,YACA,MACA,0CACA,+DACA,SACA,8BACA,4BAIA,OAHA,GACA,OAEA,KACA,WACA,CACA,CAKA,2BACA,kCACA,KAGA,eACA,IACA,MACA,CACA,SAEA,CAEA,CACA,2CAA6B,eAAkC,EAC/D,4BACA,wBACA,iDACA,wBACA,SACA,CAAa,EACb,wBACA,+BAMA,gCAMA,kCACA,IACA,oDACA,CACA,SAEA,CAGA,cACA,CACA,wCACA,eACA,qCAGA,CAEA,CACA,UAH+B,YAG/B,CACA,wBACA,8CAEA,CAEA,cACA,qBACA,CACA,cACA,oCAsBA,QACA,eACA,YACA,sBACA,CAUA,gBACA,+BACA,sBACA,yBAAyC,QAAgB,mCAAmC,UAAU,GAEtG,iBACA,CACA,2BACA,yBACA,kBAEA,8BAEA,oBACA,CAQA,eACA,yBACA,6BAGA,oBAEA,OADA,wBACA,CACA,CACA,eACA,0CACA,CACA,oEClZA,aACA,YAkBA,QAAe,wGCiGf,EAudA,mCApjBA,uCAIA,kBAMA,OAMA,MAIA,KAsBA,iBAA2B,GAAa,CAOxC,qBACA,gCAAsD,GAAS,GAAG,KAAkB,IACpF,eAIA,iBAA4B,qBAC5B,+BAGA,uCACA,CACA,aACA,oBAEA,cACA,cACA,CAIA,eACA,wBAKA,qBACA,sCAEA,sBACA,iCACA,+BACA,gBAA8B,kBAAkB;AAAA,EAAI,+BAA+B,EAGnF,+BAGA,CAmCA,cACA,kBACA,CACA,aACA,uFAEA,yBACA,CACA,cACA,iEACA,CACA,cACA,mDACA,EADA,yEAIA,CACA,aACA,oGAEA,iCACA,CACA,aACA,gHACA,CACA,cACA,+EACA,CACA,aACA,+FACA,CACA,aACA,6DACA,CACA,cACA,kDACA,CACA,cACA,wEACA,CACA,aACA,8EAEA,EACA,wCACA,CACA,aACA,0FACA,CACA,aACA,6GACA,CACA,aACA,iFACA,CACA,cACA,0CAAyE,GAAU,uJACnF,CAIA,cACA,kCACA,CACA,aACA,2DACA,CAMA,cACA,wDACA,EADA,kHAIA,CAKA,gBACA,yEACA,CAIA,cACA,kDACA,EAvHA,YAEA,oBACA,sCACA,sCACA,wCACA,kCACA,oCACA,8BACA,sCACA,8CACA,sCACA,sBAEA,0CACA,4BACA,kDACA,wCACA,wCACA,kDACA,oCACA,sCACA,kDACA,4BACA,kDACA,kCACA,kCACA,mDACA,CAAC,SAA4C,EAkH7C,SACA,iBACA,cACA,YACA,CACA,WACA,kBAEA,aACA,4BAEA,gBACA,yBACA,6CACA,CACA,sBAEA,YADA,mBACA,iBACA,CACA,+BACA,MACA,IACA,oBACA,CACA,SAGA,kBACA,CACA,eACA,QAGA,WAEA,CACA,wBACA,WACA,wBACA,cACA,sCACA,6BAEA,CAEA,wBADA,YACA,KACA,GAA4B,iBAC5B,cACA,kCACA,CACA,uBACA,0BACA,oBACA,sBAA8D,EAAoB,GAAG,EAAQ,KAAK,EAAa,IAAI,EAAoB,OAEvI,QACA,sDACA,EACA,aAGA,GACA,CAAc,+BAA0D,CACxE,CACA,QACA,QAXA,CAAyC,iBAYzC,YACA,CAAa,CACb,CACA,MAVA,oBAA2D,EAAiB,GAAG,EAAa,GAAG,EAAiB,OAWhH,QAVA,CAAsC,iBAWtC,YACA,EACA,CACA,YAAwB,WAAmB,KAC3C,WACA,kBACA,MACA,0BACA,oBACA,GACA,OAEA,aACA,gBACA,KACA,CACA,CACA,WACA,WAEA,QACA,CACA,CAKA,QACA,eACA,+BACA,CAEA,aACA,qBAGA,cACA,CA8BA,aAEA,KAGA,QAIA,OAEA,OACA,KACA,IACA,aACA,YACA,CACA,SACA,iBACA,IACA,KACA,gBAEA,CACA,cACA,kBACA,OACA,QACA,CAAS,GACT,CACA,aACA,GACA,eAEA,CACA,uBAoBA,EAnBA,MACA,IACA,MACA,CACA,MAKA,OALA,CACA,IACA,oBACA,MACA,CAOA,MAEA,OAGA,OACA,IACA,KAGA,wBAEA,IACA,CACA,SACA,eACA,IAGA,KACA,KACA,IAGA,UACA,GACA,MAEA,gBACA,MAGA,GACA,OAGA,CAMA,OALA,KACA,kBACA,KACA,KACA,CAAK,IACL,CACA,CAQA,cACA,KACA,CAkBA,cACA,iBACA,CAEA,cACA,0BACA,CACA,cACA,2CACA,CACA,cACA,6CACA,CACA,cACA,6BACA,CACA,aACA,8BACA,CACA,oBACA,OACA,8BAAoD,EAAS,cAAc,GAAU,cAErF,OACA,8BAAoD,EAAS,cAAc,GAAU,UAErF,CAkBA,kBACA,QAIA,OAHA,SACA,cAA4B,GAAK,EAEjC,GAAc,EAAS,KAAK,EAAO,KAAK,EAAQ,CAChD,CACA,cACA,yBACA,MACA,eACA,qBAEA,KADA,mBACA,KAKA,OADA,aAEA,CAkCA,gBAGA,oBAOA,OANA,CAEA,IAEA,IACA,CACA,WACA,oBACA,cACA,EAzCA,YACA,2BACA,qCACA,oBACA,CAAC,UAA8B,CA+D/B,SACA,wCACA,YACA,eACA,gBACA,aACA,qBACA,6BACA,iBACA,sBACA,gBACA,yBACA,0BACA,aACA,6BACA,qBACA,kBACA,mBACA,kCACA,gBACA,eACA,aACA,CAAS,CACT,CAIA,SACA,cACA,MACA,wBACA,MACA,CACA,+BACA,2BACA,UACA,eACA,+BACA,gCACA,2BAEA,CACA,gCACA,+BAIA,EACA,sDACA,UACA,+BACA,kCAEA,6BACA,oCACA,gBACA,OACA,iCACA,YAEA,mBADA,6BAEA,MACA,CAEA,WADA,mCACA,GACA,CAAa,CACb,EAKA,UACA,oBACA,eACA,eACA,oBACA,IACA,wCACA,KACA,KAGA,GAEA,CACA,SACA,IACA,MAGA,aACA,SACA,mCAEA,EADA,oBACA,yBAGA,EAEA,MAIA,EAFA,WACA,wBAIA,IAKA,CACA,gBACA,wBAGA,oCAEA,CAEA,aACA,qBAGA,UACA,kBACA,sBACA,wBACA,mBAEA,gCACA,+BAEA,CACA,CAKA,QACA,mBACA,sBACA,kBACA,iBACA,CACA,CACA,gBACA,sBACA,+BAEA,CACA,gBACA,gCACA,iCACA,CACA,gBACA,GACA,yBAEA,CACA,iBACA,UACA,4BAEA,CACA,8BACA,qBACA,UACA,kBAAoC,YAKpC,OAJA,OACA,OACA,OACA,QACA,0HACA,CAkBA,oBACA,gCACA,YAEA,sCACA,kBAGA,MAEA,CAOA,kBACA,WACA,eACA,YACA,YAAwB,WAAiB,IACzC,eAEA,kBACA,CAEA,OACA,kBAGA,6FAGA,CAUA,0BACA,cACA,mBAEA,WACA,gBAEA,QACA,aAEA,IACA,CAmBA,eACA,4BACA,mBAEA,cACA,CAsBA,QAQA,UAOA,gBAOA,sBAUA,mBACA,CACA,UACA,iBACA,YACA,wBACA,CACA,CAIA,iBACA,UACA,YACA,oBACA,gBACA,kBACA,sBACA,kBACA,0BAEA,CAEA,SACA,CACA,eACA,SACA,YAAoB,WAAkB,KACtC,qBACA,QACA,UAGA,QACA,0BAGA,iBAEA,gDAQA,cAFA,CAEA,WADA,kBAEA,qDANA,oBAUA,iBAEA,oBAGA,sCAKA,CACA,wBACA,CACA,eACA,MACA,IACA,uBACA,CACA,SACA,0CACA,CACA,YACA,CACA,qBAyBA,EAxBA,UACA,gBACA,0BACA,sBACA,QAEA,gCADA,YAGA,qCAEA,KACA,CACA,mBACA,0BACA,sBACA,QAEA,gCADA,YACA,kCAEA,uCAEA,CAEA,CAEA,IACA,OACA,CACA,SACA,kCACA,OAEA,qCACA,CACA,+BACA,YAAoB,WAAkB,IACtC,qBAEA,QACA,CACA,SACA,eACA,eACA,sBACA,iCACA,YACA,4DAA+F,iBAE/F,gBACA,WACA,mBAA6C,SAC7C,6BACA,yBAAwD,CACxD,GAEA,uCACA,CACA,CACA,eACA,uBACA,SACA,qBAGA,UAEA,CACA,eAEA,OADA,UACA,YAEA,wBACA,oBAIA,kCACA,CAyBA,SACA,iBACA,QACA,KACA,MACA,aACA,SACA,UAEA,0BACA,EACA,8BAGA,wCACA,mCAEA,qBAEA,0BACA,EACA,cAGA,oCACA,mBAEA,YAEA,aACA,YACA,CACA,OACA,kBAEA,OACA,iBACA,CACA,WACA,kBAUA,cADA,wCACA,GAVA,EAEA,SADA,WACA,YACA,SACA,KAEA,SACA,CAKA,CACA,qBACA,QACA,eACA,gBACA,QAGA,GAGA,+BACA,CACA,CACA,eACA,KACA,kBAIA,SAGA,IACA,cACA,gBACa,EACb,wBACA,IAMA,OALA,cACA,YAAgC,WAAkB,IAClD,WAEA,CAAa,EACb,YACA,CACA,CACA,aACA,iBACA,CACA,CAsBA,eACA,MACA,IACA,eACA,CACA,SACA,WACA,QACA,KACA,EAGA,IAEA,CAwBA,SAAS,GAAM,GACf,cADe,CACf,CACA,YAEA,gCACA,OACA,GAEA,YAEA,CACA,iBACA,QACA,WACA,sBACA,iBACA,aACA,EAGA,OAEA,CAOA,eACA,2CACA,OACA,EAGA,YAEA,CAkBA,iBACA,QACA,CACA,SACA,qBACA,cACA,gBACA,kBACA,gBACA,CACA,CACA,YACA,qBACA,kBACA,EAGA,KAEA,CACA,cACA,MACA,UAEA,SAKA,gBACA,YACA,CANA,yBACA,6BACA,iCACA,qCAIA,qBAMA,uBACA,WACA,UAGA,CAEA,CAZA,UACA,UAYA,qBAaA,OAZA,UACA,UACA,8BACA,0BACA,kCACA,uCACA,6CACA,0CACA,0CACA,sCACA,+CACA,IAEA,CACA,iBACA,aACA,IAEA,QAFA,SACA,YAEA,iCACA,CACA,+BAA6C,MAAkB,CAC/D,CACA,mBACA,QACA,eACA,eACA,YAAoB,IAAS,KAC7B,WACA,iCACA,CAEA,OADA,QACA,CACA,CACA,mBACA,mBACA,SACA,KAGA,KADA,EACA,EACA,CACA,qBACA,YACA,aAGA,qBAFA,YAOA,uBACA,gBACA,YAEA,yBAaA,OAZA,aACA,QACA,eACA,aAOA,OALA,EADA,sBACA,KACA,GACA,YACA,OACA,CAAS,CAET,CAAK,CACL,IAEA,iBACA,SACA,WACA,YAAoB,IAAS,KAC7B,WACA,YACA,wBAEA,CACA,wBACA,CAkBA,kBACA,WACA,mBACA,OACA,YACA,SACA,6BACA,EACA,SACA,oBACA,0BACA,sCACA,kBACA,CAEA,SACA,oBACA,+CACA,eACA,CAEA,QACA,CACA,mBACA,mBACA,SACA,KAGA,OADA,EAEA,CAQA,SACA,gBAQA,KACA,WACA,cACA,eACA,eACA,kBACA,gBACA,eACA,uBAKA,2BACA,wBACA,6BAEA,CAqBA,eACA,MACA,SAEA,CACA,iBAMA,OALA,cACA,gBAEA,OADA,aACA,CACA,CAEA,CACA,iBAMA,OALA,cACA,gBAEA,OADA,aACA,CACA,CAEA,CACA,iBAMA,OALA,cACA,gBAEA,OADA,aACA,0BACA,CAEA,CACA,eA+BA,OA9BA,cACA,MA2BA,MAFA,CAnBA,EALA,oBAIA,iEACA,IAGA,IAIA,oBACA,YAGA,oBACA,UAGA,GAIA,qBACA,kCACA,CACA,CAEA,CACA,eACA,YASA,OARA,cACA,aAKA,OAJA,qBACA,cAEA,kCACA,CACA,CAEA,CACA,mBAEA,QADA,kBACA,oBACA,QACA,0BACA,wBAEA,OADA,qBACA,CACA,CACA,uBACA,QACA,UACA,YAGA,oBAEA,eACA,gBAEA,GACA,gBAEA,GACA,iBAGA,QADA,wBACA,oBACA,QACA,0BACA,+BAGA,OAFA,cACA,qBACA,CACA,CAcA,mBAEA,QADA,kBACA,oBACA,QACA,0BACA,wBAEA,OADA,qBACA,CACA,CACA,qBAEA,QADA,kBACA,oBACA,UACA,UACA,GAAsB,kCAAmC,gBACzD,0BACA,wBAIA,OAHA,YACA,SACA,qBACA,CACA,CAYA,iBACA,yBACA,aACA,0BACA,CACA,mBACA,sBAA0C,IAM1C,OALA,kBACA,gBACA,eACA,2BAEA,CACA,CAIA,uBACA,8BACA,GACA,oCACA,EAQA,EAPA,WACA,SACA,YAAwB,IAAO,IAC/B,qCAEA,QACA,GAEA,uCAAkD,aAClD,gBAEA,OACA,EADA,4DADA,QAMA,SACA,EANA,qBASA,cACA,WACA,kBACA,oBACA,YACA,UAEA,OAAwB,iBACxB,0BACA,SACA,uBACA,wBAKA,OAJA,cACA,YACA,sBACA,qBACA,CACA,CAQA,SACA,qBACA,eACA,aACA,mBACA,qBACA,CACA,CACA,iBACA,WACA,IACA,6CACA,CACA,SACA,MACA,CACA,oBAEA,OADA,2BACA,CACA,CACA,uBACA,8BACA,YACA,GAAwB,iBACxB,0BACA,SACA,GACA,qCACA,gCACA,yCAAkD,SAAY,EAC9D,kDACA,kCAA2C,cAC3C,EACA,UAcA,aAZA,gBAEA,EADA,MAEA,IACA,0CACA,CACA,SACA,MACA,CAEA,OADA,SACA,CACA,EAZA,sBAkBA,OAJA,cACA,YACA,SACA,qBACA,CACA,CAIA,qBACA,OAAsB,iCAoBtB,WAFA,OAjBA,YACA,+BACA,OACA,IACA,oDACA,CACA,SACA,MACA,CACA,GAEA,OAEA,gBAEA,OADA,cACA,8BACA,EAEA,sBAIA,OAFA,YACA,qBACA,CACA,CAKA,OAAoC,KAUpC,6BAGA,kBASA,GARA,GACA,oBACA,kBAGA,YACA,kBAEA,mBACA,UAEA,wBACA,IACA,KACA,kBAEA,gBACA,MACA,KAUA,GACA,wBATA,EADA,MACA,WAEA,MACA,mBAGA,SAIA,0BAAmC,UAAgB,GAEnD,eACA,YACA,UAqBA,eAFA,OAjBA,kBAQA,EAHA,+BACA,cACA,WAQA,OALA,EADA,YACA,aAGA,KAEA,yBACA,EAEA,sBAMA,OAJA,YACA,sBACA,2BACA,qBACA,CACA,CA0CA,QAEA,kBAEA,gBAEA,kBAEA,oBAEA,aACA,EACA,eACA,UACA,cACA,cACA,gBACA,sBACA,SACA,qBACA,UACA,sBACA,WACA,2BAEA,gBAKA,CAkBA,SACA,mBAEA,GADA,uBAEA,YACA,4BACA,mCAEA,CACA,OACA,kBACA,mBACA,wBACA,CACA,CACA,CAwBA,SAAS,GAAK,GACd,aADc,EAGd,mCACA,CACA,CAmBA,WAKA,UACA,cACA,cACA,6BACA,eACA,2BACA,kCACA,wCACA,wBACA,GACA,CAAa,EACb,wCACA,gCACA,GACA,CAAa,EACb,uCACA,GACA,CAAa,CACb,CAAS,CACT,CACA,cACA,cACA,yCAIA,GAFA,cACA,uBACA,WACA,eACA,qBACA,8CAUA,OANA,WACA,kBAGA,iBAEA,kBAEA,eACA,eACA,iDAEA,uBAEA,YACA,eACA,8CAEA,IACA,wBAEA,SACA,SACA,CACA,CACA,cACA,eACA,gDAEA,0BAEA,eACA,eACA,iDAEA,4BAGA,QACA,iBACA,CACA,qBACA,qCACA,CACA,6BACA,wBACA,+CAEA,CACA,gCACA,wBACA,kDAEA,CACA,CACA,oBACA,UACA,6BACA,CACA,CACA,cACA,qBACA,CACA,iBAAiC,KACjC,UACA,CAFiC,GAEjC,GAF8C,EAE9C,2BACA,CACA,CAIA,iBAAgC,KAChC,UACA,OAF6C,EAE7C,oBACA,CACA,CA0hBA,SACA,iBACA,gBACA,eACA,iBAGA,sCAEA,CAMA,WACA,4DAEA,aACA,kBACA,CAIA,WACA,sCACA,oCACA,CAIA,aACA,6BAKA,eACA,2BAMA,WACA,8BACA,CAIA,cACA,qBAMA,aACA,MAAwB,GAAM,qBAC9B,YACA,YAEA,qCACA,8BACA,CAIA,gBACA,4BACA,UAEA,CACA,CAsCA,mBACA,8BACA,oDACA,iBACA,4BACA,QACA,EACA,WACA,KACA,GAEA,CAmGA,iBACA,SACA,+BACA,uBACA,EACA,kBAGA,YACA,2BACA,8BACA,4CACA,CAwBA,iBACA,iCACA,uCACA,4CACA,CAOA,eACA,iCACA,qCACA,iBACA,4BACA,SACA,YACA,UAEA,QACA,CAAK,CACL,CAsBA,iBACA,6BACA,8BACA,0BACA,CAkBA,eACA,+BACA,CAIA,iBACA,kBACA,CAKA,iBACA,oBACA,QACA,mBACA,UAEA,iCACA,QACA,QAGA,CAEA,QAGA,WACA,QAGA,CAGA,CACA,iBACA,eASA,eARA,mBACA,cAGA,oFAMA,CACA,iBACA,iCACA,QACA,KAEA,yBACA,CACA,sBAAmE,EACnE,UAAsB,EAAK,GAAG,EAAK,EACnC,mBACA,IAAY,iBAAgB,EAC5B,GACA,sBACA,mBACA,EACkB,QAAmB,4BAErC,CAOA,SACA,YAIA,IAIA,EAIA,KACA,WACA,qBACA,yBACA,YACA,wBACA,kBAMA,aACA,uBACA,iBACA,iBACA,8BACA,2BACA,uBACA,QACA,gDAGA,4CAEA,CAKA,WACA,kBAEA,YACA,aACA,gBACA,+CAGA,mCAEA,CAIA,yBACA,gCAEA,0BACA,SACA,EACA,4BACA,0BACA,CAKA,4BACA,mCAEA,6BACA,SACA,EACA,4BACA,6BACA,CACA,sBACA,2BACA,+BAEA,uCAAuD,YAAgB,EACvE,MACA,yBACA,YACA,qBAGA,WACA,CACA,0BACA,2CAA+D,YAAgB,SAC/E,EAMA,CALA,oBAKA,MAEA,IACA,CAIA,UAMA,OALA,gBACA,iBACA,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","sources":["webpack://_N_E/./node_modules/@firebase/util/dist/index.esm2017.js?0fb0","webpack://_N_E/./node_modules/dayjs/dayjs.min.js?015e","webpack://_N_E/./node_modules/dayjs/plugin/weekOfYear.js?4054","webpack://_N_E/./node_modules/next/dist/api/navigation.js","webpack://_N_E/./node_modules/next/dist/compiled/buffer/index.js?cc32","webpack://_N_E/./node_modules/next/dist/compiled/events/events.js?e481","webpack://_N_E/./node_modules/next/dist/compiled/stream-browserify/index.js?f4b8","webpack://_N_E/./node_modules/next/dist/compiled/string_decoder/string_decoder.js?9db5","webpack://_N_E/./node_modules/next/dist/compiled/util/util.js?c702","webpack://_N_E/./node_modules/next/dist/compiled/vm-browserify/index.js?b2fb","webpack://_N_E/./node_modules/@firebase/logger/dist/esm/index.esm2017.js?c26f","webpack://_N_E/./node_modules/idb/build/wrap-idb-value.js?12b7","webpack://_N_E/./node_modules/idb/build/index.js?e924","webpack://_N_E/./node_modules/@firebase/app/dist/esm/index.esm2017.js?4ba6","webpack://_N_E/./node_modules/@firebase/component/dist/esm/index.esm2017.js?53c0","webpack://_N_E/./node_modules/firebase/app/dist/esm/index.esm.js?d76c","webpack://_N_E/./node_modules/@firebase/storage/dist/index.esm2017.js?3312","webpack://_N_E/./node_modules/firebase/storage/dist/esm/index.esm.js?de24","webpack://_N_E/./node_modules/lodash-es/_listCacheClear.js","webpack://_N_E/./node_modules/lodash-es/_assocIndexOf.js","webpack://_N_E/./node_modules/lodash-es/_listCacheDelete.js","webpack://_N_E/./node_modules/lodash-es/_listCacheGet.js","webpack://_N_E/./node_modules/lodash-es/_listCacheHas.js","webpack://_N_E/./node_modules/lodash-es/_listCacheSet.js","webpack://_N_E/./node_modules/lodash-es/_ListCache.js","webpack://_N_E/./node_modules/lodash-es/_Map.js","webpack://_N_E/./node_modules/lodash-es/_nativeCreate.js","webpack://_N_E/./node_modules/lodash-es/_hashClear.js","webpack://_N_E/./node_modules/lodash-es/_hashDelete.js","webpack://_N_E/./node_modules/lodash-es/_hashGet.js","webpack://_N_E/./node_modules/lodash-es/_hashHas.js","webpack://_N_E/./node_modules/lodash-es/_hashSet.js","webpack://_N_E/./node_modules/lodash-es/_Hash.js","webpack://_N_E/./node_modules/lodash-es/_mapCacheClear.js","webpack://_N_E/./node_modules/lodash-es/_isKeyable.js","webpack://_N_E/./node_modules/lodash-es/_getMapData.js","webpack://_N_E/./node_modules/lodash-es/_mapCacheDelete.js","webpack://_N_E/./node_modules/lodash-es/_mapCacheGet.js","webpack://_N_E/./node_modules/lodash-es/_mapCacheHas.js","webpack://_N_E/./node_modules/lodash-es/_mapCacheSet.js","webpack://_N_E/./node_modules/lodash-es/_MapCache.js","webpack://_N_E/./node_modules/lodash-es/_stackClear.js","webpack://_N_E/./node_modules/lodash-es/_stackDelete.js","webpack://_N_E/./node_modules/lodash-es/_stackGet.js","webpack://_N_E/./node_modules/lodash-es/_stackHas.js","webpack://_N_E/./node_modules/lodash-es/_stackSet.js","webpack://_N_E/./node_modules/lodash-es/_Stack.js","webpack://_N_E/./node_modules/lodash-es/_Symbol.js","webpack://_N_E/./node_modules/lodash-es/_Uint8Array.js","webpack://_N_E/./node_modules/lodash-es/_baseTimes.js","webpack://_N_E/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://_N_E/./node_modules/lodash-es/_arrayPush.js","webpack://_N_E/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://_N_E/./node_modules/lodash-es/_getRawTag.js","webpack://_N_E/./node_modules/lodash-es/_objectToString.js","webpack://_N_E/./node_modules/lodash-es/_baseGetTag.js","webpack://_N_E/./node_modules/lodash-es/_baseUnary.js","webpack://_N_E/./node_modules/lodash-es/_freeGlobal.js","webpack://_N_E/./node_modules/lodash-es/_getAllKeys.js","webpack://_N_E/./node_modules/lodash-es/_coreJsData.js","webpack://_N_E/./node_modules/lodash-es/_isMasked.js","webpack://_N_E/./node_modules/lodash-es/_baseIsNative.js","webpack://_N_E/./node_modules/lodash-es/_getValue.js","webpack://_N_E/./node_modules/lodash-es/_getNative.js","webpack://_N_E/./node_modules/lodash-es/_arrayFilter.js","webpack://_N_E/./node_modules/lodash-es/_getSymbols.js","webpack://_N_E/./node_modules/lodash-es/_DataView.js","webpack://_N_E/./node_modules/lodash-es/_Promise.js","webpack://_N_E/./node_modules/lodash-es/_Set.js","webpack://_N_E/./node_modules/lodash-es/_WeakMap.js","webpack://_N_E/./node_modules/lodash-es/_getTag.js","webpack://_N_E/./node_modules/lodash-es/_isIndex.js","webpack://_N_E/./node_modules/lodash-es/_isPrototype.js","webpack://_N_E/./node_modules/lodash-es/_nodeUtil.js","webpack://_N_E/./node_modules/lodash-es/_overArg.js","webpack://_N_E/./node_modules/lodash-es/_root.js","webpack://_N_E/./node_modules/lodash-es/_toSource.js","webpack://_N_E/./node_modules/lodash-es/eq.js","webpack://_N_E/./node_modules/lodash-es/_baseIsArguments.js","webpack://_N_E/./node_modules/lodash-es/isArguments.js","webpack://_N_E/./node_modules/lodash-es/isArray.js","webpack://_N_E/./node_modules/lodash-es/isArrayLike.js","webpack://_N_E/./node_modules/lodash-es/stubFalse.js","webpack://_N_E/./node_modules/lodash-es/isBuffer.js","webpack://_N_E/./node_modules/lodash-es/_setCacheAdd.js","webpack://_N_E/./node_modules/lodash-es/_setCacheHas.js","webpack://_N_E/./node_modules/lodash-es/_SetCache.js","webpack://_N_E/./node_modules/lodash-es/_arraySome.js","webpack://_N_E/./node_modules/lodash-es/_cacheHas.js","webpack://_N_E/./node_modules/lodash-es/_equalArrays.js","webpack://_N_E/./node_modules/lodash-es/_mapToArray.js","webpack://_N_E/./node_modules/lodash-es/_setToArray.js","webpack://_N_E/./node_modules/lodash-es/_equalByTag.js","webpack://_N_E/./node_modules/lodash-es/_equalObjects.js","webpack://_N_E/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://_N_E/./node_modules/lodash-es/_baseIsEqual.js","webpack://_N_E/./node_modules/lodash-es/isEqual.js","webpack://_N_E/./node_modules/lodash-es/isFunction.js","webpack://_N_E/./node_modules/lodash-es/isLength.js","webpack://_N_E/./node_modules/lodash-es/isObject.js","webpack://_N_E/./node_modules/lodash-es/isObjectLike.js","webpack://_N_E/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://_N_E/./node_modules/lodash-es/isTypedArray.js","webpack://_N_E/./node_modules/lodash-es/_nativeKeys.js","webpack://_N_E/./node_modules/lodash-es/_baseKeys.js","webpack://_N_E/./node_modules/lodash-es/keys.js","webpack://_N_E/./node_modules/lodash-es/stubArray.js","webpack://_N_E/./node_modules/react-icons/lib/iconsManifest.mjs","webpack://_N_E/./node_modules/react-icons/lib/iconContext.mjs","webpack://_N_E/./node_modules/react-icons/lib/iconBase.mjs","webpack://_N_E/./node_modules/react-icons/lib/index.mjs"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw new DecodeBase64StringError();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * An error encountered while decoding base64 string.\r\n */\r\nclass DecodeBase64StringError extends Error {\r\n constructor() {\r\n super(...arguments);\r\n this.name = 'DecodeBase64StringError';\r\n }\r\n}\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n * @public\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\r\n/**\r\n * Attempt to read defaults from a JSON string provided to\r\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\r\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\r\n * The dots are in parens because certain compilers (Vite?) cannot\r\n * handle seeing that variable in comments.\r\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\r\n */\r\nconst getDefaultsFromEnvVariable = () => {\r\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\r\n return;\r\n }\r\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\r\n if (defaultsJsonString) {\r\n return JSON.parse(defaultsJsonString);\r\n }\r\n};\r\nconst getDefaultsFromCookie = () => {\r\n if (typeof document === 'undefined') {\r\n return;\r\n }\r\n let match;\r\n try {\r\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\r\n }\r\n catch (e) {\r\n // Some environments such as Angular Universal SSR have a\r\n // `document` object but error on accessing `document.cookie`.\r\n return;\r\n }\r\n const decoded = match && base64Decode(match[1]);\r\n return decoded && JSON.parse(decoded);\r\n};\r\n/**\r\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\r\n * (1) if such an object exists as a property of `globalThis`\r\n * (2) if such an object was provided on a shell environment variable\r\n * (3) if such an object exists in a cookie\r\n * @public\r\n */\r\nconst getDefaults = () => {\r\n try {\r\n return (getDefaultsFromGlobal() ||\r\n getDefaultsFromEnvVariable() ||\r\n getDefaultsFromCookie());\r\n }\r\n catch (e) {\r\n /**\r\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\r\n * to any environment case we have not accounted for. Log to\r\n * info instead of swallowing so we can find these unknown cases\r\n * and add paths for them if needed.\r\n */\r\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\r\n return;\r\n }\r\n};\r\n/**\r\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHost = (productName) => { var _a, _b; return (_b = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.emulatorHosts) === null || _b === void 0 ? void 0 : _b[productName]; };\r\n/**\r\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\r\n const host = getDefaultEmulatorHost(productName);\r\n if (!host) {\r\n return undefined;\r\n }\r\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\r\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\r\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\r\n }\r\n // eslint-disable-next-line no-restricted-globals\r\n const port = parseInt(host.substring(separatorIndex + 1), 10);\r\n if (host[0] === '[') {\r\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\r\n return [host.substring(1, separatorIndex - 1), port];\r\n }\r\n else {\r\n return [host.substring(0, separatorIndex), port];\r\n }\r\n};\r\n/**\r\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\r\n * @public\r\n */\r\nconst getDefaultAppConfig = () => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.config; };\r\n/**\r\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\r\n * prefixed by \"_\")\r\n * @public\r\n */\r\nconst getExperimentalSetting = (name) => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a[`_${name}`]; };\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promisified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected or specified.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n var _a;\r\n const forceEnvironment = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.forceEnvironment;\r\n if (forceEnvironment === 'node') {\r\n return true;\r\n }\r\n else if (forceEnvironment === 'browser') {\r\n return false;\r\n }\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment.\r\n * Note: This will return true for certain test frameworks that are incompletely\r\n * mimicking a browser, and should not lead to assuming all browser APIs are\r\n * available.\r\n */\r\nfunction isBrowser() {\r\n return typeof window !== 'undefined' || isWebWorker();\r\n}\r\n/**\r\n * Detect Web Worker context.\r\n */\r\nfunction isWebWorker() {\r\n return (typeof WorkerGlobalScope !== 'undefined' &&\r\n typeof self !== 'undefined' &&\r\n self instanceof WorkerGlobalScope);\r\n}\r\n/**\r\n * Detect Cloudflare Worker context.\r\n */\r\nfunction isCloudflareWorker() {\r\n return (typeof navigator !== 'undefined' &&\r\n navigator.userAgent === 'Cloudflare-Workers');\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n !!navigator.userAgent &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n try {\r\n return typeof indexedDB === 'object';\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // TypeScript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data JavaScript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\r\n * @internal\r\n */\r\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\r\n const deferredPromise = new Deferred();\r\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\r\n promise.then(deferredPromise.resolve, deferredPromise.reject);\r\n return deferredPromise.promise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber synchronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in JavaScript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n * Generates a new uuid.\r\n * @public\r\n */\r\nconst uuidv4 = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *

Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *

Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, DecodeBase64StringError, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getDefaults, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isCloudflareWorker, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, isWebWorker, issuedAtTime, jsonEval, map, ordinal, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, uuidv4, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","export * from '../client/components/navigation';\n\n//# sourceMappingURL=navigation.js.map","(function(){var e={675:function(e,r){\"use strict\";r.byteLength=byteLength;r.toByteArray=toByteArray;r.fromByteArray=fromByteArray;var t=[];var f=[];var n=typeof Uint8Array!==\"undefined\"?Uint8Array:Array;var i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";for(var o=0,u=i.length;o0){throw new Error(\"Invalid string. Length must be a multiple of 4\")}var t=e.indexOf(\"=\");if(t===-1)t=r;var f=t===r?0:4-t%4;return[t,f]}function byteLength(e){var r=getLens(e);var t=r[0];var f=r[1];return(t+f)*3/4-f}function _byteLength(e,r,t){return(r+t)*3/4-t}function toByteArray(e){var r;var t=getLens(e);var i=t[0];var o=t[1];var u=new n(_byteLength(e,i,o));var a=0;var s=o>0?i-4:i;var h;for(h=0;h>16&255;u[a++]=r>>8&255;u[a++]=r&255}if(o===2){r=f[e.charCodeAt(h)]<<2|f[e.charCodeAt(h+1)]>>4;u[a++]=r&255}if(o===1){r=f[e.charCodeAt(h)]<<10|f[e.charCodeAt(h+1)]<<4|f[e.charCodeAt(h+2)]>>2;u[a++]=r>>8&255;u[a++]=r&255}return u}function tripletToBase64(e){return t[e>>18&63]+t[e>>12&63]+t[e>>6&63]+t[e&63]}function encodeChunk(e,r,t){var f;var n=[];for(var i=r;ia?a:u+o))}if(n===1){r=e[f-1];i.push(t[r>>2]+t[r<<4&63]+\"==\")}else if(n===2){r=(e[f-2]<<8)+e[f-1];i.push(t[r>>10]+t[r>>4&63]+t[r<<2&63]+\"=\")}return i.join(\"\")}},72:function(e,r,t){\"use strict\";\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */var f=t(675);var n=t(783);var i=typeof Symbol===\"function\"&&typeof Symbol.for===\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null;r.Buffer=Buffer;r.SlowBuffer=SlowBuffer;r.INSPECT_MAX_BYTES=50;var o=2147483647;r.kMaxLength=o;Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!==\"undefined\"&&typeof console.error===\"function\"){console.error(\"This browser lacks typed array (Uint8Array) support which is required by \"+\"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\")}function typedArraySupport(){try{var e=new Uint8Array(1);var r={foo:function(){return 42}};Object.setPrototypeOf(r,Uint8Array.prototype);Object.setPrototypeOf(e,r);return e.foo()===42}catch(e){return false}}Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.buffer}});Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset}});function createBuffer(e){if(e>o){throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}var r=new Uint8Array(e);Object.setPrototypeOf(r,Buffer.prototype);return r}function Buffer(e,r,t){if(typeof e===\"number\"){if(typeof r===\"string\"){throw new TypeError('The \"string\" argument must be of type string. Received type number')}return allocUnsafe(e)}return from(e,r,t)}Buffer.poolSize=8192;function from(e,r,t){if(typeof e===\"string\"){return fromString(e,r)}if(ArrayBuffer.isView(e)){return fromArrayLike(e)}if(e==null){throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \"+\"or Array-like Object. Received type \"+typeof e)}if(isInstance(e,ArrayBuffer)||e&&isInstance(e.buffer,ArrayBuffer)){return fromArrayBuffer(e,r,t)}if(typeof SharedArrayBuffer!==\"undefined\"&&(isInstance(e,SharedArrayBuffer)||e&&isInstance(e.buffer,SharedArrayBuffer))){return fromArrayBuffer(e,r,t)}if(typeof e===\"number\"){throw new TypeError('The \"value\" argument must not be of type number. Received type number')}var f=e.valueOf&&e.valueOf();if(f!=null&&f!==e){return Buffer.from(f,r,t)}var n=fromObject(e);if(n)return n;if(typeof Symbol!==\"undefined\"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]===\"function\"){return Buffer.from(e[Symbol.toPrimitive](\"string\"),r,t)}throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \"+\"or Array-like Object. Received type \"+typeof e)}Buffer.from=function(e,r,t){return from(e,r,t)};Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(e){if(typeof e!==\"number\"){throw new TypeError('\"size\" argument must be of type number')}else if(e<0){throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}}function alloc(e,r,t){assertSize(e);if(e<=0){return createBuffer(e)}if(r!==undefined){return typeof t===\"string\"?createBuffer(e).fill(r,t):createBuffer(e).fill(r)}return createBuffer(e)}Buffer.alloc=function(e,r,t){return alloc(e,r,t)};function allocUnsafe(e){assertSize(e);return createBuffer(e<0?0:checked(e)|0)}Buffer.allocUnsafe=function(e){return allocUnsafe(e)};Buffer.allocUnsafeSlow=function(e){return allocUnsafe(e)};function fromString(e,r){if(typeof r!==\"string\"||r===\"\"){r=\"utf8\"}if(!Buffer.isEncoding(r)){throw new TypeError(\"Unknown encoding: \"+r)}var t=byteLength(e,r)|0;var f=createBuffer(t);var n=f.write(e,r);if(n!==t){f=f.slice(0,n)}return f}function fromArrayLike(e){var r=e.length<0?0:checked(e.length)|0;var t=createBuffer(r);for(var f=0;f=o){throw new RangeError(\"Attempt to allocate Buffer larger than maximum \"+\"size: 0x\"+o.toString(16)+\" bytes\")}return e|0}function SlowBuffer(e){if(+e!=e){e=0}return Buffer.alloc(+e)}Buffer.isBuffer=function isBuffer(e){return e!=null&&e._isBuffer===true&&e!==Buffer.prototype};Buffer.compare=function compare(e,r){if(isInstance(e,Uint8Array))e=Buffer.from(e,e.offset,e.byteLength);if(isInstance(r,Uint8Array))r=Buffer.from(r,r.offset,r.byteLength);if(!Buffer.isBuffer(e)||!Buffer.isBuffer(r)){throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array')}if(e===r)return 0;var t=e.length;var f=r.length;for(var n=0,i=Math.min(t,f);n2&&arguments[2]===true;if(!f&&t===0)return 0;var n=false;for(;;){switch(r){case\"ascii\":case\"latin1\":case\"binary\":return t;case\"utf8\":case\"utf-8\":return utf8ToBytes(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return t*2;case\"hex\":return t>>>1;case\"base64\":return base64ToBytes(e).length;default:if(n){return f?-1:utf8ToBytes(e).length}r=(\"\"+r).toLowerCase();n=true}}}Buffer.byteLength=byteLength;function slowToString(e,r,t){var f=false;if(r===undefined||r<0){r=0}if(r>this.length){return\"\"}if(t===undefined||t>this.length){t=this.length}if(t<=0){return\"\"}t>>>=0;r>>>=0;if(t<=r){return\"\"}if(!e)e=\"utf8\";while(true){switch(e){case\"hex\":return hexSlice(this,r,t);case\"utf8\":case\"utf-8\":return utf8Slice(this,r,t);case\"ascii\":return asciiSlice(this,r,t);case\"latin1\":case\"binary\":return latin1Slice(this,r,t);case\"base64\":return base64Slice(this,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,r,t);default:if(f)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase();f=true}}}Buffer.prototype._isBuffer=true;function swap(e,r,t){var f=e[r];e[r]=e[t];e[t]=f}Buffer.prototype.swap16=function swap16(){var e=this.length;if(e%2!==0){throw new RangeError(\"Buffer size must be a multiple of 16-bits\")}for(var r=0;rt)e+=\" ... \";return\"\"};if(i){Buffer.prototype[i]=Buffer.prototype.inspect}Buffer.prototype.compare=function compare(e,r,t,f,n){if(isInstance(e,Uint8Array)){e=Buffer.from(e,e.offset,e.byteLength)}if(!Buffer.isBuffer(e)){throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. '+\"Received type \"+typeof e)}if(r===undefined){r=0}if(t===undefined){t=e?e.length:0}if(f===undefined){f=0}if(n===undefined){n=this.length}if(r<0||t>e.length||f<0||n>this.length){throw new RangeError(\"out of range index\")}if(f>=n&&r>=t){return 0}if(f>=n){return-1}if(r>=t){return 1}r>>>=0;t>>>=0;f>>>=0;n>>>=0;if(this===e)return 0;var i=n-f;var o=t-r;var u=Math.min(i,o);var a=this.slice(f,n);var s=e.slice(r,t);for(var h=0;h2147483647){t=2147483647}else if(t<-2147483648){t=-2147483648}t=+t;if(numberIsNaN(t)){t=n?0:e.length-1}if(t<0)t=e.length+t;if(t>=e.length){if(n)return-1;else t=e.length-1}else if(t<0){if(n)t=0;else return-1}if(typeof r===\"string\"){r=Buffer.from(r,f)}if(Buffer.isBuffer(r)){if(r.length===0){return-1}return arrayIndexOf(e,r,t,f,n)}else if(typeof r===\"number\"){r=r&255;if(typeof Uint8Array.prototype.indexOf===\"function\"){if(n){return Uint8Array.prototype.indexOf.call(e,r,t)}else{return Uint8Array.prototype.lastIndexOf.call(e,r,t)}}return arrayIndexOf(e,[r],t,f,n)}throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(e,r,t,f,n){var i=1;var o=e.length;var u=r.length;if(f!==undefined){f=String(f).toLowerCase();if(f===\"ucs2\"||f===\"ucs-2\"||f===\"utf16le\"||f===\"utf-16le\"){if(e.length<2||r.length<2){return-1}i=2;o/=2;u/=2;t/=2}}function read(e,r){if(i===1){return e[r]}else{return e.readUInt16BE(r*i)}}var a;if(n){var s=-1;for(a=t;ao)t=o-u;for(a=t;a>=0;a--){var h=true;for(var c=0;cn){f=n}}var i=r.length;if(f>i/2){f=i/2}for(var o=0;o>>0;if(isFinite(t)){t=t>>>0;if(f===undefined)f=\"utf8\"}else{f=t;t=undefined}}else{throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\")}var n=this.length-r;if(t===undefined||t>n)t=n;if(e.length>0&&(t<0||r<0)||r>this.length){throw new RangeError(\"Attempt to write outside buffer bounds\")}if(!f)f=\"utf8\";var i=false;for(;;){switch(f){case\"hex\":return hexWrite(this,e,r,t);case\"utf8\":case\"utf-8\":return utf8Write(this,e,r,t);case\"ascii\":return asciiWrite(this,e,r,t);case\"latin1\":case\"binary\":return latin1Write(this,e,r,t);case\"base64\":return base64Write(this,e,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,e,r,t);default:if(i)throw new TypeError(\"Unknown encoding: \"+f);f=(\"\"+f).toLowerCase();i=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(e,r,t){if(r===0&&t===e.length){return f.fromByteArray(e)}else{return f.fromByteArray(e.slice(r,t))}}function utf8Slice(e,r,t){t=Math.min(e.length,t);var f=[];var n=r;while(n239?4:i>223?3:i>191?2:1;if(n+u<=t){var a,s,h,c;switch(u){case 1:if(i<128){o=i}break;case 2:a=e[n+1];if((a&192)===128){c=(i&31)<<6|a&63;if(c>127){o=c}}break;case 3:a=e[n+1];s=e[n+2];if((a&192)===128&&(s&192)===128){c=(i&15)<<12|(a&63)<<6|s&63;if(c>2047&&(c<55296||c>57343)){o=c}}break;case 4:a=e[n+1];s=e[n+2];h=e[n+3];if((a&192)===128&&(s&192)===128&&(h&192)===128){c=(i&15)<<18|(a&63)<<12|(s&63)<<6|h&63;if(c>65535&&c<1114112){o=c}}}}if(o===null){o=65533;u=1}else if(o>65535){o-=65536;f.push(o>>>10&1023|55296);o=56320|o&1023}f.push(o);n+=u}return decodeCodePointsArray(f)}var u=4096;function decodeCodePointsArray(e){var r=e.length;if(r<=u){return String.fromCharCode.apply(String,e)}var t=\"\";var f=0;while(ff)t=f;var n=\"\";for(var i=r;it){e=t}if(r<0){r+=t;if(r<0)r=0}else if(r>t){r=t}if(rt)throw new RangeError(\"Trying to access beyond buffer length\")}Buffer.prototype.readUIntLE=function readUIntLE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=this[e];var n=1;var i=0;while(++i>>0;r=r>>>0;if(!t){checkOffset(e,r,this.length)}var f=this[e+--r];var n=1;while(r>0&&(n*=256)){f+=this[e+--r]*n}return f};Buffer.prototype.readUInt8=function readUInt8(e,r){e=e>>>0;if(!r)checkOffset(e,1,this.length);return this[e]};Buffer.prototype.readUInt16LE=function readUInt16LE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);return this[e]|this[e+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);return this[e]<<8|this[e+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};Buffer.prototype.readIntLE=function readIntLE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=this[e];var n=1;var i=0;while(++i=n)f-=Math.pow(2,8*r);return f};Buffer.prototype.readIntBE=function readIntBE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=r;var n=1;var i=this[e+--f];while(f>0&&(n*=256)){i+=this[e+--f]*n}n*=128;if(i>=n)i-=Math.pow(2,8*r);return i};Buffer.prototype.readInt8=function readInt8(e,r){e=e>>>0;if(!r)checkOffset(e,1,this.length);if(!(this[e]&128))return this[e];return(255-this[e]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);var t=this[e]|this[e+1]<<8;return t&32768?t|4294901760:t};Buffer.prototype.readInt16BE=function readInt16BE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);var t=this[e+1]|this[e]<<8;return t&32768?t|4294901760:t};Buffer.prototype.readInt32LE=function readInt32LE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};Buffer.prototype.readFloatLE=function readFloatLE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return n.read(this,e,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return n.read(this,e,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(e,r){e=e>>>0;if(!r)checkOffset(e,8,this.length);return n.read(this,e,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(e,r){e=e>>>0;if(!r)checkOffset(e,8,this.length);return n.read(this,e,false,52,8)};function checkInt(e,r,t,f,n,i){if(!Buffer.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>n||re.length)throw new RangeError(\"Index out of range\")}Buffer.prototype.writeUIntLE=function writeUIntLE(e,r,t,f){e=+e;r=r>>>0;t=t>>>0;if(!f){var n=Math.pow(2,8*t)-1;checkInt(this,e,r,t,n,0)}var i=1;var o=0;this[r]=e&255;while(++o>>0;t=t>>>0;if(!f){var n=Math.pow(2,8*t)-1;checkInt(this,e,r,t,n,0)}var i=t-1;var o=1;this[r+i]=e&255;while(--i>=0&&(o*=256)){this[r+i]=e/o&255}return r+t};Buffer.prototype.writeUInt8=function writeUInt8(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,1,255,0);this[r]=e&255;return r+1};Buffer.prototype.writeUInt16LE=function writeUInt16LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,65535,0);this[r]=e&255;this[r+1]=e>>>8;return r+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,65535,0);this[r]=e>>>8;this[r+1]=e&255;return r+2};Buffer.prototype.writeUInt32LE=function writeUInt32LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,4294967295,0);this[r+3]=e>>>24;this[r+2]=e>>>16;this[r+1]=e>>>8;this[r]=e&255;return r+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,4294967295,0);this[r]=e>>>24;this[r+1]=e>>>16;this[r+2]=e>>>8;this[r+3]=e&255;return r+4};Buffer.prototype.writeIntLE=function writeIntLE(e,r,t,f){e=+e;r=r>>>0;if(!f){var n=Math.pow(2,8*t-1);checkInt(this,e,r,t,n-1,-n)}var i=0;var o=1;var u=0;this[r]=e&255;while(++i>0)-u&255}return r+t};Buffer.prototype.writeIntBE=function writeIntBE(e,r,t,f){e=+e;r=r>>>0;if(!f){var n=Math.pow(2,8*t-1);checkInt(this,e,r,t,n-1,-n)}var i=t-1;var o=1;var u=0;this[r+i]=e&255;while(--i>=0&&(o*=256)){if(e<0&&u===0&&this[r+i+1]!==0){u=1}this[r+i]=(e/o>>0)-u&255}return r+t};Buffer.prototype.writeInt8=function writeInt8(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,1,127,-128);if(e<0)e=255+e+1;this[r]=e&255;return r+1};Buffer.prototype.writeInt16LE=function writeInt16LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,32767,-32768);this[r]=e&255;this[r+1]=e>>>8;return r+2};Buffer.prototype.writeInt16BE=function writeInt16BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,32767,-32768);this[r]=e>>>8;this[r+1]=e&255;return r+2};Buffer.prototype.writeInt32LE=function writeInt32LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,2147483647,-2147483648);this[r]=e&255;this[r+1]=e>>>8;this[r+2]=e>>>16;this[r+3]=e>>>24;return r+4};Buffer.prototype.writeInt32BE=function writeInt32BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,2147483647,-2147483648);if(e<0)e=4294967295+e+1;this[r]=e>>>24;this[r+1]=e>>>16;this[r+2]=e>>>8;this[r+3]=e&255;return r+4};function checkIEEE754(e,r,t,f,n,i){if(t+f>e.length)throw new RangeError(\"Index out of range\");if(t<0)throw new RangeError(\"Index out of range\")}function writeFloat(e,r,t,f,i){r=+r;t=t>>>0;if(!i){checkIEEE754(e,r,t,4,34028234663852886e22,-34028234663852886e22)}n.write(e,r,t,f,23,4);return t+4}Buffer.prototype.writeFloatLE=function writeFloatLE(e,r,t){return writeFloat(this,e,r,true,t)};Buffer.prototype.writeFloatBE=function writeFloatBE(e,r,t){return writeFloat(this,e,r,false,t)};function writeDouble(e,r,t,f,i){r=+r;t=t>>>0;if(!i){checkIEEE754(e,r,t,8,17976931348623157e292,-17976931348623157e292)}n.write(e,r,t,f,52,8);return t+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(e,r,t){return writeDouble(this,e,r,true,t)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(e,r,t){return writeDouble(this,e,r,false,t)};Buffer.prototype.copy=function copy(e,r,t,f){if(!Buffer.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(!t)t=0;if(!f&&f!==0)f=this.length;if(r>=e.length)r=e.length;if(!r)r=0;if(f>0&&f=this.length)throw new RangeError(\"Index out of range\");if(f<0)throw new RangeError(\"sourceEnd out of bounds\");if(f>this.length)f=this.length;if(e.length-r=0;--i){e[i+r]=this[i+t]}}else{Uint8Array.prototype.set.call(e,this.subarray(t,f),r)}return n};Buffer.prototype.fill=function fill(e,r,t,f){if(typeof e===\"string\"){if(typeof r===\"string\"){f=r;r=0;t=this.length}else if(typeof t===\"string\"){f=t;t=this.length}if(f!==undefined&&typeof f!==\"string\"){throw new TypeError(\"encoding must be a string\")}if(typeof f===\"string\"&&!Buffer.isEncoding(f)){throw new TypeError(\"Unknown encoding: \"+f)}if(e.length===1){var n=e.charCodeAt(0);if(f===\"utf8\"&&n<128||f===\"latin1\"){e=n}}}else if(typeof e===\"number\"){e=e&255}else if(typeof e===\"boolean\"){e=Number(e)}if(r<0||this.length>>0;t=t===undefined?this.length:t>>>0;if(!e)e=0;var i;if(typeof e===\"number\"){for(i=r;i55295&&t<57344){if(!n){if(t>56319){if((r-=3)>-1)i.push(239,191,189);continue}else if(o+1===f){if((r-=3)>-1)i.push(239,191,189);continue}n=t;continue}if(t<56320){if((r-=3)>-1)i.push(239,191,189);n=t;continue}t=(n-55296<<10|t-56320)+65536}else if(n){if((r-=3)>-1)i.push(239,191,189)}n=null;if(t<128){if((r-=1)<0)break;i.push(t)}else if(t<2048){if((r-=2)<0)break;i.push(t>>6|192,t&63|128)}else if(t<65536){if((r-=3)<0)break;i.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((r-=4)<0)break;i.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else{throw new Error(\"Invalid code point\")}}return i}function asciiToBytes(e){var r=[];for(var t=0;t>8;n=t%256;i.push(n);i.push(f)}return i}function base64ToBytes(e){return f.toByteArray(base64clean(e))}function blitBuffer(e,r,t,f){for(var n=0;n=r.length||n>=e.length)break;r[n+t]=e[n]}return n}function isInstance(e,r){return e instanceof r||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===r.name}function numberIsNaN(e){return e!==e}var s=function(){var e=\"0123456789abcdef\";var r=new Array(256);for(var t=0;t<16;++t){var f=t*16;for(var n=0;n<16;++n){r[f+n]=e[t]+e[n]}}return r}()},783:function(e,r){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nr.read=function(e,r,t,f,n){var i,o;var u=n*8-f-1;var a=(1<>1;var h=-7;var c=t?n-1:0;var l=t?-1:1;var p=e[r+c];c+=l;i=p&(1<<-h)-1;p>>=-h;h+=u;for(;h>0;i=i*256+e[r+c],c+=l,h-=8){}o=i&(1<<-h)-1;i>>=-h;h+=f;for(;h>0;o=o*256+e[r+c],c+=l,h-=8){}if(i===0){i=1-s}else if(i===a){return o?NaN:(p?-1:1)*Infinity}else{o=o+Math.pow(2,f);i=i-s}return(p?-1:1)*o*Math.pow(2,i-f)};r.write=function(e,r,t,f,n,i){var o,u,a;var s=i*8-n-1;var h=(1<>1;var l=n===23?Math.pow(2,-24)-Math.pow(2,-77):0;var p=f?0:i-1;var y=f?1:-1;var g=r<0||r===0&&1/r<0?1:0;r=Math.abs(r);if(isNaN(r)||r===Infinity){u=isNaN(r)?1:0;o=h}else{o=Math.floor(Math.log(r)/Math.LN2);if(r*(a=Math.pow(2,-o))<1){o--;a*=2}if(o+c>=1){r+=l/a}else{r+=l*Math.pow(2,1-c)}if(r*a>=2){o++;a/=2}if(o+c>=h){u=0;o=h}else if(o+c>=1){u=(r*a-1)*Math.pow(2,n);o=o+c}else{u=r*Math.pow(2,c-1)*Math.pow(2,n);o=0}}for(;n>=8;e[t+p]=u&255,p+=y,u/=256,n-=8){}o=o<0;e[t+p]=o&255,p+=y,o/=256,s-=8){}e[t+p-y]|=g*128}}};var r={};function __nccwpck_require__(t){var f=r[t];if(f!==undefined){return f.exports}var n=r[t]={exports:{}};var i=true;try{e[t](n,n.exports,__nccwpck_require__);i=false}finally{if(i)delete r[t]}return n.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(72);module.exports=t})();","(function(){\"use strict\";var e={864:function(e){var t=typeof Reflect===\"object\"?Reflect:null;var n=t&&typeof t.apply===\"function\"?t.apply:function ReflectApply(e,t,n){return Function.prototype.apply.call(e,t,n)};var r;if(t&&typeof t.ownKeys===\"function\"){r=t.ownKeys}else if(Object.getOwnPropertySymbols){r=function ReflectOwnKeys(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}}else{r=function ReflectOwnKeys(e){return Object.getOwnPropertyNames(e)}}function ProcessEmitWarning(e){if(console&&console.warn)console.warn(e)}var i=Number.isNaN||function NumberIsNaN(e){return e!==e};function EventEmitter(){EventEmitter.init.call(this)}e.exports=EventEmitter;e.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=undefined;var s=10;function checkListener(e){if(typeof e!==\"function\"){throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}}Object.defineProperty(EventEmitter,\"defaultMaxListeners\",{enumerable:true,get:function(){return s},set:function(e){if(typeof e!==\"number\"||e<0||i(e)){throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\")}s=e}});EventEmitter.init=function(){if(this._events===undefined||this._events===Object.getPrototypeOf(this)._events){this._events=Object.create(null);this._eventsCount=0}this._maxListeners=this._maxListeners||undefined};EventEmitter.prototype.setMaxListeners=function setMaxListeners(e){if(typeof e!==\"number\"||e<0||i(e)){throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\")}this._maxListeners=e;return this};function _getMaxListeners(e){if(e._maxListeners===undefined)return EventEmitter.defaultMaxListeners;return e._maxListeners}EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function emit(e){var t=[];for(var r=1;r0)o=t[0];if(o instanceof Error){throw o}var f=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));f.context=o;throw f}var u=s[e];if(u===undefined)return false;if(typeof u===\"function\"){n(u,this,t)}else{var a=u.length;var c=arrayClone(u,a);for(var r=0;r0&&o.length>i&&!o.warned){o.warned=true;var f=new Error(\"Possible EventEmitter memory leak detected. \"+o.length+\" \"+String(t)+\" listeners \"+\"added. Use emitter.setMaxListeners() to \"+\"increase limit\");f.name=\"MaxListenersExceededWarning\";f.emitter=e;f.type=t;f.count=o.length;ProcessEmitWarning(f)}}return e}EventEmitter.prototype.addListener=function addListener(e,t){return _addListener(this,e,t,false)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function prependListener(e,t){return _addListener(this,e,t,true)};function onceWrapper(){if(!this.fired){this.target.removeListener(this.type,this.wrapFn);this.fired=true;if(arguments.length===0)return this.listener.call(this.target);return this.listener.apply(this.target,arguments)}}function _onceWrap(e,t,n){var r={fired:false,wrapFn:undefined,target:e,type:t,listener:n};var i=onceWrapper.bind(r);i.listener=n;r.wrapFn=i;return i}EventEmitter.prototype.once=function once(e,t){checkListener(t);this.on(e,_onceWrap(this,e,t));return this};EventEmitter.prototype.prependOnceListener=function prependOnceListener(e,t){checkListener(t);this.prependListener(e,_onceWrap(this,e,t));return this};EventEmitter.prototype.removeListener=function removeListener(e,t){var n,r,i,s,o;checkListener(t);r=this._events;if(r===undefined)return this;n=r[e];if(n===undefined)return this;if(n===t||n.listener===t){if(--this._eventsCount===0)this._events=Object.create(null);else{delete r[e];if(r.removeListener)this.emit(\"removeListener\",e,n.listener||t)}}else if(typeof n!==\"function\"){i=-1;for(s=n.length-1;s>=0;s--){if(n[s]===t||n[s].listener===t){o=n[s].listener;i=s;break}}if(i<0)return this;if(i===0)n.shift();else{spliceOne(n,i)}if(n.length===1)r[e]=n[0];if(r.removeListener!==undefined)this.emit(\"removeListener\",e,o||t)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function removeAllListeners(e){var t,n,r;n=this._events;if(n===undefined)return this;if(n.removeListener===undefined){if(arguments.length===0){this._events=Object.create(null);this._eventsCount=0}else if(n[e]!==undefined){if(--this._eventsCount===0)this._events=Object.create(null);else delete n[e]}return this}if(arguments.length===0){var i=Object.keys(n);var s;for(r=0;r=0;r--){this.removeListener(e,t[r])}}return this};function _listeners(e,t,n){var r=e._events;if(r===undefined)return[];var i=r[t];if(i===undefined)return[];if(typeof i===\"function\")return n?[i.listener||i]:[i];return n?unwrapListeners(i):arrayClone(i,i.length)}EventEmitter.prototype.listeners=function listeners(e){return _listeners(this,e,true)};EventEmitter.prototype.rawListeners=function rawListeners(e){return _listeners(this,e,false)};EventEmitter.listenerCount=function(e,t){if(typeof e.listenerCount===\"function\"){return e.listenerCount(t)}else{return listenerCount.call(e,t)}};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(e){var t=this._events;if(t!==undefined){var n=t[e];if(typeof n===\"function\"){return 1}else if(n!==undefined){return n.length}}return 0}EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?r(this._events):[]};function arrayClone(e,t){var n=new Array(t);for(var r=0;rString(e)));if(r>2){return`one of ${t} ${e.slice(0,r-1).join(\", \")}, or `+e[r-1]}else if(r===2){return`one of ${t} ${e[0]} or ${e[1]}`}else{return`of ${t} ${e[0]}`}}else{return`of ${t} ${String(e)}`}}function startsWith(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function endsWith(e,t,r){if(r===undefined||r>e.length){r=e.length}return e.substring(r-t.length,r)===t}function includes(e,t,r){if(typeof r!==\"number\"){r=0}if(r+t.length>e.length){return false}else{return e.indexOf(t,r)!==-1}}createErrorType(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError);createErrorType(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){let n;if(typeof t===\"string\"&&startsWith(t,\"not \")){n=\"must not be\";t=t.replace(/^not /,\"\")}else{n=\"must be\"}let i;if(endsWith(e,\" argument\")){i=`The ${e} ${n} ${oneOf(t,\"type\")}`}else{const r=includes(e,\".\")?\"property\":\"argument\";i=`The \"${e}\" ${r} ${n} ${oneOf(t,\"type\")}`}i+=`. Received type ${typeof r}`;return i}),TypeError);createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"}));createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");createErrorType(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"}));createErrorType(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");createErrorType(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");createErrorType(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");createErrorType(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);createErrorType(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError);createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");e.exports.q=t},403:function(e,t,r){\"use strict\";var n=Object.keys||function(e){var t=[];for(var r in e){t.push(r)}return t};e.exports=Duplex;var i=r(709);var a=r(337);r(782)(Duplex,i);{var o=n(a.prototype);for(var s=0;s0){if(typeof t!==\"string\"&&!a.objectMode&&Object.getPrototypeOf(t)!==s.prototype){t=_uint8ArrayToBuffer(t)}if(n){if(a.endEmitted)R(e,new v);else addChunk(e,a,t,true)}else if(a.ended){R(e,new y)}else if(a.destroyed){return false}else{a.reading=false;if(a.decoder&&!r){t=a.decoder.write(t);if(a.objectMode||t.length!==0)addChunk(e,a,t,false);else maybeReadMore(e,a)}else{addChunk(e,a,t,false)}}}else if(!n){a.reading=false;maybeReadMore(e,a)}}return!a.ended&&(a.length=T){e=T}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){u(\"read\",e);e=parseInt(e,10);var t=this._readableState;var r=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended)){u(\"read: emitReadable\",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var n=t.needReadable;u(\"need readable\",n);if(t.length===0||t.length-e0)i=fromList(e,t);else i=null;if(i===null){t.needReadable=t.length<=t.highWaterMark;e=0}else{t.length-=e;t.awaitDrain=0}if(t.length===0){if(!t.ended)t.needReadable=true;if(r!==e&&t.ended)endReadable(this)}if(i!==null)this.emit(\"data\",i);return i};function onEofChunk(e,t){u(\"onEofChunk\");if(t.ended)return;if(t.decoder){var r=t.decoder.end();if(r&&r.length){t.buffer.push(r);t.length+=t.objectMode?1:r.length}}t.ended=true;if(t.sync){emitReadable(e)}else{t.needReadable=false;if(!t.emittedReadable){t.emittedReadable=true;emitReadable_(e)}}}function emitReadable(e){var t=e._readableState;u(\"emitReadable\",t.needReadable,t.emittedReadable);t.needReadable=false;if(!t.emittedReadable){u(\"emitReadable\",t.flowing);t.emittedReadable=true;process.nextTick(emitReadable_,e)}}function emitReadable_(e){var t=e._readableState;u(\"emitReadable_\",t.destroyed,t.length,t.ended);if(!t.destroyed&&(t.length||t.ended)){e.emit(\"readable\");t.emittedReadable=false}t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark;flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;process.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){while(!t.reading&&!t.ended&&(t.length1&&indexOf(n.pipes,e)!==-1)&&!f){u(\"false write response, pause\",n.awaitDrain);n.awaitDrain++}r.pause()}}function onerror(t){u(\"onerror\",t);unpipe();e.removeListener(\"error\",onerror);if(a(e,\"error\")===0)R(e,t)}prependListener(e,\"error\",onerror);function onclose(){e.removeListener(\"finish\",onfinish);unpipe()}e.once(\"close\",onclose);function onfinish(){u(\"onfinish\");e.removeListener(\"close\",onclose);unpipe()}e.once(\"finish\",onfinish);function unpipe(){u(\"unpipe\");r.unpipe(e)}e.emit(\"pipe\",r);if(!n.flowing){u(\"pipe resume\");r.resume()}return e};function pipeOnDrain(e){return function pipeOnDrainFunctionResult(){var t=e._readableState;u(\"pipeOnDrain\",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&a(e,\"data\")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var r={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit(\"unpipe\",this,r);return this}if(!e){var n=t.pipes;var i=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var a=0;a0;if(n.flowing!==false)this.resume()}else if(e===\"readable\"){if(!n.endEmitted&&!n.readableListening){n.readableListening=n.needReadable=true;n.flowing=false;n.emittedReadable=false;u(\"on readable\",n.length,n.reading);if(n.length){emitReadable(this)}else if(!n.reading){process.nextTick(nReadingNextTick,this)}}}return r};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(e,t){var r=o.prototype.removeListener.call(this,e,t);if(e===\"readable\"){process.nextTick(updateReadableListening,this)}return r};Readable.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);if(e===\"readable\"||e===undefined){process.nextTick(updateReadableListening,this)}return t};function updateReadableListening(e){var t=e._readableState;t.readableListening=e.listenerCount(\"readable\")>0;if(t.resumeScheduled&&!t.paused){t.flowing=true}else if(e.listenerCount(\"data\")>0){e.resume()}}function nReadingNextTick(e){u(\"readable nexttick read 0\");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){u(\"resume\");e.flowing=!e.readableListening;resume(this,e)}e.paused=false;return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;process.nextTick(resume_,e,t)}}function resume_(e,t){u(\"resume\",t.reading);if(!t.reading){e.read(0)}t.resumeScheduled=false;e.emit(\"resume\");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){u(\"call pause flowing=%j\",this._readableState.flowing);if(this._readableState.flowing!==false){u(\"pause\");this._readableState.flowing=false;this.emit(\"pause\")}this._readableState.paused=true;return this};function flow(e){var t=e._readableState;u(\"flow\",t.flowing);while(t.flowing&&e.read()!==null){}}Readable.prototype.wrap=function(e){var t=this;var r=this._readableState;var n=false;e.on(\"end\",(function(){u(\"wrapped end\");if(r.decoder&&!r.ended){var e=r.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on(\"data\",(function(i){u(\"wrapped data\");if(r.decoder)i=r.decoder.write(i);if(r.objectMode&&(i===null||i===undefined))return;else if(!r.objectMode&&(!i||!i.length))return;var a=t.push(i);if(!a){n=true;e.pause()}}));for(var i in e){if(this[i]===undefined&&typeof e[i]===\"function\"){this[i]=function methodWrap(t){return function methodWrapReturnFunction(){return e[t].apply(e,arguments)}}(i)}}for(var a=0;a=t.length){if(t.decoder)r=t.buffer.join(\"\");else if(t.buffer.length===1)r=t.buffer.first();else r=t.buffer.concat(t.length);t.buffer.clear()}else{r=t.buffer.consume(e,t.decoder)}return r}function endReadable(e){var t=e._readableState;u(\"endReadable\",t.endEmitted);if(!t.endEmitted){t.ended=true;process.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){u(\"endReadableNT\",e.endEmitted,e.length);if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit(\"end\");if(e.autoDestroy){var r=t._writableState;if(!r||r.autoDestroy&&r.finished){t.destroy()}}}}if(typeof Symbol===\"function\"){Readable.from=function(e,t){if(S===undefined){S=r(727)}return S(Readable,e,t)}}function indexOf(e,t){for(var r=0,n=e.length;r-1))throw new v(e);this._writableState.defaultEncoding=e;return this};Object.defineProperty(Writable.prototype,\"writableBuffer\",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(e,t,r){if(!e.objectMode&&e.decodeStrings!==false&&typeof t===\"string\"){t=o.from(t,r)}return t}Object.defineProperty(Writable.prototype,\"writableHighWaterMark\",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,r,n,i,a){if(!r){var o=decodeChunk(t,n,i);if(n!==o){r=true;i=\"buffer\";n=o}}var s=t.objectMode?1:n.length;t.length+=s;var f=t.length0)this.tail.next=t;else this.head=t;this.tail=t;++this.length}},{key:\"unshift\",value:function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length}},{key:\"shift\",value:function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e}},{key:\"clear\",value:function clear(){this.head=this.tail=null;this.length=0}},{key:\"join\",value:function join(e){if(this.length===0)return\"\";var t=this.head;var r=\"\"+t.data;while(t=t.next){r+=e+t.data}return r}},{key:\"concat\",value:function concat(e){if(this.length===0)return i.alloc(0);var t=i.allocUnsafe(e>>>0);var r=this.head;var n=0;while(r){copyBuffer(r.data,t,n);n+=r.data.length;r=r.next}return t}},{key:\"consume\",value:function consume(e,t){var r;if(ei.length?i.length:e;if(a===i.length)n+=i;else n+=i.slice(0,e);e-=a;if(e===0){if(a===i.length){++r;if(t.next)this.head=t.next;else this.head=this.tail=null}else{this.head=t;t.data=i.slice(a)}break}++r}this.length-=r;return n}},{key:\"_getBuffer\",value:function _getBuffer(e){var t=i.allocUnsafe(e);var r=this.head;var n=1;r.data.copy(t);e-=r.data.length;while(r=r.next){var a=r.data;var o=e>a.length?a.length:e;a.copy(t,t.length-e,0,o);e-=o;if(e===0){if(o===a.length){++n;if(r.next)this.head=r.next;else this.head=this.tail=null}else{this.head=r;r.data=a.slice(o)}break}++n}this.length-=n;return t}},{key:s,value:function value(e,t){return o(this,_objectSpread({},t,{depth:0,customInspect:false}))}}]);return BufferList}()},25:function(e){\"use strict\";function destroy(e,t){var r=this;var n=this._readableState&&this._readableState.destroyed;var i=this._writableState&&this._writableState.destroyed;if(n||i){if(t){t(e)}else if(e){if(!this._writableState){process.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!r._writableState){process.nextTick(emitErrorAndCloseNT,r,e)}else if(!r._writableState.errorEmitted){r._writableState.errorEmitted=true;process.nextTick(emitErrorAndCloseNT,r,e)}else{process.nextTick(emitCloseNT,r)}}else if(t){process.nextTick(emitCloseNT,r);t(e)}else{process.nextTick(emitCloseNT,r)}}));return this}function emitErrorAndCloseNT(e,t){emitErrorNT(e,t);emitCloseNT(e)}function emitCloseNT(e){if(e._writableState&&!e._writableState.emitClose)return;if(e._readableState&&!e._readableState.emitClose)return;e.emit(\"close\")}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit(\"error\",t)}function errorOrDestroy(e,t){var r=e._readableState;var n=e._writableState;if(r&&r.autoDestroy||n&&n.autoDestroy)e.destroy(t);else e.emit(\"error\",t)}e.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy}},698:function(e,t,r){\"use strict\";var n=r(646).q.ERR_STREAM_PREMATURE_CLOSE;function once(e){var t=false;return function(){if(t)return;t=true;for(var r=arguments.length,n=new Array(r),i=0;i0;return destroyer(e,a,s,(function(e){if(!i)i=e;if(e)o.forEach(call);if(a)return;o.forEach(call);n(i)}))}));return t.reduce(pipe)}e.exports=pipeline},776:function(e,t,r){\"use strict\";var n=r(646).q.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function getHighWaterMark(e,t,r,i){var a=highWaterMarkFrom(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var o=i?r:\"highWaterMark\";throw new n(o,a)}return Math.floor(a)}return e.objectMode?16:16*1024}e.exports={getHighWaterMark:getHighWaterMark}},678:function(e,t,r){e.exports=r(781)},55:function(e,t,r){var n=r(300);var i=n.Buffer;function copyProps(e,t){for(var r in e){t[r]=e[r]}}if(i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow){e.exports=n}else{copyProps(n,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,r){return i(e,t,r)}SafeBuffer.prototype=Object.create(i.prototype);copyProps(i,SafeBuffer);SafeBuffer.from=function(e,t,r){if(typeof e===\"number\"){throw new TypeError(\"Argument must not be a number\")}return i(e,t,r)};SafeBuffer.alloc=function(e,t,r){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}var n=i(e);if(t!==undefined){if(typeof r===\"string\"){n.fill(t,r)}else{n.fill(t)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return i(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return n.SlowBuffer(e)}},173:function(e,t,r){e.exports=Stream;var n=r(361).EventEmitter;var i=r(782);i(Stream,n);Stream.Readable=r(709);Stream.Writable=r(337);Stream.Duplex=r(403);Stream.Transform=r(170);Stream.PassThrough=r(889);Stream.finished=r(698);Stream.pipeline=r(442);Stream.Stream=Stream;function Stream(){n.call(this)}Stream.prototype.pipe=function(e,t){var r=this;function ondata(t){if(e.writable){if(false===e.write(t)&&r.pause){r.pause()}}}r.on(\"data\",ondata);function ondrain(){if(r.readable&&r.resume){r.resume()}}e.on(\"drain\",ondrain);if(!e._isStdio&&(!t||t.end!==false)){r.on(\"end\",onend);r.on(\"close\",onclose)}var i=false;function onend(){if(i)return;i=true;e.end()}function onclose(){if(i)return;i=true;if(typeof e.destroy===\"function\")e.destroy()}function onerror(e){cleanup();if(n.listenerCount(this,\"error\")===0){throw e}}r.on(\"error\",onerror);e.on(\"error\",onerror);function cleanup(){r.removeListener(\"data\",ondata);e.removeListener(\"drain\",ondrain);r.removeListener(\"end\",onend);r.removeListener(\"close\",onclose);r.removeListener(\"error\",onerror);e.removeListener(\"error\",onerror);r.removeListener(\"end\",cleanup);r.removeListener(\"close\",cleanup);e.removeListener(\"close\",cleanup)}r.on(\"end\",cleanup);r.on(\"close\",cleanup);e.on(\"close\",cleanup);e.emit(\"pipe\",r);return e}},704:function(e,t,r){\"use strict\";var n=r(55).Buffer;var i=n.isEncoding||function(e){e=\"\"+e;switch(e&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return true;default:return false}};function _normalizeEncoding(e){if(!e)return\"utf8\";var t;while(true){switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase();t=true}}}function normalizeEncoding(e){var t=_normalizeEncoding(e);if(typeof t!==\"string\"&&(n.isEncoding===i||!i(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}t.s=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var t;switch(this.encoding){case\"utf16le\":this.text=utf16Text;this.end=utf16End;t=4;break;case\"utf8\":this.fillLast=utf8FillLast;t=4;break;case\"base64\":this.text=base64Text;this.end=base64End;t=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=n.allocUnsafe(t)}StringDecoder.prototype.write=function(e){if(e.length===0)return\"\";var t;var r;if(this.lastNeed){t=this.fillLast(e);if(t===undefined)return\"\";r=this.lastNeed;this.lastNeed=0}else{r=0}if(r>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,t,r){var n=t.length-1;if(n=0){if(i>0)e.lastNeed=i-1;return i}if(--n=0){if(i>0)e.lastNeed=i-2;return i}if(--n=0){if(i>0){if(i===2)i=0;else e.lastNeed=i-3}return i}return 0}function utf8CheckExtraBytes(e,t,r){if((t[0]&192)!==128){e.lastNeed=0;return\"�\"}if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128){e.lastNeed=1;return\"�\"}if(e.lastNeed>2&&t.length>2){if((t[2]&192)!==128){e.lastNeed=2;return\"�\"}}}}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed;var r=utf8CheckExtraBytes(this,e,t);if(r!==undefined)return r;if(this.lastNeed<=e.length){e.copy(this.lastChar,t,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,t,0,e.length);this.lastNeed-=e.length}function utf8Text(e,t){var r=utf8CheckIncomplete(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);e.copy(this.lastChar,0,n);return e.toString(\"utf8\",t,n)}function utf8End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed)return t+\"�\";return t}function utf16Text(e,t){if((e.length-t)%2===0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return r.slice(0,-1)}}return r}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString(\"utf16le\",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function base64Text(e,t){var r=(e.length-t)%3;if(r===0)return e.toString(\"base64\",t);this.lastNeed=3-r;this.lastTotal=3;if(r===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString(\"base64\",t,e.length-r)}function base64End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed)return t+this.lastChar.toString(\"base64\",0,3-this.lastNeed);return t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):\"\"}},769:function(e){e.exports=deprecate;function deprecate(e,t){if(config(\"noDeprecation\")){return e}var r=false;function deprecated(){if(!r){if(config(\"throwDeprecation\")){throw new Error(t)}else if(config(\"traceDeprecation\")){console.trace(t)}else{console.warn(t)}r=true}return e.apply(this,arguments)}return deprecated}function config(e){try{if(!global.localStorage)return false}catch(e){return false}var t=global.localStorage[e];if(null==t)return false;return String(t).toLowerCase()===\"true\"}},300:function(e){\"use strict\";e.exports=require(\"buffer\")},361:function(e){\"use strict\";e.exports=require(\"events\")},781:function(e){\"use strict\";e.exports=require(\"events\").EventEmitter},837:function(e){\"use strict\";e.exports=require(\"util\")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var i=t[r]={exports:{}};var a=true;try{e[r](i,i.exports,__nccwpck_require__);a=false}finally{if(a)delete t[r]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r=__nccwpck_require__(173);module.exports=r})();","(function(){var t={55:function(t,e,r){var n=r(300);var i=n.Buffer;function copyProps(t,e){for(var r in t){e[r]=t[r]}}if(i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow){t.exports=n}else{copyProps(n,e);e.Buffer=SafeBuffer}function SafeBuffer(t,e,r){return i(t,e,r)}SafeBuffer.prototype=Object.create(i.prototype);copyProps(i,SafeBuffer);SafeBuffer.from=function(t,e,r){if(typeof t===\"number\"){throw new TypeError(\"Argument must not be a number\")}return i(t,e,r)};SafeBuffer.alloc=function(t,e,r){if(typeof t!==\"number\"){throw new TypeError(\"Argument must be a number\")}var n=i(t);if(e!==undefined){if(typeof r===\"string\"){n.fill(e,r)}else{n.fill(e)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(t){if(typeof t!==\"number\"){throw new TypeError(\"Argument must be a number\")}return i(t)};SafeBuffer.allocUnsafeSlow=function(t){if(typeof t!==\"number\"){throw new TypeError(\"Argument must be a number\")}return n.SlowBuffer(t)}},300:function(t){\"use strict\";t.exports=require(\"buffer\")}};var e={};function __nccwpck_require__(r){var n=e[r];if(n!==undefined){return n.exports}var i=e[r]={exports:{}};var s=true;try{t[r](i,i.exports,__nccwpck_require__);s=false}finally{if(s)delete e[r]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};!function(){\"use strict\";var t=r;var e=__nccwpck_require__(55).Buffer;var n=e.isEncoding||function(t){t=\"\"+t;switch(t&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return true;default:return false}};function _normalizeEncoding(t){if(!t)return\"utf8\";var e;while(true){switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase();e=true}}}function normalizeEncoding(t){var r=_normalizeEncoding(t);if(typeof r!==\"string\"&&(e.isEncoding===n||!n(t)))throw new Error(\"Unknown encoding: \"+t);return r||t}t.StringDecoder=StringDecoder;function StringDecoder(t){this.encoding=normalizeEncoding(t);var r;switch(this.encoding){case\"utf16le\":this.text=utf16Text;this.end=utf16End;r=4;break;case\"utf8\":this.fillLast=utf8FillLast;r=4;break;case\"base64\":this.text=base64Text;this.end=base64End;r=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=e.allocUnsafe(r)}StringDecoder.prototype.write=function(t){if(t.length===0)return\"\";var e;var r;if(this.lastNeed){e=this.fillLast(t);if(e===undefined)return\"\";r=this.lastNeed;this.lastNeed=0}else{r=0}if(r>5===6)return 2;else if(t>>4===14)return 3;else if(t>>3===30)return 4;return t>>6===2?-1:-2}function utf8CheckIncomplete(t,e,r){var n=e.length-1;if(n=0){if(i>0)t.lastNeed=i-1;return i}if(--n=0){if(i>0)t.lastNeed=i-2;return i}if(--n=0){if(i>0){if(i===2)i=0;else t.lastNeed=i-3}return i}return 0}function utf8CheckExtraBytes(t,e,r){if((e[0]&192)!==128){t.lastNeed=0;return\"�\"}if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128){t.lastNeed=1;return\"�\"}if(t.lastNeed>2&&e.length>2){if((e[2]&192)!==128){t.lastNeed=2;return\"�\"}}}}function utf8FillLast(t){var e=this.lastTotal-this.lastNeed;var r=utf8CheckExtraBytes(this,t,e);if(r!==undefined)return r;if(this.lastNeed<=t.length){t.copy(this.lastChar,e,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}t.copy(this.lastChar,e,0,t.length);this.lastNeed-=t.length}function utf8Text(t,e){var r=utf8CheckIncomplete(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);t.copy(this.lastChar,0,n);return t.toString(\"utf8\",e,n)}function utf8End(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed)return e+\"�\";return e}function utf16Text(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=t[t.length-2];this.lastChar[1]=t[t.length-1];return r.slice(0,-1)}}return r}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=t[t.length-1];return t.toString(\"utf16le\",e,t.length-1)}function utf16End(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function base64Text(t,e){var r=(t.length-e)%3;if(r===0)return t.toString(\"base64\",e);this.lastNeed=3-r;this.lastTotal=3;if(r===1){this.lastChar[0]=t[t.length-1]}else{this.lastChar[0]=t[t.length-2];this.lastChar[1]=t[t.length-1]}return t.toString(\"base64\",e,t.length-r)}function base64End(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed)return e+this.lastChar.toString(\"base64\",0,3-this.lastNeed);return e}function simpleWrite(t){return t.toString(this.encoding)}function simpleEnd(t){return t&&t.length?this.write(t):\"\"}}();module.exports=r})();","(function(){var r={992:function(r){r.exports=function(r,t,n){if(r.filter)return r.filter(t,n);if(void 0===r||null===r)throw new TypeError;if(\"function\"!=typeof t)throw new TypeError;var o=[];for(var i=0;i-1){return o(t)}return t}},139:function(r,e,t){\"use strict\";var n=t(212);var o=t(192);var i=o(\"%Function.prototype.apply%\");var a=o(\"%Function.prototype.call%\");var f=o(\"%Reflect.apply%\",true)||n.call(a,i);var u=o(\"%Object.getOwnPropertyDescriptor%\",true);var s=o(\"%Object.defineProperty%\",true);var c=o(\"%Math.max%\");if(s){try{s({},\"a\",{value:1})}catch(r){s=null}}r.exports=function callBind(r){var e=f(n,a,arguments);if(u&&s){var t=u(e,\"length\");if(t.configurable){s(e,\"length\",{value:1+c(0,r.length-(arguments.length-1))})}}return e};var y=function applyBind(){return f(n,i,arguments)};if(s){s(r.exports,\"apply\",{value:y})}else{r.exports.apply=y}},181:function(r){\"use strict\";r.exports=EvalError},545:function(r){\"use strict\";r.exports=Error},22:function(r){\"use strict\";r.exports=RangeError},803:function(r){\"use strict\";r.exports=ReferenceError},182:function(r){\"use strict\";r.exports=SyntaxError},202:function(r){\"use strict\";r.exports=TypeError},284:function(r){\"use strict\";r.exports=URIError},144:function(r){var e=Object.prototype.hasOwnProperty;var t=Object.prototype.toString;r.exports=function forEach(r,n,o){if(t.call(n)!==\"[object Function]\"){throw new TypeError(\"iterator must be a function\")}var i=r.length;if(i===+i){for(var a=0;a1&&typeof e!==\"boolean\"){throw new s('\"allowMissing\" argument must be a boolean')}if(T(/^%?[^%]*%?$/,r)===null){throw new u(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\")}var t=F(r);var o=t.length>0?t[0]:\"\";var i=U(\"%\"+o+\"%\",e);var a=i.name;var f=i.value;var c=false;var y=i.alias;if(y){o=y[0];B(t,P([0,1],y))}for(var l=1,g=true;l=t.length){var m=p(f,v);g=!!m;if(g&&\"get\"in m&&!(\"originalValue\"in m.get)){f=m.get}else{f=f[v]}}else{g=w(f,v);f=f[v]}if(g&&!c){S[a]=f}}}return f}},14:function(r){\"use strict\";var e={__proto__:null,foo:{}};var t=Object;r.exports=function hasProto(){return{__proto__:e}.foo===e.foo&&!(e instanceof t)}},942:function(r,e,t){\"use strict\";var n=typeof Symbol!==\"undefined\"&&Symbol;var o=t(773);r.exports=function hasNativeSymbols(){if(typeof n!==\"function\"){return false}if(typeof Symbol!==\"function\"){return false}if(typeof n(\"foo\")!==\"symbol\"){return false}if(typeof Symbol(\"bar\")!==\"symbol\"){return false}return o()}},773:function(r){\"use strict\";r.exports=function hasSymbols(){if(typeof Symbol!==\"function\"||typeof Object.getOwnPropertySymbols!==\"function\"){return false}if(typeof Symbol.iterator===\"symbol\"){return true}var r={};var e=Symbol(\"test\");var t=Object(e);if(typeof e===\"string\"){return false}if(Object.prototype.toString.call(e)!==\"[object Symbol]\"){return false}if(Object.prototype.toString.call(t)!==\"[object Symbol]\"){return false}var n=42;r[e]=n;for(e in r){return false}if(typeof Object.keys===\"function\"&&Object.keys(r).length!==0){return false}if(typeof Object.getOwnPropertyNames===\"function\"&&Object.getOwnPropertyNames(r).length!==0){return false}var o=Object.getOwnPropertySymbols(r);if(o.length!==1||o[0]!==e){return false}if(!Object.prototype.propertyIsEnumerable.call(r,e)){return false}if(typeof Object.getOwnPropertyDescriptor===\"function\"){var i=Object.getOwnPropertyDescriptor(r,e);if(i.value!==n||i.enumerable!==true){return false}}return true}},115:function(r,e,t){\"use strict\";var n=typeof Symbol!==\"undefined\"&&Symbol;var o=t(832);r.exports=function hasNativeSymbols(){if(typeof n!==\"function\"){return false}if(typeof Symbol!==\"function\"){return false}if(typeof n(\"foo\")!==\"symbol\"){return false}if(typeof Symbol(\"bar\")!==\"symbol\"){return false}return o()}},832:function(r){\"use strict\";r.exports=function hasSymbols(){if(typeof Symbol!==\"function\"||typeof Object.getOwnPropertySymbols!==\"function\"){return false}if(typeof Symbol.iterator===\"symbol\"){return true}var r={};var e=Symbol(\"test\");var t=Object(e);if(typeof e===\"string\"){return false}if(Object.prototype.toString.call(e)!==\"[object Symbol]\"){return false}if(Object.prototype.toString.call(t)!==\"[object Symbol]\"){return false}var n=42;r[e]=n;for(e in r){return false}if(typeof Object.keys===\"function\"&&Object.keys(r).length!==0){return false}if(typeof Object.getOwnPropertyNames===\"function\"&&Object.getOwnPropertyNames(r).length!==0){return false}var o=Object.getOwnPropertySymbols(r);if(o.length!==1||o[0]!==e){return false}if(!Object.prototype.propertyIsEnumerable.call(r,e)){return false}if(typeof Object.getOwnPropertyDescriptor===\"function\"){var i=Object.getOwnPropertyDescriptor(r,e);if(i.value!==n||i.enumerable!==true){return false}}return true}},270:function(r,e,t){\"use strict\";var n=Function.prototype.call;var o=Object.prototype.hasOwnProperty;var i=t(212);r.exports=i.call(n,o)},782:function(r){if(typeof Object.create===\"function\"){r.exports=function inherits(r,e){if(e){r.super_=e;r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}})}}}else{r.exports=function inherits(r,e){if(e){r.super_=e;var TempCtor=function(){};TempCtor.prototype=e.prototype;r.prototype=new TempCtor;r.prototype.constructor=r}}}},157:function(r){\"use strict\";var e=typeof Symbol===\"function\"&&typeof Symbol.toStringTag===\"symbol\";var t=Object.prototype.toString;var n=function isArguments(r){if(e&&r&&typeof r===\"object\"&&Symbol.toStringTag in r){return false}return t.call(r)===\"[object Arguments]\"};var o=function isArguments(r){if(n(r)){return true}return r!==null&&typeof r===\"object\"&&typeof r.length===\"number\"&&r.length>=0&&t.call(r)!==\"[object Array]\"&&t.call(r.callee)===\"[object Function]\"};var i=function(){return n(arguments)}();n.isLegacyArguments=o;r.exports=i?n:o},391:function(r){\"use strict\";var e=Object.prototype.toString;var t=Function.prototype.toString;var n=/^\\s*(?:function)?\\*/;var o=typeof Symbol===\"function\"&&typeof Symbol.toStringTag===\"symbol\";var i=Object.getPrototypeOf;var getGeneratorFunc=function(){if(!o){return false}try{return Function(\"return function*() {}\")()}catch(r){}};var a=getGeneratorFunc();var f=a?i(a):{};r.exports=function isGeneratorFunction(r){if(typeof r!==\"function\"){return false}if(n.test(t.call(r))){return true}if(!o){var a=e.call(r);return a===\"[object GeneratorFunction]\"}return i(r)===f}},994:function(r,e,t){\"use strict\";var n=t(144);var o=t(349);var i=t(256);var a=i(\"Object.prototype.toString\");var f=t(942)();var u=f&&typeof Symbol.toStringTag===\"symbol\";var s=o();var c=i(\"Array.prototype.indexOf\",true)||function indexOf(r,e){for(var t=0;t-1}if(!l){return false}return v(r)}},369:function(r){r.exports=function isBuffer(r){return r instanceof Buffer}},584:function(r,e,t){\"use strict\";var n=t(157);var o=t(391);var i=t(490);var a=t(994);function uncurryThis(r){return r.call.bind(r)}var f=typeof BigInt!==\"undefined\";var u=typeof Symbol!==\"undefined\";var s=uncurryThis(Object.prototype.toString);var c=uncurryThis(Number.prototype.valueOf);var y=uncurryThis(String.prototype.valueOf);var p=uncurryThis(Boolean.prototype.valueOf);if(f){var l=uncurryThis(BigInt.prototype.valueOf)}if(u){var g=uncurryThis(Symbol.prototype.valueOf)}function checkBoxedPrimitive(r,e){if(typeof r!==\"object\"){return false}try{e(r);return true}catch(r){return false}}e.isArgumentsObject=n;e.isGeneratorFunction=o;e.isTypedArray=a;function isPromise(r){return typeof Promise!==\"undefined\"&&r instanceof Promise||r!==null&&typeof r===\"object\"&&typeof r.then===\"function\"&&typeof r.catch===\"function\"}e.isPromise=isPromise;function isArrayBufferView(r){if(typeof ArrayBuffer!==\"undefined\"&&ArrayBuffer.isView){return ArrayBuffer.isView(r)}return a(r)||isDataView(r)}e.isArrayBufferView=isArrayBufferView;function isUint8Array(r){return i(r)===\"Uint8Array\"}e.isUint8Array=isUint8Array;function isUint8ClampedArray(r){return i(r)===\"Uint8ClampedArray\"}e.isUint8ClampedArray=isUint8ClampedArray;function isUint16Array(r){return i(r)===\"Uint16Array\"}e.isUint16Array=isUint16Array;function isUint32Array(r){return i(r)===\"Uint32Array\"}e.isUint32Array=isUint32Array;function isInt8Array(r){return i(r)===\"Int8Array\"}e.isInt8Array=isInt8Array;function isInt16Array(r){return i(r)===\"Int16Array\"}e.isInt16Array=isInt16Array;function isInt32Array(r){return i(r)===\"Int32Array\"}e.isInt32Array=isInt32Array;function isFloat32Array(r){return i(r)===\"Float32Array\"}e.isFloat32Array=isFloat32Array;function isFloat64Array(r){return i(r)===\"Float64Array\"}e.isFloat64Array=isFloat64Array;function isBigInt64Array(r){return i(r)===\"BigInt64Array\"}e.isBigInt64Array=isBigInt64Array;function isBigUint64Array(r){return i(r)===\"BigUint64Array\"}e.isBigUint64Array=isBigUint64Array;function isMapToString(r){return s(r)===\"[object Map]\"}isMapToString.working=typeof Map!==\"undefined\"&&isMapToString(new Map);function isMap(r){if(typeof Map===\"undefined\"){return false}return isMapToString.working?isMapToString(r):r instanceof Map}e.isMap=isMap;function isSetToString(r){return s(r)===\"[object Set]\"}isSetToString.working=typeof Set!==\"undefined\"&&isSetToString(new Set);function isSet(r){if(typeof Set===\"undefined\"){return false}return isSetToString.working?isSetToString(r):r instanceof Set}e.isSet=isSet;function isWeakMapToString(r){return s(r)===\"[object WeakMap]\"}isWeakMapToString.working=typeof WeakMap!==\"undefined\"&&isWeakMapToString(new WeakMap);function isWeakMap(r){if(typeof WeakMap===\"undefined\"){return false}return isWeakMapToString.working?isWeakMapToString(r):r instanceof WeakMap}e.isWeakMap=isWeakMap;function isWeakSetToString(r){return s(r)===\"[object WeakSet]\"}isWeakSetToString.working=typeof WeakSet!==\"undefined\"&&isWeakSetToString(new WeakSet);function isWeakSet(r){return isWeakSetToString(r)}e.isWeakSet=isWeakSet;function isArrayBufferToString(r){return s(r)===\"[object ArrayBuffer]\"}isArrayBufferToString.working=typeof ArrayBuffer!==\"undefined\"&&isArrayBufferToString(new ArrayBuffer);function isArrayBuffer(r){if(typeof ArrayBuffer===\"undefined\"){return false}return isArrayBufferToString.working?isArrayBufferToString(r):r instanceof ArrayBuffer}e.isArrayBuffer=isArrayBuffer;function isDataViewToString(r){return s(r)===\"[object DataView]\"}isDataViewToString.working=typeof ArrayBuffer!==\"undefined\"&&typeof DataView!==\"undefined\"&&isDataViewToString(new DataView(new ArrayBuffer(1),0,1));function isDataView(r){if(typeof DataView===\"undefined\"){return false}return isDataViewToString.working?isDataViewToString(r):r instanceof DataView}e.isDataView=isDataView;var v=typeof SharedArrayBuffer!==\"undefined\"?SharedArrayBuffer:undefined;function isSharedArrayBufferToString(r){return s(r)===\"[object SharedArrayBuffer]\"}function isSharedArrayBuffer(r){if(typeof v===\"undefined\"){return false}if(typeof isSharedArrayBufferToString.working===\"undefined\"){isSharedArrayBufferToString.working=isSharedArrayBufferToString(new v)}return isSharedArrayBufferToString.working?isSharedArrayBufferToString(r):r instanceof v}e.isSharedArrayBuffer=isSharedArrayBuffer;function isAsyncFunction(r){return s(r)===\"[object AsyncFunction]\"}e.isAsyncFunction=isAsyncFunction;function isMapIterator(r){return s(r)===\"[object Map Iterator]\"}e.isMapIterator=isMapIterator;function isSetIterator(r){return s(r)===\"[object Set Iterator]\"}e.isSetIterator=isSetIterator;function isGeneratorObject(r){return s(r)===\"[object Generator]\"}e.isGeneratorObject=isGeneratorObject;function isWebAssemblyCompiledModule(r){return s(r)===\"[object WebAssembly.Module]\"}e.isWebAssemblyCompiledModule=isWebAssemblyCompiledModule;function isNumberObject(r){return checkBoxedPrimitive(r,c)}e.isNumberObject=isNumberObject;function isStringObject(r){return checkBoxedPrimitive(r,y)}e.isStringObject=isStringObject;function isBooleanObject(r){return checkBoxedPrimitive(r,p)}e.isBooleanObject=isBooleanObject;function isBigIntObject(r){return f&&checkBoxedPrimitive(r,l)}e.isBigIntObject=isBigIntObject;function isSymbolObject(r){return u&&checkBoxedPrimitive(r,g)}e.isSymbolObject=isSymbolObject;function isBoxedPrimitive(r){return isNumberObject(r)||isStringObject(r)||isBooleanObject(r)||isBigIntObject(r)||isSymbolObject(r)}e.isBoxedPrimitive=isBoxedPrimitive;function isAnyArrayBuffer(r){return typeof Uint8Array!==\"undefined\"&&(isArrayBuffer(r)||isSharedArrayBuffer(r))}e.isAnyArrayBuffer=isAnyArrayBuffer;[\"isProxy\",\"isExternal\",\"isModuleNamespaceObject\"].forEach((function(r){Object.defineProperty(e,r,{enumerable:false,value:function(){throw new Error(r+\" is not supported in userland\")}})}))},177:function(r,e,t){var n=Object.getOwnPropertyDescriptors||function getOwnPropertyDescriptors(r){var e=Object.keys(r);var t={};for(var n=0;n=i)return r;switch(r){case\"%s\":return String(n[t++]);case\"%d\":return Number(n[t++]);case\"%j\":try{return JSON.stringify(n[t++])}catch(r){return\"[Circular]\"}default:return r}}));for(var f=n[t];t=3)n.depth=arguments[2];if(arguments.length>=4)n.colors=arguments[3];if(isBoolean(t)){n.showHidden=t}else if(t){e._extend(n,t)}if(isUndefined(n.showHidden))n.showHidden=false;if(isUndefined(n.depth))n.depth=2;if(isUndefined(n.colors))n.colors=false;if(isUndefined(n.customInspect))n.customInspect=true;if(n.colors)n.stylize=stylizeWithColor;return formatValue(n,r,n.depth)}e.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"};function stylizeWithColor(r,e){var t=inspect.styles[e];if(t){return\"\u001b[\"+inspect.colors[t][0]+\"m\"+r+\"\u001b[\"+inspect.colors[t][1]+\"m\"}else{return r}}function stylizeNoColor(r,e){return r}function arrayToHash(r){var e={};r.forEach((function(r,t){e[r]=true}));return e}function formatValue(r,t,n){if(r.customInspect&&t&&isFunction(t.inspect)&&t.inspect!==e.inspect&&!(t.constructor&&t.constructor.prototype===t)){var o=t.inspect(n,r);if(!isString(o)){o=formatValue(r,o,n)}return o}var i=formatPrimitive(r,t);if(i){return i}var a=Object.keys(t);var f=arrayToHash(a);if(r.showHidden){a=Object.getOwnPropertyNames(t)}if(isError(t)&&(a.indexOf(\"message\")>=0||a.indexOf(\"description\")>=0)){return formatError(t)}if(a.length===0){if(isFunction(t)){var u=t.name?\": \"+t.name:\"\";return r.stylize(\"[Function\"+u+\"]\",\"special\")}if(isRegExp(t)){return r.stylize(RegExp.prototype.toString.call(t),\"regexp\")}if(isDate(t)){return r.stylize(Date.prototype.toString.call(t),\"date\")}if(isError(t)){return formatError(t)}}var s=\"\",c=false,y=[\"{\",\"}\"];if(isArray(t)){c=true;y=[\"[\",\"]\"]}if(isFunction(t)){var p=t.name?\": \"+t.name:\"\";s=\" [Function\"+p+\"]\"}if(isRegExp(t)){s=\" \"+RegExp.prototype.toString.call(t)}if(isDate(t)){s=\" \"+Date.prototype.toUTCString.call(t)}if(isError(t)){s=\" \"+formatError(t)}if(a.length===0&&(!c||t.length==0)){return y[0]+s+y[1]}if(n<0){if(isRegExp(t)){return r.stylize(RegExp.prototype.toString.call(t),\"regexp\")}else{return r.stylize(\"[Object]\",\"special\")}}r.seen.push(t);var l;if(c){l=formatArray(r,t,n,f,a)}else{l=a.map((function(e){return formatProperty(r,t,n,f,e,c)}))}r.seen.pop();return reduceToSingleString(l,s,y)}function formatPrimitive(r,e){if(isUndefined(e))return r.stylize(\"undefined\",\"undefined\");if(isString(e)){var t=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return r.stylize(t,\"string\")}if(isNumber(e))return r.stylize(\"\"+e,\"number\");if(isBoolean(e))return r.stylize(\"\"+e,\"boolean\");if(isNull(e))return r.stylize(\"null\",\"null\")}function formatError(r){return\"[\"+Error.prototype.toString.call(r)+\"]\"}function formatArray(r,e,t,n,o){var i=[];for(var a=0,f=e.length;a-1){if(i){f=f.split(\"\\n\").map((function(r){return\" \"+r})).join(\"\\n\").substr(2)}else{f=\"\\n\"+f.split(\"\\n\").map((function(r){return\" \"+r})).join(\"\\n\")}}}else{f=r.stylize(\"[Circular]\",\"special\")}}if(isUndefined(a)){if(i&&o.match(/^\\d+$/)){return f}a=JSON.stringify(\"\"+o);if(a.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)){a=a.substr(1,a.length-2);a=r.stylize(a,\"name\")}else{a=a.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\");a=r.stylize(a,\"string\")}}return a+\": \"+f}function reduceToSingleString(r,e,t){var n=0;var o=r.reduce((function(r,e){n++;if(e.indexOf(\"\\n\")>=0)n++;return r+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0);if(o>60){return t[0]+(e===\"\"?\"\":e+\"\\n \")+\" \"+r.join(\",\\n \")+\" \"+t[1]}return t[0]+e+\" \"+r.join(\", \")+\" \"+t[1]}e.types=t(584);function isArray(r){return Array.isArray(r)}e.isArray=isArray;function isBoolean(r){return typeof r===\"boolean\"}e.isBoolean=isBoolean;function isNull(r){return r===null}e.isNull=isNull;function isNullOrUndefined(r){return r==null}e.isNullOrUndefined=isNullOrUndefined;function isNumber(r){return typeof r===\"number\"}e.isNumber=isNumber;function isString(r){return typeof r===\"string\"}e.isString=isString;function isSymbol(r){return typeof r===\"symbol\"}e.isSymbol=isSymbol;function isUndefined(r){return r===void 0}e.isUndefined=isUndefined;function isRegExp(r){return isObject(r)&&objectToString(r)===\"[object RegExp]\"}e.isRegExp=isRegExp;e.types.isRegExp=isRegExp;function isObject(r){return typeof r===\"object\"&&r!==null}e.isObject=isObject;function isDate(r){return isObject(r)&&objectToString(r)===\"[object Date]\"}e.isDate=isDate;e.types.isDate=isDate;function isError(r){return isObject(r)&&(objectToString(r)===\"[object Error]\"||r instanceof Error)}e.isError=isError;e.types.isNativeError=isError;function isFunction(r){return typeof r===\"function\"}e.isFunction=isFunction;function isPrimitive(r){return r===null||typeof r===\"boolean\"||typeof r===\"number\"||typeof r===\"string\"||typeof r===\"symbol\"||typeof r===\"undefined\"}e.isPrimitive=isPrimitive;e.isBuffer=t(369);function objectToString(r){return Object.prototype.toString.call(r)}function pad(r){return r<10?\"0\"+r.toString(10):r.toString(10)}var u=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function timestamp(){var r=new Date;var e=[pad(r.getHours()),pad(r.getMinutes()),pad(r.getSeconds())].join(\":\");return[r.getDate(),u[r.getMonth()],e].join(\" \")}e.log=function(){console.log(\"%s - %s\",timestamp(),e.format.apply(e,arguments))};e.inherits=t(782);e._extend=function(r,e){if(!e||!isObject(e))return r;var t=Object.keys(e);var n=t.length;while(n--){r[t[n]]=e[t[n]]}return r};function hasOwnProperty(r,e){return Object.prototype.hasOwnProperty.call(r,e)}var s=typeof Symbol!==\"undefined\"?Symbol(\"util.promisify.custom\"):undefined;e.promisify=function promisify(r){if(typeof r!==\"function\")throw new TypeError('The \"original\" argument must be of type Function');if(s&&r[s]){var e=r[s];if(typeof e!==\"function\"){throw new TypeError('The \"util.promisify.custom\" argument must be of type Function')}Object.defineProperty(e,s,{value:e,enumerable:false,writable:false,configurable:true});return e}function e(){var e,t;var n=new Promise((function(r,n){e=r;t=n}));var o=[];for(var i=0;i {\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n const now = new Date().toISOString();\r\n const method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method](`[${now}] ${instance.name}:`, ...args);\r\n }\r\n else {\r\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\r\n }\r\n};\r\nclass Logger {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n constructor(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n get logLevel() {\r\n return this._logLevel;\r\n }\r\n set logLevel(val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\r\n }\r\n this._logLevel = val;\r\n }\r\n // Workaround for setter/getter having to be the same type.\r\n setLogLevel(val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n }\r\n get logHandler() {\r\n return this._logHandler;\r\n }\r\n set logHandler(val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n }\r\n get userLogHandler() {\r\n return this._userLogHandler;\r\n }\r\n set userLogHandler(val) {\r\n this._userLogHandler = val;\r\n }\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n debug(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\r\n this._logHandler(this, LogLevel.DEBUG, ...args);\r\n }\r\n log(...args) {\r\n this._userLogHandler &&\r\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\r\n this._logHandler(this, LogLevel.VERBOSE, ...args);\r\n }\r\n info(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\r\n this._logHandler(this, LogLevel.INFO, ...args);\r\n }\r\n warn(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\r\n this._logHandler(this, LogLevel.WARN, ...args);\r\n }\r\n error(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\r\n this._logHandler(this, LogLevel.ERROR, ...args);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n instances.forEach(inst => {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n for (const instance of instances) {\r\n let customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = (instance, level, ...args) => {\r\n const message = args\r\n .map(arg => {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(arg => arg)\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message,\r\n args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm2017.js.map\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, getDefaultAppConfig, deepEqual, isBrowser, isWebWorker, FirebaseError, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PlatformLoggerServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n getPlatformInfoString() {\r\n const providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(provider => {\r\n if (isVersionServiceProvider(provider)) {\r\n const service = provider.getImmediate();\r\n return `${service.library}/${service.version}`;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(logString => logString)\r\n .join(' ');\r\n }\r\n}\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n const component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* ComponentType.VERSION */;\r\n}\n\nconst name$q = \"@firebase/app\";\nconst version$1 = \"0.10.13\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app');\n\nconst name$p = \"@firebase/app-compat\";\n\nconst name$o = \"@firebase/analytics-compat\";\n\nconst name$n = \"@firebase/analytics\";\n\nconst name$m = \"@firebase/app-check-compat\";\n\nconst name$l = \"@firebase/app-check\";\n\nconst name$k = \"@firebase/auth\";\n\nconst name$j = \"@firebase/auth-compat\";\n\nconst name$i = \"@firebase/database\";\n\nconst name$h = \"@firebase/data-connect\";\n\nconst name$g = \"@firebase/database-compat\";\n\nconst name$f = \"@firebase/functions\";\n\nconst name$e = \"@firebase/functions-compat\";\n\nconst name$d = \"@firebase/installations\";\n\nconst name$c = \"@firebase/installations-compat\";\n\nconst name$b = \"@firebase/messaging\";\n\nconst name$a = \"@firebase/messaging-compat\";\n\nconst name$9 = \"@firebase/performance\";\n\nconst name$8 = \"@firebase/performance-compat\";\n\nconst name$7 = \"@firebase/remote-config\";\n\nconst name$6 = \"@firebase/remote-config-compat\";\n\nconst name$5 = \"@firebase/storage\";\n\nconst name$4 = \"@firebase/storage-compat\";\n\nconst name$3 = \"@firebase/firestore\";\n\nconst name$2 = \"@firebase/vertexai-preview\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"10.14.1\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The default app name\r\n *\r\n * @internal\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nconst PLATFORM_LOG_STRING = {\r\n [name$q]: 'fire-core',\r\n [name$p]: 'fire-core-compat',\r\n [name$n]: 'fire-analytics',\r\n [name$o]: 'fire-analytics-compat',\r\n [name$l]: 'fire-app-check',\r\n [name$m]: 'fire-app-check-compat',\r\n [name$k]: 'fire-auth',\r\n [name$j]: 'fire-auth-compat',\r\n [name$i]: 'fire-rtdb',\r\n [name$h]: 'fire-data-connect',\r\n [name$g]: 'fire-rtdb-compat',\r\n [name$f]: 'fire-fn',\r\n [name$e]: 'fire-fn-compat',\r\n [name$d]: 'fire-iid',\r\n [name$c]: 'fire-iid-compat',\r\n [name$b]: 'fire-fcm',\r\n [name$a]: 'fire-fcm-compat',\r\n [name$9]: 'fire-perf',\r\n [name$8]: 'fire-perf-compat',\r\n [name$7]: 'fire-rc',\r\n [name$6]: 'fire-rc-compat',\r\n [name$5]: 'fire-gcs',\r\n [name$4]: 'fire-gcs-compat',\r\n [name$3]: 'fire-fst',\r\n [name$1]: 'fire-fst-compat',\r\n [name$2]: 'fire-vertex',\r\n 'fire-js': 'fire-js',\r\n [name]: 'fire-js-all'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nconst _apps = new Map();\r\n/**\r\n * @internal\r\n */\r\nconst _serverApps = new Map();\r\n/**\r\n * Registered components.\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst _components = new Map();\r\n/**\r\n * @param component - the component being added to this app's container\r\n *\r\n * @internal\r\n */\r\nfunction _addComponent(app, component) {\r\n try {\r\n app.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\r\n }\r\n}\r\n/**\r\n *\r\n * @internal\r\n */\r\nfunction _addOrOverwriteComponent(app, component) {\r\n app.container.addOrOverwriteComponent(component);\r\n}\r\n/**\r\n *\r\n * @param component - the component to register\r\n * @returns whether or not the component is registered successfully\r\n *\r\n * @internal\r\n */\r\nfunction _registerComponent(component) {\r\n const componentName = component.name;\r\n if (_components.has(componentName)) {\r\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\r\n return false;\r\n }\r\n _components.set(componentName, component);\r\n // add the component to existing app instances\r\n for (const app of _apps.values()) {\r\n _addComponent(app, component);\r\n }\r\n for (const serverApp of _serverApps.values()) {\r\n _addComponent(serverApp, component);\r\n }\r\n return true;\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n *\r\n * @returns the provider for the service with the matching name\r\n *\r\n * @internal\r\n */\r\nfunction _getProvider(app, name) {\r\n const heartbeatController = app.container\r\n .getProvider('heartbeat')\r\n .getImmediate({ optional: true });\r\n if (heartbeatController) {\r\n void heartbeatController.triggerHeartbeat();\r\n }\r\n return app.container.getProvider(name);\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\r\n *\r\n * @internal\r\n */\r\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\r\n _getProvider(app, name).clearInstance(instanceIdentifier);\r\n}\r\n/**\r\n *\r\n * @param obj - an object of type FirebaseApp or FirebaseOptions.\r\n *\r\n * @returns true if the provide object is of type FirebaseApp.\r\n *\r\n * @internal\r\n */\r\nfunction _isFirebaseApp(obj) {\r\n return obj.options !== undefined;\r\n}\r\n/**\r\n *\r\n * @param obj - an object of type FirebaseApp.\r\n *\r\n * @returns true if the provided object is of type FirebaseServerAppImpl.\r\n *\r\n * @internal\r\n */\r\nfunction _isFirebaseServerApp(obj) {\r\n return obj.settings !== undefined;\r\n}\r\n/**\r\n * Test only\r\n *\r\n * @internal\r\n */\r\nfunction _clearComponents() {\r\n _components.clear();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* AppError.NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call initializeApp() first',\r\n [\"bad-app-name\" /* AppError.BAD_APP_NAME */]: \"Illegal App name: '{$appName}'\",\r\n [\"duplicate-app\" /* AppError.DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\r\n [\"app-deleted\" /* AppError.APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\r\n [\"server-app-deleted\" /* AppError.SERVER_APP_DELETED */]: 'Firebase Server App has been deleted',\r\n [\"no-options\" /* AppError.NO_OPTIONS */]: 'Need to provide options, when not being deployed to hosting via source.',\r\n [\"invalid-app-argument\" /* AppError.INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n [\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\r\n [\"idb-open\" /* AppError.IDB_OPEN */]: 'Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"idb-get\" /* AppError.IDB_GET */]: 'Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"idb-set\" /* AppError.IDB_WRITE */]: 'Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"idb-delete\" /* AppError.IDB_DELETE */]: 'Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"finalization-registry-not-supported\" /* AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED */]: 'FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.',\r\n [\"invalid-server-app-environment\" /* AppError.INVALID_SERVER_APP_ENVIRONMENT */]: 'FirebaseServerApp is not for use in browser environments.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(options, config, container) {\r\n this._isDeleted = false;\r\n this._options = Object.assign({}, options);\r\n this._config = Object.assign({}, config);\r\n this._name = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled;\r\n this._container = container;\r\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* ComponentType.PUBLIC */));\r\n }\r\n get automaticDataCollectionEnabled() {\r\n this.checkDestroyed();\r\n return this._automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this.checkDestroyed();\r\n this._automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n this.checkDestroyed();\r\n return this._name;\r\n }\r\n get options() {\r\n this.checkDestroyed();\r\n return this._options;\r\n }\r\n get config() {\r\n this.checkDestroyed();\r\n return this._config;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n get isDeleted() {\r\n return this._isDeleted;\r\n }\r\n set isDeleted(val) {\r\n this._isDeleted = val;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* AppError.APP_DELETED */, { appName: this._name });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2023 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseServerAppImpl extends FirebaseAppImpl {\r\n constructor(options, serverConfig, name, container) {\r\n // Build configuration parameters for the FirebaseAppImpl base class.\r\n const automaticDataCollectionEnabled = serverConfig.automaticDataCollectionEnabled !== undefined\r\n ? serverConfig.automaticDataCollectionEnabled\r\n : false;\r\n // Create the FirebaseAppSettings object for the FirebaseAppImp constructor.\r\n const config = {\r\n name,\r\n automaticDataCollectionEnabled\r\n };\r\n if (options.apiKey !== undefined) {\r\n // Construct the parent FirebaseAppImp object.\r\n super(options, config, container);\r\n }\r\n else {\r\n const appImpl = options;\r\n super(appImpl.options, config, container);\r\n }\r\n // Now construct the data for the FirebaseServerAppImpl.\r\n this._serverConfig = Object.assign({ automaticDataCollectionEnabled }, serverConfig);\r\n this._finalizationRegistry = null;\r\n if (typeof FinalizationRegistry !== 'undefined') {\r\n this._finalizationRegistry = new FinalizationRegistry(() => {\r\n this.automaticCleanup();\r\n });\r\n }\r\n this._refCount = 0;\r\n this.incRefCount(this._serverConfig.releaseOnDeref);\r\n // Do not retain a hard reference to the dref object, otherwise the FinalizationRegistry\r\n // will never trigger.\r\n this._serverConfig.releaseOnDeref = undefined;\r\n serverConfig.releaseOnDeref = undefined;\r\n registerVersion(name$q, version$1, 'serverapp');\r\n }\r\n toJSON() {\r\n return undefined;\r\n }\r\n get refCount() {\r\n return this._refCount;\r\n }\r\n // Increment the reference count of this server app. If an object is provided, register it\r\n // with the finalization registry.\r\n incRefCount(obj) {\r\n if (this.isDeleted) {\r\n return;\r\n }\r\n this._refCount++;\r\n if (obj !== undefined && this._finalizationRegistry !== null) {\r\n this._finalizationRegistry.register(obj, this);\r\n }\r\n }\r\n // Decrement the reference count.\r\n decRefCount() {\r\n if (this.isDeleted) {\r\n return 0;\r\n }\r\n return --this._refCount;\r\n }\r\n // Invoked by the FinalizationRegistry callback to note that this app should go through its\r\n // reference counts and delete itself if no reference count remain. The coordinating logic that\r\n // handles this is in deleteApp(...).\r\n automaticCleanup() {\r\n void deleteApp(this);\r\n }\r\n get settings() {\r\n this.checkDestroyed();\r\n return this._serverConfig;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"server-app-deleted\" /* AppError.SERVER_APP_DELETED */);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The current SDK version.\r\n *\r\n * @public\r\n */\r\nconst SDK_VERSION = version;\r\nfunction initializeApp(_options, rawConfig = {}) {\r\n let options = _options;\r\n if (typeof rawConfig !== 'object') {\r\n const name = rawConfig;\r\n rawConfig = { name };\r\n }\r\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\r\n const name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* AppError.BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n options || (options = getDefaultAppConfig());\r\n if (!options) {\r\n throw ERROR_FACTORY.create(\"no-options\" /* AppError.NO_OPTIONS */);\r\n }\r\n const existingApp = _apps.get(name);\r\n if (existingApp) {\r\n // return the existing app if options and config deep equal the ones in the existing app.\r\n if (deepEqual(options, existingApp.options) &&\r\n deepEqual(config, existingApp.config)) {\r\n return existingApp;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* AppError.DUPLICATE_APP */, { appName: name });\r\n }\r\n }\r\n const container = new ComponentContainer(name);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseAppImpl(options, config, container);\r\n _apps.set(name, newApp);\r\n return newApp;\r\n}\r\nfunction initializeServerApp(_options, _serverAppConfig) {\r\n if (isBrowser() && !isWebWorker()) {\r\n // FirebaseServerApp isn't designed to be run in browsers.\r\n throw ERROR_FACTORY.create(\"invalid-server-app-environment\" /* AppError.INVALID_SERVER_APP_ENVIRONMENT */);\r\n }\r\n if (_serverAppConfig.automaticDataCollectionEnabled === undefined) {\r\n _serverAppConfig.automaticDataCollectionEnabled = false;\r\n }\r\n let appOptions;\r\n if (_isFirebaseApp(_options)) {\r\n appOptions = _options.options;\r\n }\r\n else {\r\n appOptions = _options;\r\n }\r\n // Build an app name based on a hash of the configuration options.\r\n const nameObj = Object.assign(Object.assign({}, _serverAppConfig), appOptions);\r\n // However, Do not mangle the name based on releaseOnDeref, since it will vary between the\r\n // construction of FirebaseServerApp instances. For example, if the object is the request headers.\r\n if (nameObj.releaseOnDeref !== undefined) {\r\n delete nameObj.releaseOnDeref;\r\n }\r\n const hashCode = (s) => {\r\n return [...s].reduce((hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0, 0);\r\n };\r\n if (_serverAppConfig.releaseOnDeref !== undefined) {\r\n if (typeof FinalizationRegistry === 'undefined') {\r\n throw ERROR_FACTORY.create(\"finalization-registry-not-supported\" /* AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED */, {});\r\n }\r\n }\r\n const nameString = '' + hashCode(JSON.stringify(nameObj));\r\n const existingApp = _serverApps.get(nameString);\r\n if (existingApp) {\r\n existingApp.incRefCount(_serverAppConfig.releaseOnDeref);\r\n return existingApp;\r\n }\r\n const container = new ComponentContainer(nameString);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseServerAppImpl(appOptions, _serverAppConfig, nameString, container);\r\n _serverApps.set(nameString, newApp);\r\n return newApp;\r\n}\r\n/**\r\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * When called with no arguments, the default app is returned. When an app name\r\n * is provided, the app corresponding to that name is returned.\r\n *\r\n * An exception is thrown if the app being retrieved has not yet been\r\n * initialized.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return the default app\r\n * const app = getApp();\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return a named app\r\n * const otherApp = getApp(\"otherApp\");\r\n * ```\r\n *\r\n * @param name - Optional name of the app to return. If no name is\r\n * provided, the default is `\"[DEFAULT]\"`.\r\n *\r\n * @returns The app corresponding to the provided app name.\r\n * If no app name is provided, the default app is returned.\r\n *\r\n * @public\r\n */\r\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\r\n const app = _apps.get(name);\r\n if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) {\r\n return initializeApp();\r\n }\r\n if (!app) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* AppError.NO_APP */, { appName: name });\r\n }\r\n return app;\r\n}\r\n/**\r\n * A (read-only) array of all initialized apps.\r\n * @public\r\n */\r\nfunction getApps() {\r\n return Array.from(_apps.values());\r\n}\r\n/**\r\n * Renders this app unusable and frees the resources of all associated\r\n * services.\r\n *\r\n * @example\r\n * ```javascript\r\n * deleteApp(app)\r\n * .then(function() {\r\n * console.log(\"App deleted successfully\");\r\n * })\r\n * .catch(function(error) {\r\n * console.log(\"Error deleting app:\", error);\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nasync function deleteApp(app) {\r\n let cleanupProviders = false;\r\n const name = app.name;\r\n if (_apps.has(name)) {\r\n cleanupProviders = true;\r\n _apps.delete(name);\r\n }\r\n else if (_serverApps.has(name)) {\r\n const firebaseServerApp = app;\r\n if (firebaseServerApp.decRefCount() <= 0) {\r\n _serverApps.delete(name);\r\n cleanupProviders = true;\r\n }\r\n }\r\n if (cleanupProviders) {\r\n await Promise.all(app.container\r\n .getProviders()\r\n .map(provider => provider.delete()));\r\n app.isDeleted = true;\r\n }\r\n}\r\n/**\r\n * Registers a library's name and version for platform logging purposes.\r\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\r\n * @param version - Current version of that library.\r\n * @param variant - Bundle variant, e.g., node, rn, etc.\r\n *\r\n * @public\r\n */\r\nfunction registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += `-${variant}`;\r\n }\r\n const libraryMismatch = library.match(/\\s|\\//);\r\n const versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n const warning = [\r\n `Unable to register library \"${library}\" with version \"${version}\":`\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* ComponentType.VERSION */));\r\n}\r\n/**\r\n * Sets log handler for all Firebase SDKs.\r\n * @param logCallback - An optional custom log handler that executes user code whenever\r\n * the Firebase SDK makes a logging call.\r\n *\r\n * @public\r\n */\r\nfunction onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\r\n}\r\n/**\r\n * Sets log level for all Firebase SDKs.\r\n *\r\n * All of the log types above the current log level are captured (i.e. if\r\n * you set the log level to `info`, errors are logged, but `debug` and\r\n * `verbose` logs are not).\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(logLevel) {\r\n setLogLevel$1(logLevel);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-heartbeat-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-heartbeat-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DB_NAME, DB_VERSION, {\r\n upgrade: (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n try {\r\n db.createObjectStore(STORE_NAME);\r\n }\r\n catch (e) {\r\n // Safari/iOS browsers throw occasional exceptions on\r\n // db.createObjectStore() that may be a bug. Avoid blocking\r\n // the rest of the app functionality.\r\n console.warn(e);\r\n }\r\n }\r\n }\r\n }).catch(e => {\r\n throw ERROR_FACTORY.create(\"idb-open\" /* AppError.IDB_OPEN */, {\r\n originalErrorMessage: e.message\r\n });\r\n });\r\n }\r\n return dbPromise;\r\n}\r\nasync function readHeartbeatsFromIndexedDB(app) {\r\n try {\r\n const db = await getDbPromise();\r\n const tx = db.transaction(STORE_NAME);\r\n const result = await tx.objectStore(STORE_NAME).get(computeKey(app));\r\n // We already have the value but tx.done can throw,\r\n // so we need to await it here to catch errors\r\n await tx.done;\r\n return result;\r\n }\r\n catch (e) {\r\n if (e instanceof FirebaseError) {\r\n logger.warn(e.message);\r\n }\r\n else {\r\n const idbGetError = ERROR_FACTORY.create(\"idb-get\" /* AppError.IDB_GET */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n });\r\n logger.warn(idbGetError.message);\r\n }\r\n }\r\n}\r\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\r\n try {\r\n const db = await getDbPromise();\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(STORE_NAME);\r\n await objectStore.put(heartbeatObject, computeKey(app));\r\n await tx.done;\r\n }\r\n catch (e) {\r\n if (e instanceof FirebaseError) {\r\n logger.warn(e.message);\r\n }\r\n else {\r\n const idbGetError = ERROR_FACTORY.create(\"idb-set\" /* AppError.IDB_WRITE */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n });\r\n logger.warn(idbGetError.message);\r\n }\r\n }\r\n}\r\nfunction computeKey(app) {\r\n return `${app.name}!${app.options.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst MAX_HEADER_BYTES = 1024;\r\n// 30 days\r\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\r\nclass HeartbeatServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n /**\r\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\r\n * the header string.\r\n * Stores one record per date. This will be consolidated into the standard\r\n * format of one record per user agent string before being sent as a header.\r\n * Populated from indexedDB when the controller is instantiated and should\r\n * be kept in sync with indexedDB.\r\n * Leave public for easier testing.\r\n */\r\n this._heartbeatsCache = null;\r\n const app = this.container.getProvider('app').getImmediate();\r\n this._storage = new HeartbeatStorageImpl(app);\r\n this._heartbeatsCachePromise = this._storage.read().then(result => {\r\n this._heartbeatsCache = result;\r\n return result;\r\n });\r\n }\r\n /**\r\n * Called to report a heartbeat. The function will generate\r\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\r\n * to IndexedDB.\r\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\r\n * already logged, subsequent calls to this function in the same day will be ignored.\r\n */\r\n async triggerHeartbeat() {\r\n var _a, _b;\r\n try {\r\n const platformLogger = this.container\r\n .getProvider('platform-logger')\r\n .getImmediate();\r\n // This is the \"Firebase user agent\" string from the platform logger\r\n // service, not the browser user agent.\r\n const agent = platformLogger.getPlatformInfoString();\r\n const date = getUTCDateString();\r\n if (((_a = this._heartbeatsCache) === null || _a === void 0 ? void 0 : _a.heartbeats) == null) {\r\n this._heartbeatsCache = await this._heartbeatsCachePromise;\r\n // If we failed to construct a heartbeats cache, then return immediately.\r\n if (((_b = this._heartbeatsCache) === null || _b === void 0 ? void 0 : _b.heartbeats) == null) {\r\n return;\r\n }\r\n }\r\n // Do not store a heartbeat if one is already stored for this day\r\n // or if a header has already been sent today.\r\n if (this._heartbeatsCache.lastSentHeartbeatDate === date ||\r\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\r\n return;\r\n }\r\n else {\r\n // There is no entry for this date. Create one.\r\n this._heartbeatsCache.heartbeats.push({ date, agent });\r\n }\r\n // Remove entries older than 30 days.\r\n this._heartbeatsCache.heartbeats =\r\n this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\r\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\r\n const now = Date.now();\r\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\r\n });\r\n return this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n catch (e) {\r\n logger.warn(e);\r\n }\r\n }\r\n /**\r\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\r\n * It also clears all heartbeats from memory as well as in IndexedDB.\r\n *\r\n * NOTE: Consuming product SDKs should not send the header if this method\r\n * returns an empty string.\r\n */\r\n async getHeartbeatsHeader() {\r\n var _a;\r\n try {\r\n if (this._heartbeatsCache === null) {\r\n await this._heartbeatsCachePromise;\r\n }\r\n // If it's still null or the array is empty, there is no data to send.\r\n if (((_a = this._heartbeatsCache) === null || _a === void 0 ? void 0 : _a.heartbeats) == null ||\r\n this._heartbeatsCache.heartbeats.length === 0) {\r\n return '';\r\n }\r\n const date = getUTCDateString();\r\n // Extract as many heartbeats from the cache as will fit under the size limit.\r\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(this._heartbeatsCache.heartbeats);\r\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\r\n // Store last sent date to prevent another being logged/sent for the same day.\r\n this._heartbeatsCache.lastSentHeartbeatDate = date;\r\n if (unsentEntries.length > 0) {\r\n // Store any unsent entries if they exist.\r\n this._heartbeatsCache.heartbeats = unsentEntries;\r\n // This seems more likely than emptying the array (below) to lead to some odd state\r\n // since the cache isn't empty and this will be called again on the next request,\r\n // and is probably safest if we await it.\r\n await this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n else {\r\n this._heartbeatsCache.heartbeats = [];\r\n // Do not wait for this, to reduce latency.\r\n void this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n return headerString;\r\n }\r\n catch (e) {\r\n logger.warn(e);\r\n return '';\r\n }\r\n }\r\n}\r\nfunction getUTCDateString() {\r\n const today = new Date();\r\n // Returns date format 'YYYY-MM-DD'\r\n return today.toISOString().substring(0, 10);\r\n}\r\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\r\n // Heartbeats grouped by user agent in the standard format to be sent in\r\n // the header.\r\n const heartbeatsToSend = [];\r\n // Single date format heartbeats that are not sent.\r\n let unsentEntries = heartbeatsCache.slice();\r\n for (const singleDateHeartbeat of heartbeatsCache) {\r\n // Look for an existing entry with the same user agent.\r\n const heartbeatEntry = heartbeatsToSend.find(hb => hb.agent === singleDateHeartbeat.agent);\r\n if (!heartbeatEntry) {\r\n // If no entry for this user agent exists, create one.\r\n heartbeatsToSend.push({\r\n agent: singleDateHeartbeat.agent,\r\n dates: [singleDateHeartbeat.date]\r\n });\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n // If the header would exceed max size, remove the added heartbeat\r\n // entry and stop adding to the header.\r\n heartbeatsToSend.pop();\r\n break;\r\n }\r\n }\r\n else {\r\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\r\n // If the header would exceed max size, remove the added date\r\n // and stop adding to the header.\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n heartbeatEntry.dates.pop();\r\n break;\r\n }\r\n }\r\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\r\n // quota and the loop breaks early.)\r\n unsentEntries = unsentEntries.slice(1);\r\n }\r\n return {\r\n heartbeatsToSend,\r\n unsentEntries\r\n };\r\n}\r\nclass HeartbeatStorageImpl {\r\n constructor(app) {\r\n this.app = app;\r\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\r\n }\r\n async runIndexedDBEnvironmentCheck() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n else {\r\n return validateIndexedDBOpenable()\r\n .then(() => true)\r\n .catch(() => false);\r\n }\r\n }\r\n /**\r\n * Read all heartbeats.\r\n */\r\n async read() {\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return { heartbeats: [] };\r\n }\r\n else {\r\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\r\n if (idbHeartbeatObject === null || idbHeartbeatObject === void 0 ? void 0 : idbHeartbeatObject.heartbeats) {\r\n return idbHeartbeatObject;\r\n }\r\n else {\r\n return { heartbeats: [] };\r\n }\r\n }\r\n }\r\n // overwrite the storage with the provided heartbeats\r\n async overwrite(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: heartbeatsObject.heartbeats\r\n });\r\n }\r\n }\r\n // add heartbeats\r\n async add(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: [\r\n ...existingHeartbeatsObject.heartbeats,\r\n ...heartbeatsObject.heartbeats\r\n ]\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\r\n * in a platform logging header JSON object, stringified, and converted\r\n * to base 64.\r\n */\r\nfunction countBytes(heartbeatsCache) {\r\n // base64 has a restricted set of characters, all of which should be 1 byte.\r\n return base64urlEncodeWithoutPadding(\r\n // heartbeatsCache wrapper properties\r\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })).length;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\r\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\r\n // Register `app` package.\r\n registerVersion(name$q, version$1, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name$q, version$1, 'esm2017');\r\n // Register platform SDK identifier (no version).\r\n registerVersion('fire-js', '');\r\n}\n\n/**\r\n * Firebase App\r\n *\r\n * @remarks This package coordinates the communication between the different Firebase components\r\n * @packageDocumentation\r\n */\r\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _isFirebaseApp, _isFirebaseServerApp, _registerComponent, _removeServiceInstance, _serverApps, deleteApp, getApp, getApps, initializeApp, initializeServerApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm2017.js.map\n","import { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass Component {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n constructor(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* InstantiationMode.LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n setInstantiationMode(mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n }\r\n setMultipleInstances(multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n }\r\n setServiceProps(props) {\r\n this.serviceProps = props;\r\n return this;\r\n }\r\n setInstanceCreatedCallback(callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nclass Provider {\r\n constructor(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide multiple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n get(identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n const deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n }\r\n getImmediate(options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/cannot be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(`Service ${this.name} is not available`);\r\n }\r\n }\r\n }\r\n getComponent() {\r\n return this.component;\r\n }\r\n setComponent(component) {\r\n if (component.name !== this.name) {\r\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\r\n }\r\n if (this.component) {\r\n throw Error(`Component for ${this.name} has already been provided`);\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n }\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n async delete() {\r\n const services = Array.from(this.instances.values());\r\n await Promise.all([\r\n ...services\r\n .filter(service => 'INTERNAL' in service) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service.INTERNAL.delete()),\r\n ...services\r\n .filter(service => '_delete' in service) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service._delete())\r\n ]);\r\n }\r\n isComponentSet() {\r\n return this.component != null;\r\n }\r\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instances.has(identifier);\r\n }\r\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instancesOptions.get(identifier) || {};\r\n }\r\n initialize(opts = {}) {\r\n const { options = {} } = opts;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(`Component ${this.name} has not been registered yet`);\r\n }\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options\r\n });\r\n // resolve any pending promise waiting for the service instance\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n return instance;\r\n }\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n onInit(callback, identifier) {\r\n var _a;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n const existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return () => {\r\n existingCallbacks.delete(callback);\r\n };\r\n }\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n invokeOnInitCallbacks(instance, identifier) {\r\n const callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n getOrInitializeService({ instanceIdentifier, options = {} }) {\r\n let instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n }\r\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n }\r\n shouldAutoInitialize() {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* InstantiationMode.EXPLICIT */);\r\n }\r\n}\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* InstantiationMode.EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass ComponentContainer {\r\n constructor(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n addComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\r\n }\r\n provider.setComponent(component);\r\n }\r\n addOrOverwriteComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n }\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n getProvider(name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n const provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n }\r\n getProviders() {\r\n return Array.from(this.providers.values());\r\n }\r\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm2017.js.map\n","import { registerVersion } from '@firebase/app';\nexport * from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"10.14.1\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterVersion(name, version, 'app');\n//# sourceMappingURL=index.esm.js.map\n","import { _getProvider, getApp, _registerComponent, registerVersion, SDK_VERSION } from '@firebase/app';\nimport { FirebaseError, createMockUserToken, getModularInstance, getDefaultEmulatorHostnameAndPort } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Constants used in the Firebase Storage library.\r\n */\r\n/**\r\n * Domain name for firebase storage.\r\n */\r\nconst DEFAULT_HOST = 'firebasestorage.googleapis.com';\r\n/**\r\n * The key in Firebase config json for the storage bucket.\r\n */\r\nconst CONFIG_STORAGE_BUCKET_KEY = 'storageBucket';\r\n/**\r\n * 2 minutes\r\n *\r\n * The timeout for all operations except upload.\r\n */\r\nconst DEFAULT_MAX_OPERATION_RETRY_TIME = 2 * 60 * 1000;\r\n/**\r\n * 10 minutes\r\n *\r\n * The timeout for upload.\r\n */\r\nconst DEFAULT_MAX_UPLOAD_RETRY_TIME = 10 * 60 * 1000;\r\n/**\r\n * 1 second\r\n */\r\nconst DEFAULT_MIN_SLEEP_TIME_MILLIS = 1000;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An error returned by the Firebase Storage SDK.\r\n * @public\r\n */\r\nclass StorageError extends FirebaseError {\r\n /**\r\n * @param code - A `StorageErrorCode` string to be prefixed with 'storage/' and\r\n * added to the end of the message.\r\n * @param message - Error message.\r\n * @param status_ - Corresponding HTTP Status Code\r\n */\r\n constructor(code, message, status_ = 0) {\r\n super(prependCode(code), `Firebase Storage: ${message} (${prependCode(code)})`);\r\n this.status_ = status_;\r\n /**\r\n * Stores custom error data unique to the `StorageError`.\r\n */\r\n this.customData = { serverResponse: null };\r\n this._baseMessage = this.message;\r\n // Without this, `instanceof StorageError`, in tests for example,\r\n // returns false.\r\n Object.setPrototypeOf(this, StorageError.prototype);\r\n }\r\n get status() {\r\n return this.status_;\r\n }\r\n set status(status) {\r\n this.status_ = status;\r\n }\r\n /**\r\n * Compares a `StorageErrorCode` against this error's code, filtering out the prefix.\r\n */\r\n _codeEquals(code) {\r\n return prependCode(code) === this.code;\r\n }\r\n /**\r\n * Optional response message that was added by the server.\r\n */\r\n get serverResponse() {\r\n return this.customData.serverResponse;\r\n }\r\n set serverResponse(serverResponse) {\r\n this.customData.serverResponse = serverResponse;\r\n if (this.customData.serverResponse) {\r\n this.message = `${this._baseMessage}\\n${this.customData.serverResponse}`;\r\n }\r\n else {\r\n this.message = this._baseMessage;\r\n }\r\n }\r\n}\r\n/**\r\n * @public\r\n * Error codes that can be attached to `StorageError` objects.\r\n */\r\nvar StorageErrorCode;\r\n(function (StorageErrorCode) {\r\n // Shared between all platforms\r\n StorageErrorCode[\"UNKNOWN\"] = \"unknown\";\r\n StorageErrorCode[\"OBJECT_NOT_FOUND\"] = \"object-not-found\";\r\n StorageErrorCode[\"BUCKET_NOT_FOUND\"] = \"bucket-not-found\";\r\n StorageErrorCode[\"PROJECT_NOT_FOUND\"] = \"project-not-found\";\r\n StorageErrorCode[\"QUOTA_EXCEEDED\"] = \"quota-exceeded\";\r\n StorageErrorCode[\"UNAUTHENTICATED\"] = \"unauthenticated\";\r\n StorageErrorCode[\"UNAUTHORIZED\"] = \"unauthorized\";\r\n StorageErrorCode[\"UNAUTHORIZED_APP\"] = \"unauthorized-app\";\r\n StorageErrorCode[\"RETRY_LIMIT_EXCEEDED\"] = \"retry-limit-exceeded\";\r\n StorageErrorCode[\"INVALID_CHECKSUM\"] = \"invalid-checksum\";\r\n StorageErrorCode[\"CANCELED\"] = \"canceled\";\r\n // JS specific\r\n StorageErrorCode[\"INVALID_EVENT_NAME\"] = \"invalid-event-name\";\r\n StorageErrorCode[\"INVALID_URL\"] = \"invalid-url\";\r\n StorageErrorCode[\"INVALID_DEFAULT_BUCKET\"] = \"invalid-default-bucket\";\r\n StorageErrorCode[\"NO_DEFAULT_BUCKET\"] = \"no-default-bucket\";\r\n StorageErrorCode[\"CANNOT_SLICE_BLOB\"] = \"cannot-slice-blob\";\r\n StorageErrorCode[\"SERVER_FILE_WRONG_SIZE\"] = \"server-file-wrong-size\";\r\n StorageErrorCode[\"NO_DOWNLOAD_URL\"] = \"no-download-url\";\r\n StorageErrorCode[\"INVALID_ARGUMENT\"] = \"invalid-argument\";\r\n StorageErrorCode[\"INVALID_ARGUMENT_COUNT\"] = \"invalid-argument-count\";\r\n StorageErrorCode[\"APP_DELETED\"] = \"app-deleted\";\r\n StorageErrorCode[\"INVALID_ROOT_OPERATION\"] = \"invalid-root-operation\";\r\n StorageErrorCode[\"INVALID_FORMAT\"] = \"invalid-format\";\r\n StorageErrorCode[\"INTERNAL_ERROR\"] = \"internal-error\";\r\n StorageErrorCode[\"UNSUPPORTED_ENVIRONMENT\"] = \"unsupported-environment\";\r\n})(StorageErrorCode || (StorageErrorCode = {}));\r\nfunction prependCode(code) {\r\n return 'storage/' + code;\r\n}\r\nfunction unknown() {\r\n const message = 'An unknown error occurred, please check the error payload for ' +\r\n 'server response.';\r\n return new StorageError(StorageErrorCode.UNKNOWN, message);\r\n}\r\nfunction objectNotFound(path) {\r\n return new StorageError(StorageErrorCode.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\r\n}\r\nfunction quotaExceeded(bucket) {\r\n return new StorageError(StorageErrorCode.QUOTA_EXCEEDED, \"Quota for bucket '\" +\r\n bucket +\r\n \"' exceeded, please view quota on \" +\r\n 'https://firebase.google.com/pricing/.');\r\n}\r\nfunction unauthenticated() {\r\n const message = 'User is not authenticated, please authenticate using Firebase ' +\r\n 'Authentication and try again.';\r\n return new StorageError(StorageErrorCode.UNAUTHENTICATED, message);\r\n}\r\nfunction unauthorizedApp() {\r\n return new StorageError(StorageErrorCode.UNAUTHORIZED_APP, 'This app does not have permission to access Firebase Storage on this project.');\r\n}\r\nfunction unauthorized(path) {\r\n return new StorageError(StorageErrorCode.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\r\n}\r\nfunction retryLimitExceeded() {\r\n return new StorageError(StorageErrorCode.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\r\n}\r\nfunction canceled() {\r\n return new StorageError(StorageErrorCode.CANCELED, 'User canceled the upload/download.');\r\n}\r\nfunction invalidUrl(url) {\r\n return new StorageError(StorageErrorCode.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\r\n}\r\nfunction invalidDefaultBucket(bucket) {\r\n return new StorageError(StorageErrorCode.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\r\n}\r\nfunction noDefaultBucket() {\r\n return new StorageError(StorageErrorCode.NO_DEFAULT_BUCKET, 'No default bucket ' +\r\n \"found. Did you set the '\" +\r\n CONFIG_STORAGE_BUCKET_KEY +\r\n \"' property when initializing the app?\");\r\n}\r\nfunction cannotSliceBlob() {\r\n return new StorageError(StorageErrorCode.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\r\n}\r\nfunction serverFileWrongSize() {\r\n return new StorageError(StorageErrorCode.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\r\n}\r\nfunction noDownloadURL() {\r\n return new StorageError(StorageErrorCode.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\r\n}\r\nfunction missingPolyFill(polyFill) {\r\n return new StorageError(StorageErrorCode.UNSUPPORTED_ENVIRONMENT, `${polyFill} is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.`);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction invalidArgument(message) {\r\n return new StorageError(StorageErrorCode.INVALID_ARGUMENT, message);\r\n}\r\nfunction appDeleted() {\r\n return new StorageError(StorageErrorCode.APP_DELETED, 'The Firebase app was deleted.');\r\n}\r\n/**\r\n * @param name - The name of the operation that was invalid.\r\n *\r\n * @internal\r\n */\r\nfunction invalidRootOperation(name) {\r\n return new StorageError(StorageErrorCode.INVALID_ROOT_OPERATION, \"The operation '\" +\r\n name +\r\n \"' cannot be performed on a root reference, create a non-root \" +\r\n \"reference using child, such as .child('file.png').\");\r\n}\r\n/**\r\n * @param format - The format that was not valid.\r\n * @param message - A message describing the format violation.\r\n */\r\nfunction invalidFormat(format, message) {\r\n return new StorageError(StorageErrorCode.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\r\n}\r\n/**\r\n * @param message - A message describing the internal error.\r\n */\r\nfunction internalError(message) {\r\n throw new StorageError(StorageErrorCode.INTERNAL_ERROR, 'Internal error: ' + message);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Firebase Storage location data.\r\n *\r\n * @internal\r\n */\r\nclass Location {\r\n constructor(bucket, path) {\r\n this.bucket = bucket;\r\n this.path_ = path;\r\n }\r\n get path() {\r\n return this.path_;\r\n }\r\n get isRoot() {\r\n return this.path.length === 0;\r\n }\r\n fullServerUrl() {\r\n const encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\r\n }\r\n bucketOnlyServerUrl() {\r\n const encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o';\r\n }\r\n static makeFromBucketSpec(bucketString, host) {\r\n let bucketLocation;\r\n try {\r\n bucketLocation = Location.makeFromUrl(bucketString, host);\r\n }\r\n catch (e) {\r\n // Not valid URL, use as-is. This lets you put bare bucket names in\r\n // config.\r\n return new Location(bucketString, '');\r\n }\r\n if (bucketLocation.path === '') {\r\n return bucketLocation;\r\n }\r\n else {\r\n throw invalidDefaultBucket(bucketString);\r\n }\r\n }\r\n static makeFromUrl(url, host) {\r\n let location = null;\r\n const bucketDomain = '([A-Za-z0-9.\\\\-_]+)';\r\n function gsModify(loc) {\r\n if (loc.path.charAt(loc.path.length - 1) === '/') {\r\n loc.path_ = loc.path_.slice(0, -1);\r\n }\r\n }\r\n const gsPath = '(/(.*))?$';\r\n const gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\r\n const gsIndices = { bucket: 1, path: 3 };\r\n function httpModify(loc) {\r\n loc.path_ = decodeURIComponent(loc.path);\r\n }\r\n const version = 'v[A-Za-z0-9_]+';\r\n const firebaseStorageHost = host.replace(/[.]/g, '\\\\.');\r\n const firebaseStoragePath = '(/([^?#]*).*)?$';\r\n const firebaseStorageRegExp = new RegExp(`^https?://${firebaseStorageHost}/${version}/b/${bucketDomain}/o${firebaseStoragePath}`, 'i');\r\n const firebaseStorageIndices = { bucket: 1, path: 3 };\r\n const cloudStorageHost = host === DEFAULT_HOST\r\n ? '(?:storage.googleapis.com|storage.cloud.google.com)'\r\n : host;\r\n const cloudStoragePath = '([^?#]*)';\r\n const cloudStorageRegExp = new RegExp(`^https?://${cloudStorageHost}/${bucketDomain}/${cloudStoragePath}`, 'i');\r\n const cloudStorageIndices = { bucket: 1, path: 2 };\r\n const groups = [\r\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\r\n {\r\n regex: firebaseStorageRegExp,\r\n indices: firebaseStorageIndices,\r\n postModify: httpModify\r\n },\r\n {\r\n regex: cloudStorageRegExp,\r\n indices: cloudStorageIndices,\r\n postModify: httpModify\r\n }\r\n ];\r\n for (let i = 0; i < groups.length; i++) {\r\n const group = groups[i];\r\n const captures = group.regex.exec(url);\r\n if (captures) {\r\n const bucketValue = captures[group.indices.bucket];\r\n let pathValue = captures[group.indices.path];\r\n if (!pathValue) {\r\n pathValue = '';\r\n }\r\n location = new Location(bucketValue, pathValue);\r\n group.postModify(location);\r\n break;\r\n }\r\n }\r\n if (location == null) {\r\n throw invalidUrl(url);\r\n }\r\n return location;\r\n }\r\n}\n\n/**\r\n * A request whose promise always fails.\r\n */\r\nclass FailRequest {\r\n constructor(error) {\r\n this.promise_ = Promise.reject(error);\r\n }\r\n /** @inheritDoc */\r\n getPromise() {\r\n return this.promise_;\r\n }\r\n /** @inheritDoc */\r\n cancel(_appDelete = false) { }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Accepts a callback for an action to perform (`doRequest`),\r\n * and then a callback for when the backoff has completed (`backoffCompleteCb`).\r\n * The callback sent to start requires an argument to call (`onRequestComplete`).\r\n * When `start` calls `doRequest`, it passes a callback for when the request has\r\n * completed, `onRequestComplete`. Based on this, the backoff continues, with\r\n * another call to `doRequest` and the above loop continues until the timeout\r\n * is hit, or a successful response occurs.\r\n * @description\r\n * @param doRequest Callback to perform request\r\n * @param backoffCompleteCb Callback to call when backoff has been completed\r\n */\r\nfunction start(doRequest, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nbackoffCompleteCb, timeout) {\r\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\r\n // type instead of a bunch of functions with state shared in the closure)\r\n let waitSeconds = 1;\r\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\r\n // TODO: find a way to exclude Node type definition for storage because storage only works in browser\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let retryTimeoutId = null;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let globalTimeoutId = null;\r\n let hitTimeout = false;\r\n let cancelState = 0;\r\n function canceled() {\r\n return cancelState === 2;\r\n }\r\n let triggeredCallback = false;\r\n function triggerCallback(...args) {\r\n if (!triggeredCallback) {\r\n triggeredCallback = true;\r\n backoffCompleteCb.apply(null, args);\r\n }\r\n }\r\n function callWithDelay(millis) {\r\n retryTimeoutId = setTimeout(() => {\r\n retryTimeoutId = null;\r\n doRequest(responseHandler, canceled());\r\n }, millis);\r\n }\r\n function clearGlobalTimeout() {\r\n if (globalTimeoutId) {\r\n clearTimeout(globalTimeoutId);\r\n }\r\n }\r\n function responseHandler(success, ...args) {\r\n if (triggeredCallback) {\r\n clearGlobalTimeout();\r\n return;\r\n }\r\n if (success) {\r\n clearGlobalTimeout();\r\n triggerCallback.call(null, success, ...args);\r\n return;\r\n }\r\n const mustStop = canceled() || hitTimeout;\r\n if (mustStop) {\r\n clearGlobalTimeout();\r\n triggerCallback.call(null, success, ...args);\r\n return;\r\n }\r\n if (waitSeconds < 64) {\r\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\r\n waitSeconds *= 2;\r\n }\r\n let waitMillis;\r\n if (cancelState === 1) {\r\n cancelState = 2;\r\n waitMillis = 0;\r\n }\r\n else {\r\n waitMillis = (waitSeconds + Math.random()) * 1000;\r\n }\r\n callWithDelay(waitMillis);\r\n }\r\n let stopped = false;\r\n function stop(wasTimeout) {\r\n if (stopped) {\r\n return;\r\n }\r\n stopped = true;\r\n clearGlobalTimeout();\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (retryTimeoutId !== null) {\r\n if (!wasTimeout) {\r\n cancelState = 2;\r\n }\r\n clearTimeout(retryTimeoutId);\r\n callWithDelay(0);\r\n }\r\n else {\r\n if (!wasTimeout) {\r\n cancelState = 1;\r\n }\r\n }\r\n }\r\n callWithDelay(0);\r\n globalTimeoutId = setTimeout(() => {\r\n hitTimeout = true;\r\n stop(true);\r\n }, timeout);\r\n return stop;\r\n}\r\n/**\r\n * Stops the retry loop from repeating.\r\n * If the function is currently \"in between\" retries, it is invoked immediately\r\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\r\n * after the current invocation finishes iff the current invocation would have\r\n * triggered another retry.\r\n */\r\nfunction stop(id) {\r\n id(false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isJustDef(p) {\r\n return p !== void 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isFunction(p) {\r\n return typeof p === 'function';\r\n}\r\nfunction isNonArrayObject(p) {\r\n return typeof p === 'object' && !Array.isArray(p);\r\n}\r\nfunction isString(p) {\r\n return typeof p === 'string' || p instanceof String;\r\n}\r\nfunction isNativeBlob(p) {\r\n return isNativeBlobDefined() && p instanceof Blob;\r\n}\r\nfunction isNativeBlobDefined() {\r\n return typeof Blob !== 'undefined';\r\n}\r\nfunction validateNumber(argument, minValue, maxValue, value) {\r\n if (value < minValue) {\r\n throw invalidArgument(`Invalid value for '${argument}'. Expected ${minValue} or greater.`);\r\n }\r\n if (value > maxValue) {\r\n throw invalidArgument(`Invalid value for '${argument}'. Expected ${maxValue} or less.`);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction makeUrl(urlPart, host, protocol) {\r\n let origin = host;\r\n if (protocol == null) {\r\n origin = `https://${host}`;\r\n }\r\n return `${protocol}://${origin}/v0${urlPart}`;\r\n}\r\nfunction makeQueryString(params) {\r\n const encode = encodeURIComponent;\r\n let queryPart = '?';\r\n for (const key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n const nextPart = encode(key) + '=' + encode(params[key]);\r\n queryPart = queryPart + nextPart + '&';\r\n }\r\n }\r\n // Chop off the extra '&' or '?' on the end\r\n queryPart = queryPart.slice(0, -1);\r\n return queryPart;\r\n}\n\n/**\r\n * Error codes for requests made by the XhrIo wrapper.\r\n */\r\nvar ErrorCode;\r\n(function (ErrorCode) {\r\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\r\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\r\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\r\n})(ErrorCode || (ErrorCode = {}));\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Checks the status code to see if the action should be retried.\r\n *\r\n * @param status Current HTTP status code returned by server.\r\n * @param additionalRetryCodes additional retry codes to check against\r\n */\r\nfunction isRetryStatusCode(status, additionalRetryCodes) {\r\n // The codes for which to retry came from this page:\r\n // https://cloud.google.com/storage/docs/exponential-backoff\r\n const isFiveHundredCode = status >= 500 && status < 600;\r\n const extraRetryCodes = [\r\n // Request Timeout: web server didn't receive full request in time.\r\n 408,\r\n // Too Many Requests: you're getting rate-limited, basically.\r\n 429\r\n ];\r\n const isExtraRetryCode = extraRetryCodes.indexOf(status) !== -1;\r\n const isAdditionalRetryCode = additionalRetryCodes.indexOf(status) !== -1;\r\n return isFiveHundredCode || isExtraRetryCode || isAdditionalRetryCode;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Handles network logic for all Storage Requests, including error reporting and\r\n * retries with backoff.\r\n *\r\n * @param I - the type of the backend's network response.\r\n * @param - O the output type used by the rest of the SDK. The conversion\r\n * happens in the specified `callback_`.\r\n */\r\nclass NetworkRequest {\r\n constructor(url_, method_, headers_, body_, successCodes_, additionalRetryCodes_, callback_, errorCallback_, timeout_, progressCallback_, connectionFactory_, retry = true) {\r\n this.url_ = url_;\r\n this.method_ = method_;\r\n this.headers_ = headers_;\r\n this.body_ = body_;\r\n this.successCodes_ = successCodes_;\r\n this.additionalRetryCodes_ = additionalRetryCodes_;\r\n this.callback_ = callback_;\r\n this.errorCallback_ = errorCallback_;\r\n this.timeout_ = timeout_;\r\n this.progressCallback_ = progressCallback_;\r\n this.connectionFactory_ = connectionFactory_;\r\n this.retry = retry;\r\n this.pendingConnection_ = null;\r\n this.backoffId_ = null;\r\n this.canceled_ = false;\r\n this.appDelete_ = false;\r\n this.promise_ = new Promise((resolve, reject) => {\r\n this.resolve_ = resolve;\r\n this.reject_ = reject;\r\n this.start_();\r\n });\r\n }\r\n /**\r\n * Actually starts the retry loop.\r\n */\r\n start_() {\r\n const doTheRequest = (backoffCallback, canceled) => {\r\n if (canceled) {\r\n backoffCallback(false, new RequestEndStatus(false, null, true));\r\n return;\r\n }\r\n const connection = this.connectionFactory_();\r\n this.pendingConnection_ = connection;\r\n const progressListener = progressEvent => {\r\n const loaded = progressEvent.loaded;\r\n const total = progressEvent.lengthComputable ? progressEvent.total : -1;\r\n if (this.progressCallback_ !== null) {\r\n this.progressCallback_(loaded, total);\r\n }\r\n };\r\n if (this.progressCallback_ !== null) {\r\n connection.addUploadProgressListener(progressListener);\r\n }\r\n // connection.send() never rejects, so we don't need to have a error handler or use catch on the returned promise.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n connection\r\n .send(this.url_, this.method_, this.body_, this.headers_)\r\n .then(() => {\r\n if (this.progressCallback_ !== null) {\r\n connection.removeUploadProgressListener(progressListener);\r\n }\r\n this.pendingConnection_ = null;\r\n const hitServer = connection.getErrorCode() === ErrorCode.NO_ERROR;\r\n const status = connection.getStatus();\r\n if (!hitServer ||\r\n (isRetryStatusCode(status, this.additionalRetryCodes_) &&\r\n this.retry)) {\r\n const wasCanceled = connection.getErrorCode() === ErrorCode.ABORT;\r\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\r\n return;\r\n }\r\n const successCode = this.successCodes_.indexOf(status) !== -1;\r\n backoffCallback(true, new RequestEndStatus(successCode, connection));\r\n });\r\n };\r\n /**\r\n * @param requestWentThrough - True if the request eventually went\r\n * through, false if it hit the retry limit or was canceled.\r\n */\r\n const backoffDone = (requestWentThrough, status) => {\r\n const resolve = this.resolve_;\r\n const reject = this.reject_;\r\n const connection = status.connection;\r\n if (status.wasSuccessCode) {\r\n try {\r\n const result = this.callback_(connection, connection.getResponse());\r\n if (isJustDef(result)) {\r\n resolve(result);\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }\r\n else {\r\n if (connection !== null) {\r\n const err = unknown();\r\n err.serverResponse = connection.getErrorText();\r\n if (this.errorCallback_) {\r\n reject(this.errorCallback_(connection, err));\r\n }\r\n else {\r\n reject(err);\r\n }\r\n }\r\n else {\r\n if (status.canceled) {\r\n const err = this.appDelete_ ? appDeleted() : canceled();\r\n reject(err);\r\n }\r\n else {\r\n const err = retryLimitExceeded();\r\n reject(err);\r\n }\r\n }\r\n }\r\n };\r\n if (this.canceled_) {\r\n backoffDone(false, new RequestEndStatus(false, null, true));\r\n }\r\n else {\r\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\r\n }\r\n }\r\n /** @inheritDoc */\r\n getPromise() {\r\n return this.promise_;\r\n }\r\n /** @inheritDoc */\r\n cancel(appDelete) {\r\n this.canceled_ = true;\r\n this.appDelete_ = appDelete || false;\r\n if (this.backoffId_ !== null) {\r\n stop(this.backoffId_);\r\n }\r\n if (this.pendingConnection_ !== null) {\r\n this.pendingConnection_.abort();\r\n }\r\n }\r\n}\r\n/**\r\n * A collection of information about the result of a network request.\r\n * @param opt_canceled - Defaults to false.\r\n */\r\nclass RequestEndStatus {\r\n constructor(wasSuccessCode, connection, canceled) {\r\n this.wasSuccessCode = wasSuccessCode;\r\n this.connection = connection;\r\n this.canceled = !!canceled;\r\n }\r\n}\r\nfunction addAuthHeader_(headers, authToken) {\r\n if (authToken !== null && authToken.length > 0) {\r\n headers['Authorization'] = 'Firebase ' + authToken;\r\n }\r\n}\r\nfunction addVersionHeader_(headers, firebaseVersion) {\r\n headers['X-Firebase-Storage-Version'] =\r\n 'webjs/' + (firebaseVersion !== null && firebaseVersion !== void 0 ? firebaseVersion : 'AppManager');\r\n}\r\nfunction addGmpidHeader_(headers, appId) {\r\n if (appId) {\r\n headers['X-Firebase-GMPID'] = appId;\r\n }\r\n}\r\nfunction addAppCheckHeader_(headers, appCheckToken) {\r\n if (appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = appCheckToken;\r\n }\r\n}\r\nfunction makeRequest(requestInfo, appId, authToken, appCheckToken, requestFactory, firebaseVersion, retry = true) {\r\n const queryPart = makeQueryString(requestInfo.urlParams);\r\n const url = requestInfo.url + queryPart;\r\n const headers = Object.assign({}, requestInfo.headers);\r\n addGmpidHeader_(headers, appId);\r\n addAuthHeader_(headers, authToken);\r\n addVersionHeader_(headers, firebaseVersion);\r\n addAppCheckHeader_(headers, appCheckToken);\r\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, requestFactory, retry);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getBlobBuilder() {\r\n if (typeof BlobBuilder !== 'undefined') {\r\n return BlobBuilder;\r\n }\r\n else if (typeof WebKitBlobBuilder !== 'undefined') {\r\n return WebKitBlobBuilder;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Concatenates one or more values together and converts them to a Blob.\r\n *\r\n * @param args The values that will make up the resulting blob.\r\n * @return The blob.\r\n */\r\nfunction getBlob$1(...args) {\r\n const BlobBuilder = getBlobBuilder();\r\n if (BlobBuilder !== undefined) {\r\n const bb = new BlobBuilder();\r\n for (let i = 0; i < args.length; i++) {\r\n bb.append(args[i]);\r\n }\r\n return bb.getBlob();\r\n }\r\n else {\r\n if (isNativeBlobDefined()) {\r\n return new Blob(args);\r\n }\r\n else {\r\n throw new StorageError(StorageErrorCode.UNSUPPORTED_ENVIRONMENT, \"This browser doesn't seem to support creating Blobs\");\r\n }\r\n }\r\n}\r\n/**\r\n * Slices the blob. The returned blob contains data from the start byte\r\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\r\n *\r\n * @param blob The blob to be sliced.\r\n * @param start Index of the starting byte.\r\n * @param end Index of the ending byte.\r\n * @return The blob slice or null if not supported.\r\n */\r\nfunction sliceBlob(blob, start, end) {\r\n if (blob.webkitSlice) {\r\n return blob.webkitSlice(start, end);\r\n }\r\n else if (blob.mozSlice) {\r\n return blob.mozSlice(start, end);\r\n }\r\n else if (blob.slice) {\r\n return blob.slice(start, end);\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Converts a Base64 encoded string to a binary string. */\r\nfunction decodeBase64(encoded) {\r\n if (typeof atob === 'undefined') {\r\n throw missingPolyFill('base-64');\r\n }\r\n return atob(encoded);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An enumeration of the possible string formats for upload.\r\n * @public\r\n */\r\nconst StringFormat = {\r\n /**\r\n * Indicates the string should be interpreted \"raw\", that is, as normal text.\r\n * The string will be interpreted as UTF-16, then uploaded as a UTF-8 byte\r\n * sequence.\r\n * Example: The string 'Hello! \\\\ud83d\\\\ude0a' becomes the byte sequence\r\n * 48 65 6c 6c 6f 21 20 f0 9f 98 8a\r\n */\r\n RAW: 'raw',\r\n /**\r\n * Indicates the string should be interpreted as base64-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO++E6t7/rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64: 'base64',\r\n /**\r\n * Indicates the string should be interpreted as base64url-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO--E6t7_rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64URL: 'base64url',\r\n /**\r\n * Indicates the string is a data URL, such as one obtained from\r\n * canvas.toDataURL().\r\n * Example: the string 'data:application/octet-stream;base64,aaaa'\r\n * becomes the byte sequence\r\n * 69 a6 9a\r\n * (the content-type \"application/octet-stream\" is also applied, but can\r\n * be overridden in the metadata object).\r\n */\r\n DATA_URL: 'data_url'\r\n};\r\nclass StringData {\r\n constructor(data, contentType) {\r\n this.data = data;\r\n this.contentType = contentType || null;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction dataFromString(format, stringData) {\r\n switch (format) {\r\n case StringFormat.RAW:\r\n return new StringData(utf8Bytes_(stringData));\r\n case StringFormat.BASE64:\r\n case StringFormat.BASE64URL:\r\n return new StringData(base64Bytes_(format, stringData));\r\n case StringFormat.DATA_URL:\r\n return new StringData(dataURLBytes_(stringData), dataURLContentType_(stringData));\r\n // do nothing\r\n }\r\n // assert(false);\r\n throw unknown();\r\n}\r\nfunction utf8Bytes_(value) {\r\n const b = [];\r\n for (let i = 0; i < value.length; i++) {\r\n let c = value.charCodeAt(i);\r\n if (c <= 127) {\r\n b.push(c);\r\n }\r\n else {\r\n if (c <= 2047) {\r\n b.push(192 | (c >> 6), 128 | (c & 63));\r\n }\r\n else {\r\n if ((c & 64512) === 55296) {\r\n // The start of a surrogate pair.\r\n const valid = i < value.length - 1 && (value.charCodeAt(i + 1) & 64512) === 56320;\r\n if (!valid) {\r\n // The second surrogate wasn't there.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n const hi = c;\r\n const lo = value.charCodeAt(++i);\r\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\r\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n else {\r\n if ((c & 64512) === 56320) {\r\n // Invalid low surrogate.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return new Uint8Array(b);\r\n}\r\nfunction percentEncodedBytes_(value) {\r\n let decoded;\r\n try {\r\n decoded = decodeURIComponent(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\r\n }\r\n return utf8Bytes_(decoded);\r\n}\r\nfunction base64Bytes_(format, value) {\r\n switch (format) {\r\n case StringFormat.BASE64: {\r\n const hasMinus = value.indexOf('-') !== -1;\r\n const hasUnder = value.indexOf('_') !== -1;\r\n if (hasMinus || hasUnder) {\r\n const invalidChar = hasMinus ? '-' : '_';\r\n throw invalidFormat(format, \"Invalid character '\" +\r\n invalidChar +\r\n \"' found: is it base64url encoded?\");\r\n }\r\n break;\r\n }\r\n case StringFormat.BASE64URL: {\r\n const hasPlus = value.indexOf('+') !== -1;\r\n const hasSlash = value.indexOf('/') !== -1;\r\n if (hasPlus || hasSlash) {\r\n const invalidChar = hasPlus ? '+' : '/';\r\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\r\n }\r\n value = value.replace(/-/g, '+').replace(/_/g, '/');\r\n break;\r\n }\r\n // do nothing\r\n }\r\n let bytes;\r\n try {\r\n bytes = decodeBase64(value);\r\n }\r\n catch (e) {\r\n if (e.message.includes('polyfill')) {\r\n throw e;\r\n }\r\n throw invalidFormat(format, 'Invalid character found');\r\n }\r\n const array = new Uint8Array(bytes.length);\r\n for (let i = 0; i < bytes.length; i++) {\r\n array[i] = bytes.charCodeAt(i);\r\n }\r\n return array;\r\n}\r\nclass DataURLParts {\r\n constructor(dataURL) {\r\n this.base64 = false;\r\n this.contentType = null;\r\n const matches = dataURL.match(/^data:([^,]+)?,/);\r\n if (matches === null) {\r\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\r\n }\r\n const middle = matches[1] || null;\r\n if (middle != null) {\r\n this.base64 = endsWith(middle, ';base64');\r\n this.contentType = this.base64\r\n ? middle.substring(0, middle.length - ';base64'.length)\r\n : middle;\r\n }\r\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\r\n }\r\n}\r\nfunction dataURLBytes_(dataUrl) {\r\n const parts = new DataURLParts(dataUrl);\r\n if (parts.base64) {\r\n return base64Bytes_(StringFormat.BASE64, parts.rest);\r\n }\r\n else {\r\n return percentEncodedBytes_(parts.rest);\r\n }\r\n}\r\nfunction dataURLContentType_(dataUrl) {\r\n const parts = new DataURLParts(dataUrl);\r\n return parts.contentType;\r\n}\r\nfunction endsWith(s, end) {\r\n const longEnough = s.length >= end.length;\r\n if (!longEnough) {\r\n return false;\r\n }\r\n return s.substring(s.length - end.length) === end;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @param opt_elideCopy - If true, doesn't copy mutable input data\r\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\r\n * modified after this blob's construction.\r\n *\r\n * @internal\r\n */\r\nclass FbsBlob {\r\n constructor(data, elideCopy) {\r\n let size = 0;\r\n let blobType = '';\r\n if (isNativeBlob(data)) {\r\n this.data_ = data;\r\n size = data.size;\r\n blobType = data.type;\r\n }\r\n else if (data instanceof ArrayBuffer) {\r\n if (elideCopy) {\r\n this.data_ = new Uint8Array(data);\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.byteLength);\r\n this.data_.set(new Uint8Array(data));\r\n }\r\n size = this.data_.length;\r\n }\r\n else if (data instanceof Uint8Array) {\r\n if (elideCopy) {\r\n this.data_ = data;\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.length);\r\n this.data_.set(data);\r\n }\r\n size = data.length;\r\n }\r\n this.size_ = size;\r\n this.type_ = blobType;\r\n }\r\n size() {\r\n return this.size_;\r\n }\r\n type() {\r\n return this.type_;\r\n }\r\n slice(startByte, endByte) {\r\n if (isNativeBlob(this.data_)) {\r\n const realBlob = this.data_;\r\n const sliced = sliceBlob(realBlob, startByte, endByte);\r\n if (sliced === null) {\r\n return null;\r\n }\r\n return new FbsBlob(sliced);\r\n }\r\n else {\r\n const slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\r\n return new FbsBlob(slice, true);\r\n }\r\n }\r\n static getBlob(...args) {\r\n if (isNativeBlobDefined()) {\r\n const blobby = args.map((val) => {\r\n if (val instanceof FbsBlob) {\r\n return val.data_;\r\n }\r\n else {\r\n return val;\r\n }\r\n });\r\n return new FbsBlob(getBlob$1.apply(null, blobby));\r\n }\r\n else {\r\n const uint8Arrays = args.map((val) => {\r\n if (isString(val)) {\r\n return dataFromString(StringFormat.RAW, val).data;\r\n }\r\n else {\r\n // Blobs don't exist, so this has to be a Uint8Array.\r\n return val.data_;\r\n }\r\n });\r\n let finalLength = 0;\r\n uint8Arrays.forEach((array) => {\r\n finalLength += array.byteLength;\r\n });\r\n const merged = new Uint8Array(finalLength);\r\n let index = 0;\r\n uint8Arrays.forEach((array) => {\r\n for (let i = 0; i < array.length; i++) {\r\n merged[index++] = array[i];\r\n }\r\n });\r\n return new FbsBlob(merged, true);\r\n }\r\n }\r\n uploadData() {\r\n return this.data_;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the Object resulting from parsing the given JSON, or null if the\r\n * given string does not represent a JSON object.\r\n */\r\nfunction jsonObjectOrNull(s) {\r\n let obj;\r\n try {\r\n obj = JSON.parse(s);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n if (isNonArrayObject(obj)) {\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Contains helper methods for manipulating paths.\r\n */\r\n/**\r\n * @return Null if the path is already at the root.\r\n */\r\nfunction parent(path) {\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n const index = path.lastIndexOf('/');\r\n if (index === -1) {\r\n return '';\r\n }\r\n const newPath = path.slice(0, index);\r\n return newPath;\r\n}\r\nfunction child(path, childPath) {\r\n const canonicalChildPath = childPath\r\n .split('/')\r\n .filter(component => component.length > 0)\r\n .join('/');\r\n if (path.length === 0) {\r\n return canonicalChildPath;\r\n }\r\n else {\r\n return path + '/' + canonicalChildPath;\r\n }\r\n}\r\n/**\r\n * Returns the last component of a path.\r\n * '/foo/bar' -> 'bar'\r\n * '/foo/bar/baz/' -> 'baz/'\r\n * '/a' -> 'a'\r\n */\r\nfunction lastComponent(path) {\r\n const index = path.lastIndexOf('/', path.length - 2);\r\n if (index === -1) {\r\n return path;\r\n }\r\n else {\r\n return path.slice(index + 1);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction noXform_(metadata, value) {\r\n return value;\r\n}\r\nclass Mapping {\r\n constructor(server, local, writable, xform) {\r\n this.server = server;\r\n this.local = local || server;\r\n this.writable = !!writable;\r\n this.xform = xform || noXform_;\r\n }\r\n}\r\nlet mappings_ = null;\r\nfunction xformPath(fullPath) {\r\n if (!isString(fullPath) || fullPath.length < 2) {\r\n return fullPath;\r\n }\r\n else {\r\n return lastComponent(fullPath);\r\n }\r\n}\r\nfunction getMappings() {\r\n if (mappings_) {\r\n return mappings_;\r\n }\r\n const mappings = [];\r\n mappings.push(new Mapping('bucket'));\r\n mappings.push(new Mapping('generation'));\r\n mappings.push(new Mapping('metageneration'));\r\n mappings.push(new Mapping('name', 'fullPath', true));\r\n function mappingsXformPath(_metadata, fullPath) {\r\n return xformPath(fullPath);\r\n }\r\n const nameMapping = new Mapping('name');\r\n nameMapping.xform = mappingsXformPath;\r\n mappings.push(nameMapping);\r\n /**\r\n * Coerces the second param to a number, if it is defined.\r\n */\r\n function xformSize(_metadata, size) {\r\n if (size !== undefined) {\r\n return Number(size);\r\n }\r\n else {\r\n return size;\r\n }\r\n }\r\n const sizeMapping = new Mapping('size');\r\n sizeMapping.xform = xformSize;\r\n mappings.push(sizeMapping);\r\n mappings.push(new Mapping('timeCreated'));\r\n mappings.push(new Mapping('updated'));\r\n mappings.push(new Mapping('md5Hash', null, true));\r\n mappings.push(new Mapping('cacheControl', null, true));\r\n mappings.push(new Mapping('contentDisposition', null, true));\r\n mappings.push(new Mapping('contentEncoding', null, true));\r\n mappings.push(new Mapping('contentLanguage', null, true));\r\n mappings.push(new Mapping('contentType', null, true));\r\n mappings.push(new Mapping('metadata', 'customMetadata', true));\r\n mappings_ = mappings;\r\n return mappings_;\r\n}\r\nfunction addRef(metadata, service) {\r\n function generateRef() {\r\n const bucket = metadata['bucket'];\r\n const path = metadata['fullPath'];\r\n const loc = new Location(bucket, path);\r\n return service._makeStorageReference(loc);\r\n }\r\n Object.defineProperty(metadata, 'ref', { get: generateRef });\r\n}\r\nfunction fromResource(service, resource, mappings) {\r\n const metadata = {};\r\n metadata['type'] = 'file';\r\n const len = mappings.length;\r\n for (let i = 0; i < len; i++) {\r\n const mapping = mappings[i];\r\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\r\n }\r\n addRef(metadata, service);\r\n return metadata;\r\n}\r\nfunction fromResourceString(service, resourceString, mappings) {\r\n const obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n const resource = obj;\r\n return fromResource(service, resource, mappings);\r\n}\r\nfunction downloadUrlFromResourceString(metadata, resourceString, host, protocol) {\r\n const obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n if (!isString(obj['downloadTokens'])) {\r\n // This can happen if objects are uploaded through GCS and retrieved\r\n // through list, so we don't want to throw an Error.\r\n return null;\r\n }\r\n const tokens = obj['downloadTokens'];\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n const encode = encodeURIComponent;\r\n const tokensList = tokens.split(',');\r\n const urls = tokensList.map((token) => {\r\n const bucket = metadata['bucket'];\r\n const path = metadata['fullPath'];\r\n const urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\r\n const base = makeUrl(urlPart, host, protocol);\r\n const queryString = makeQueryString({\r\n alt: 'media',\r\n token\r\n });\r\n return base + queryString;\r\n });\r\n return urls[0];\r\n}\r\nfunction toResourceString(metadata, mappings) {\r\n const resource = {};\r\n const len = mappings.length;\r\n for (let i = 0; i < len; i++) {\r\n const mapping = mappings[i];\r\n if (mapping.writable) {\r\n resource[mapping.server] = metadata[mapping.local];\r\n }\r\n }\r\n return JSON.stringify(resource);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PREFIXES_KEY = 'prefixes';\r\nconst ITEMS_KEY = 'items';\r\nfunction fromBackendResponse(service, bucket, resource) {\r\n const listResult = {\r\n prefixes: [],\r\n items: [],\r\n nextPageToken: resource['nextPageToken']\r\n };\r\n if (resource[PREFIXES_KEY]) {\r\n for (const path of resource[PREFIXES_KEY]) {\r\n const pathWithoutTrailingSlash = path.replace(/\\/$/, '');\r\n const reference = service._makeStorageReference(new Location(bucket, pathWithoutTrailingSlash));\r\n listResult.prefixes.push(reference);\r\n }\r\n }\r\n if (resource[ITEMS_KEY]) {\r\n for (const item of resource[ITEMS_KEY]) {\r\n const reference = service._makeStorageReference(new Location(bucket, item['name']));\r\n listResult.items.push(reference);\r\n }\r\n }\r\n return listResult;\r\n}\r\nfunction fromResponseString(service, bucket, resourceString) {\r\n const obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n const resource = obj;\r\n return fromBackendResponse(service, bucket, resource);\r\n}\n\n/**\r\n * Contains a fully specified request.\r\n *\r\n * @param I - the type of the backend's network response.\r\n * @param O - the output response type used by the rest of the SDK.\r\n */\r\nclass RequestInfo {\r\n constructor(url, method, \r\n /**\r\n * Returns the value with which to resolve the request's promise. Only called\r\n * if the request is successful. Throw from this function to reject the\r\n * returned Request's promise with the thrown error.\r\n * Note: The XhrIo passed to this function may be reused after this callback\r\n * returns. Do not keep a reference to it in any way.\r\n */\r\n handler, timeout) {\r\n this.url = url;\r\n this.method = method;\r\n this.handler = handler;\r\n this.timeout = timeout;\r\n this.urlParams = {};\r\n this.headers = {};\r\n this.body = null;\r\n this.errorHandler = null;\r\n /**\r\n * Called with the current number of bytes uploaded and total size (-1 if not\r\n * computable) of the request body (i.e. used to report upload progress).\r\n */\r\n this.progressCallback = null;\r\n this.successCodes = [200];\r\n this.additionalRetryCodes = [];\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws the UNKNOWN StorageError if cndn is false.\r\n */\r\nfunction handlerCheck(cndn) {\r\n if (!cndn) {\r\n throw unknown();\r\n }\r\n}\r\nfunction metadataHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n const metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return metadata;\r\n }\r\n return handler;\r\n}\r\nfunction listHandler(service, bucket) {\r\n function handler(xhr, text) {\r\n const listResult = fromResponseString(service, bucket, text);\r\n handlerCheck(listResult !== null);\r\n return listResult;\r\n }\r\n return handler;\r\n}\r\nfunction downloadUrlHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n const metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return downloadUrlFromResourceString(metadata, text, service.host, service._protocol);\r\n }\r\n return handler;\r\n}\r\nfunction sharedErrorHandler(location) {\r\n function errorHandler(xhr, err) {\r\n let newErr;\r\n if (xhr.getStatus() === 401) {\r\n if (\r\n // This exact message string is the only consistent part of the\r\n // server's error response that identifies it as an App Check error.\r\n xhr.getErrorText().includes('Firebase App Check token is invalid')) {\r\n newErr = unauthorizedApp();\r\n }\r\n else {\r\n newErr = unauthenticated();\r\n }\r\n }\r\n else {\r\n if (xhr.getStatus() === 402) {\r\n newErr = quotaExceeded(location.bucket);\r\n }\r\n else {\r\n if (xhr.getStatus() === 403) {\r\n newErr = unauthorized(location.path);\r\n }\r\n else {\r\n newErr = err;\r\n }\r\n }\r\n }\r\n newErr.status = xhr.getStatus();\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction objectErrorHandler(location) {\r\n const shared = sharedErrorHandler(location);\r\n function errorHandler(xhr, err) {\r\n let newErr = shared(xhr, err);\r\n if (xhr.getStatus() === 404) {\r\n newErr = objectNotFound(location.path);\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction getMetadata$2(service, location, mappings) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction list$2(service, location, delimiter, pageToken, maxResults) {\r\n const urlParams = {};\r\n if (location.isRoot) {\r\n urlParams['prefix'] = '';\r\n }\r\n else {\r\n urlParams['prefix'] = location.path + '/';\r\n }\r\n if (delimiter && delimiter.length > 0) {\r\n urlParams['delimiter'] = delimiter;\r\n }\r\n if (pageToken) {\r\n urlParams['pageToken'] = pageToken;\r\n }\r\n if (maxResults) {\r\n urlParams['maxResults'] = maxResults;\r\n }\r\n const urlPart = location.bucketOnlyServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, listHandler(service, location.bucket), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction getBytes$1(service, location, maxDownloadSizeBytes) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol) + '?alt=media';\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, (_, data) => data, timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n if (maxDownloadSizeBytes !== undefined) {\r\n requestInfo.headers['Range'] = `bytes=0-${maxDownloadSizeBytes}`;\r\n requestInfo.successCodes = [200 /* OK */, 206 /* Partial Content */];\r\n }\r\n return requestInfo;\r\n}\r\nfunction getDownloadUrl(service, location, mappings) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, downloadUrlHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction updateMetadata$2(service, location, metadata, mappings) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'PATCH';\r\n const body = toResourceString(metadata, mappings);\r\n const headers = { 'Content-Type': 'application/json; charset=utf-8' };\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction deleteObject$2(service, location) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'DELETE';\r\n const timeout = service.maxOperationRetryTime;\r\n function handler(_xhr, _text) { }\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.successCodes = [200, 204];\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction determineContentType_(metadata, blob) {\r\n return ((metadata && metadata['contentType']) ||\r\n (blob && blob.type()) ||\r\n 'application/octet-stream');\r\n}\r\nfunction metadataForUpload_(location, blob, metadata) {\r\n const metadataClone = Object.assign({}, metadata);\r\n metadataClone['fullPath'] = location.path;\r\n metadataClone['size'] = blob.size();\r\n if (!metadataClone['contentType']) {\r\n metadataClone['contentType'] = determineContentType_(null, blob);\r\n }\r\n return metadataClone;\r\n}\r\n/**\r\n * Prepare RequestInfo for uploads as Content-Type: multipart.\r\n */\r\nfunction multipartUpload(service, location, mappings, blob, metadata) {\r\n const urlPart = location.bucketOnlyServerUrl();\r\n const headers = {\r\n 'X-Goog-Upload-Protocol': 'multipart'\r\n };\r\n function genBoundary() {\r\n let str = '';\r\n for (let i = 0; i < 2; i++) {\r\n str = str + Math.random().toString().slice(2);\r\n }\r\n return str;\r\n }\r\n const boundary = genBoundary();\r\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\r\n const metadata_ = metadataForUpload_(location, blob, metadata);\r\n const metadataString = toResourceString(metadata_, mappings);\r\n const preBlobPart = '--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\r\n metadataString +\r\n '\\r\\n--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: ' +\r\n metadata_['contentType'] +\r\n '\\r\\n\\r\\n';\r\n const postBlobPart = '\\r\\n--' + boundary + '--';\r\n const body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n const urlParams = { name: metadata_['fullPath'] };\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'POST';\r\n const timeout = service.maxUploadRetryTime;\r\n const requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param current The number of bytes that have been uploaded so far.\r\n * @param total The total number of bytes in the upload.\r\n * @param opt_finalized True if the server has finished the upload.\r\n * @param opt_metadata The upload metadata, should\r\n * only be passed if opt_finalized is true.\r\n */\r\nclass ResumableUploadStatus {\r\n constructor(current, total, finalized, metadata) {\r\n this.current = current;\r\n this.total = total;\r\n this.finalized = !!finalized;\r\n this.metadata = metadata || null;\r\n }\r\n}\r\nfunction checkResumeHeader_(xhr, allowed) {\r\n let status = null;\r\n try {\r\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n const allowedStatus = allowed || ['active'];\r\n handlerCheck(!!status && allowedStatus.indexOf(status) !== -1);\r\n return status;\r\n}\r\nfunction createResumableUpload(service, location, mappings, blob, metadata) {\r\n const urlPart = location.bucketOnlyServerUrl();\r\n const metadataForUpload = metadataForUpload_(location, blob, metadata);\r\n const urlParams = { name: metadataForUpload['fullPath'] };\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'POST';\r\n const headers = {\r\n 'X-Goog-Upload-Protocol': 'resumable',\r\n 'X-Goog-Upload-Command': 'start',\r\n 'X-Goog-Upload-Header-Content-Length': `${blob.size()}`,\r\n 'X-Goog-Upload-Header-Content-Type': metadataForUpload['contentType'],\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n };\r\n const body = toResourceString(metadataForUpload, mappings);\r\n const timeout = service.maxUploadRetryTime;\r\n function handler(xhr) {\r\n checkResumeHeader_(xhr);\r\n let url;\r\n try {\r\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n handlerCheck(isString(url));\r\n return url;\r\n }\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n */\r\nfunction getResumableUploadStatus(service, location, url, blob) {\r\n const headers = { 'X-Goog-Upload-Command': 'query' };\r\n function handler(xhr) {\r\n const status = checkResumeHeader_(xhr, ['active', 'final']);\r\n let sizeString = null;\r\n try {\r\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n if (!sizeString) {\r\n // null or empty string\r\n handlerCheck(false);\r\n }\r\n const size = Number(sizeString);\r\n handlerCheck(!isNaN(size));\r\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\r\n }\r\n const method = 'POST';\r\n const timeout = service.maxUploadRetryTime;\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * Any uploads via the resumable upload API must transfer a number of bytes\r\n * that is a multiple of this number.\r\n */\r\nconst RESUMABLE_UPLOAD_CHUNK_SIZE = 256 * 1024;\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n * @param chunkSize Number of bytes to upload.\r\n * @param status The previous status.\r\n * If not passed or null, we start from the beginning.\r\n * @throws fbs.Error If the upload is already complete, the passed in status\r\n * has a final size inconsistent with the blob, or the blob cannot be sliced\r\n * for upload.\r\n */\r\nfunction continueResumableUpload(location, service, url, blob, chunkSize, mappings, status, progressCallback) {\r\n // TODO(andysoto): standardize on internal asserts\r\n // assert(!(opt_status && opt_status.finalized));\r\n const status_ = new ResumableUploadStatus(0, 0);\r\n if (status) {\r\n status_.current = status.current;\r\n status_.total = status.total;\r\n }\r\n else {\r\n status_.current = 0;\r\n status_.total = blob.size();\r\n }\r\n if (blob.size() !== status_.total) {\r\n throw serverFileWrongSize();\r\n }\r\n const bytesLeft = status_.total - status_.current;\r\n let bytesToUpload = bytesLeft;\r\n if (chunkSize > 0) {\r\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\r\n }\r\n const startByte = status_.current;\r\n const endByte = startByte + bytesToUpload;\r\n let uploadCommand = '';\r\n if (bytesToUpload === 0) {\r\n uploadCommand = 'finalize';\r\n }\r\n else if (bytesLeft === bytesToUpload) {\r\n uploadCommand = 'upload, finalize';\r\n }\r\n else {\r\n uploadCommand = 'upload';\r\n }\r\n const headers = {\r\n 'X-Goog-Upload-Command': uploadCommand,\r\n 'X-Goog-Upload-Offset': `${status_.current}`\r\n };\r\n const body = blob.slice(startByte, endByte);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n function handler(xhr, text) {\r\n // TODO(andysoto): Verify the MD5 of each uploaded range:\r\n // the 'x-range-md5' header comes back with status code 308 responses.\r\n // We'll only be able to bail out though, because you can't re-upload a\r\n // range that you previously uploaded.\r\n const uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\r\n const newCurrent = status_.current + bytesToUpload;\r\n const size = blob.size();\r\n let metadata;\r\n if (uploadStatus === 'final') {\r\n metadata = metadataHandler(service, mappings)(xhr, text);\r\n }\r\n else {\r\n metadata = null;\r\n }\r\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\r\n }\r\n const method = 'POST';\r\n const timeout = service.maxUploadRetryTime;\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.progressCallback = progressCallback || null;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An event that is triggered on a task.\r\n * @internal\r\n */\r\nconst TaskEvent = {\r\n /**\r\n * For this event,\r\n *

\r\n */\r\n STATE_CHANGED: 'state_changed'\r\n};\r\n// type keys = keyof TaskState\r\n/**\r\n * Represents the current state of a running upload.\r\n * @internal\r\n */\r\nconst TaskState = {\r\n /** The task is currently transferring data. */\r\n RUNNING: 'running',\r\n /** The task was paused by the user. */\r\n PAUSED: 'paused',\r\n /** The task completed successfully. */\r\n SUCCESS: 'success',\r\n /** The task was canceled. */\r\n CANCELED: 'canceled',\r\n /** The task failed with an error. */\r\n ERROR: 'error'\r\n};\r\nfunction taskStateFromInternalTaskState(state) {\r\n switch (state) {\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n return TaskState.RUNNING;\r\n case \"paused\" /* InternalTaskState.PAUSED */:\r\n return TaskState.PAUSED;\r\n case \"success\" /* InternalTaskState.SUCCESS */:\r\n return TaskState.SUCCESS;\r\n case \"canceled\" /* InternalTaskState.CANCELED */:\r\n return TaskState.CANCELED;\r\n case \"error\" /* InternalTaskState.ERROR */:\r\n return TaskState.ERROR;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n return TaskState.ERROR;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Observer {\r\n constructor(nextOrObserver, error, complete) {\r\n const asFunctions = isFunction(nextOrObserver) || error != null || complete != null;\r\n if (asFunctions) {\r\n this.next = nextOrObserver;\r\n this.error = error !== null && error !== void 0 ? error : undefined;\r\n this.complete = complete !== null && complete !== void 0 ? complete : undefined;\r\n }\r\n else {\r\n const observer = nextOrObserver;\r\n this.next = observer.next;\r\n this.error = observer.error;\r\n this.complete = observer.complete;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a function that invokes f with its arguments asynchronously as a\r\n * microtask, i.e. as soon as possible after the current script returns back\r\n * into browser code.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(f) {\r\n return (...argsToForward) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.resolve().then(() => f(...argsToForward));\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** An override for the text-based Connection. Used in tests. */\r\nlet textFactoryOverride = null;\r\n/**\r\n * Network layer for browsers. We use this instead of goog.net.XhrIo because\r\n * goog.net.XhrIo is hyuuuuge and doesn't work in React Native on Android.\r\n */\r\nclass XhrConnection {\r\n constructor() {\r\n this.sent_ = false;\r\n this.xhr_ = new XMLHttpRequest();\r\n this.initXhr();\r\n this.errorCode_ = ErrorCode.NO_ERROR;\r\n this.sendPromise_ = new Promise(resolve => {\r\n this.xhr_.addEventListener('abort', () => {\r\n this.errorCode_ = ErrorCode.ABORT;\r\n resolve();\r\n });\r\n this.xhr_.addEventListener('error', () => {\r\n this.errorCode_ = ErrorCode.NETWORK_ERROR;\r\n resolve();\r\n });\r\n this.xhr_.addEventListener('load', () => {\r\n resolve();\r\n });\r\n });\r\n }\r\n send(url, method, body, headers) {\r\n if (this.sent_) {\r\n throw internalError('cannot .send() more than once');\r\n }\r\n this.sent_ = true;\r\n this.xhr_.open(method, url, true);\r\n if (headers !== undefined) {\r\n for (const key in headers) {\r\n if (headers.hasOwnProperty(key)) {\r\n this.xhr_.setRequestHeader(key, headers[key].toString());\r\n }\r\n }\r\n }\r\n if (body !== undefined) {\r\n this.xhr_.send(body);\r\n }\r\n else {\r\n this.xhr_.send();\r\n }\r\n return this.sendPromise_;\r\n }\r\n getErrorCode() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorCode() before sending');\r\n }\r\n return this.errorCode_;\r\n }\r\n getStatus() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getStatus() before sending');\r\n }\r\n try {\r\n return this.xhr_.status;\r\n }\r\n catch (e) {\r\n return -1;\r\n }\r\n }\r\n getResponse() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getResponse() before sending');\r\n }\r\n return this.xhr_.response;\r\n }\r\n getErrorText() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorText() before sending');\r\n }\r\n return this.xhr_.statusText;\r\n }\r\n /** Aborts the request. */\r\n abort() {\r\n this.xhr_.abort();\r\n }\r\n getResponseHeader(header) {\r\n return this.xhr_.getResponseHeader(header);\r\n }\r\n addUploadProgressListener(listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.addEventListener('progress', listener);\r\n }\r\n }\r\n removeUploadProgressListener(listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.removeEventListener('progress', listener);\r\n }\r\n }\r\n}\r\nclass XhrTextConnection extends XhrConnection {\r\n initXhr() {\r\n this.xhr_.responseType = 'text';\r\n }\r\n}\r\nfunction newTextConnection() {\r\n return textFactoryOverride ? textFactoryOverride() : new XhrTextConnection();\r\n}\r\nclass XhrBytesConnection extends XhrConnection {\r\n initXhr() {\r\n this.xhr_.responseType = 'arraybuffer';\r\n }\r\n}\r\nfunction newBytesConnection() {\r\n return new XhrBytesConnection();\r\n}\r\nclass XhrBlobConnection extends XhrConnection {\r\n initXhr() {\r\n this.xhr_.responseType = 'blob';\r\n }\r\n}\r\nfunction newBlobConnection() {\r\n return new XhrBlobConnection();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\r\n * upload and manage callbacks for various events.\r\n * @internal\r\n */\r\nclass UploadTask {\r\n /**\r\n * @param ref - The firebaseStorage.Reference object this task came\r\n * from, untyped to avoid cyclic dependencies.\r\n * @param blob - The blob to upload.\r\n */\r\n constructor(ref, blob, metadata = null) {\r\n /**\r\n * Number of bytes transferred so far.\r\n */\r\n this._transferred = 0;\r\n this._needToFetchStatus = false;\r\n this._needToFetchMetadata = false;\r\n this._observers = [];\r\n this._error = undefined;\r\n this._uploadUrl = undefined;\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n this._ref = ref;\r\n this._blob = blob;\r\n this._metadata = metadata;\r\n this._mappings = getMappings();\r\n this._resumable = this._shouldDoResumable(this._blob);\r\n this._state = \"running\" /* InternalTaskState.RUNNING */;\r\n this._errorHandler = error => {\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n if (error._codeEquals(StorageErrorCode.CANCELED)) {\r\n this._needToFetchStatus = true;\r\n this.completeTransitions_();\r\n }\r\n else {\r\n const backoffExpired = this.isExponentialBackoffExpired();\r\n if (isRetryStatusCode(error.status, [])) {\r\n if (backoffExpired) {\r\n error = retryLimitExceeded();\r\n }\r\n else {\r\n this.sleepTime = Math.max(this.sleepTime * 2, DEFAULT_MIN_SLEEP_TIME_MILLIS);\r\n this._needToFetchStatus = true;\r\n this.completeTransitions_();\r\n return;\r\n }\r\n }\r\n this._error = error;\r\n this._transition(\"error\" /* InternalTaskState.ERROR */);\r\n }\r\n };\r\n this._metadataErrorHandler = error => {\r\n this._request = undefined;\r\n if (error._codeEquals(StorageErrorCode.CANCELED)) {\r\n this.completeTransitions_();\r\n }\r\n else {\r\n this._error = error;\r\n this._transition(\"error\" /* InternalTaskState.ERROR */);\r\n }\r\n };\r\n this.sleepTime = 0;\r\n this.maxSleepTime = this._ref.storage.maxUploadRetryTime;\r\n this._promise = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n this._start();\r\n });\r\n // Prevent uncaught rejections on the internal promise from bubbling out\r\n // to the top level with a dummy handler.\r\n this._promise.then(null, () => { });\r\n }\r\n isExponentialBackoffExpired() {\r\n return this.sleepTime > this.maxSleepTime;\r\n }\r\n _makeProgressCallback() {\r\n const sizeBefore = this._transferred;\r\n return loaded => this._updateProgress(sizeBefore + loaded);\r\n }\r\n _shouldDoResumable(blob) {\r\n return blob.size() > 256 * 1024;\r\n }\r\n _start() {\r\n if (this._state !== \"running\" /* InternalTaskState.RUNNING */) {\r\n // This can happen if someone pauses us in a resume callback, for example.\r\n return;\r\n }\r\n if (this._request !== undefined) {\r\n return;\r\n }\r\n if (this._resumable) {\r\n if (this._uploadUrl === undefined) {\r\n this._createResumable();\r\n }\r\n else {\r\n if (this._needToFetchStatus) {\r\n this._fetchStatus();\r\n }\r\n else {\r\n if (this._needToFetchMetadata) {\r\n // Happens if we miss the metadata on upload completion.\r\n this._fetchMetadata();\r\n }\r\n else {\r\n this.pendingTimeout = setTimeout(() => {\r\n this.pendingTimeout = undefined;\r\n this._continueUpload();\r\n }, this.sleepTime);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this._oneShotUpload();\r\n }\r\n }\r\n _resolveToken(callback) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.all([\r\n this._ref.storage._getAuthToken(),\r\n this._ref.storage._getAppCheckToken()\r\n ]).then(([authToken, appCheckToken]) => {\r\n switch (this._state) {\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n callback(authToken, appCheckToken);\r\n break;\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n this._transition(\"canceled\" /* InternalTaskState.CANCELED */);\r\n break;\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n this._transition(\"paused\" /* InternalTaskState.PAUSED */);\r\n break;\r\n }\r\n });\r\n }\r\n // TODO(andysoto): assert false\r\n _createResumable() {\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = createResumableUpload(this._ref.storage, this._ref._location, this._mappings, this._blob, this._metadata);\r\n const createRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = createRequest;\r\n createRequest.getPromise().then((url) => {\r\n this._request = undefined;\r\n this._uploadUrl = url;\r\n this._needToFetchStatus = false;\r\n this.completeTransitions_();\r\n }, this._errorHandler);\r\n });\r\n }\r\n _fetchStatus() {\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n const url = this._uploadUrl;\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = getResumableUploadStatus(this._ref.storage, this._ref._location, url, this._blob);\r\n const statusRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = statusRequest;\r\n statusRequest.getPromise().then(status => {\r\n status = status;\r\n this._request = undefined;\r\n this._updateProgress(status.current);\r\n this._needToFetchStatus = false;\r\n if (status.finalized) {\r\n this._needToFetchMetadata = true;\r\n }\r\n this.completeTransitions_();\r\n }, this._errorHandler);\r\n });\r\n }\r\n _continueUpload() {\r\n const chunkSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n const status = new ResumableUploadStatus(this._transferred, this._blob.size());\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n const url = this._uploadUrl;\r\n this._resolveToken((authToken, appCheckToken) => {\r\n let requestInfo;\r\n try {\r\n requestInfo = continueResumableUpload(this._ref._location, this._ref.storage, url, this._blob, chunkSize, this._mappings, status, this._makeProgressCallback());\r\n }\r\n catch (e) {\r\n this._error = e;\r\n this._transition(\"error\" /* InternalTaskState.ERROR */);\r\n return;\r\n }\r\n const uploadRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken, \r\n /*retry=*/ false // Upload requests should not be retried as each retry should be preceded by another query request. Which is handled in this file.\r\n );\r\n this._request = uploadRequest;\r\n uploadRequest.getPromise().then((newStatus) => {\r\n this._increaseMultiplier();\r\n this._request = undefined;\r\n this._updateProgress(newStatus.current);\r\n if (newStatus.finalized) {\r\n this._metadata = newStatus.metadata;\r\n this._transition(\"success\" /* InternalTaskState.SUCCESS */);\r\n }\r\n else {\r\n this.completeTransitions_();\r\n }\r\n }, this._errorHandler);\r\n });\r\n }\r\n _increaseMultiplier() {\r\n const currentSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n // Max chunk size is 32M.\r\n if (currentSize * 2 < 32 * 1024 * 1024) {\r\n this._chunkMultiplier *= 2;\r\n }\r\n }\r\n _fetchMetadata() {\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = getMetadata$2(this._ref.storage, this._ref._location, this._mappings);\r\n const metadataRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = metadataRequest;\r\n metadataRequest.getPromise().then(metadata => {\r\n this._request = undefined;\r\n this._metadata = metadata;\r\n this._transition(\"success\" /* InternalTaskState.SUCCESS */);\r\n }, this._metadataErrorHandler);\r\n });\r\n }\r\n _oneShotUpload() {\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = multipartUpload(this._ref.storage, this._ref._location, this._mappings, this._blob, this._metadata);\r\n const multipartRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = multipartRequest;\r\n multipartRequest.getPromise().then(metadata => {\r\n this._request = undefined;\r\n this._metadata = metadata;\r\n this._updateProgress(this._blob.size());\r\n this._transition(\"success\" /* InternalTaskState.SUCCESS */);\r\n }, this._errorHandler);\r\n });\r\n }\r\n _updateProgress(transferred) {\r\n const old = this._transferred;\r\n this._transferred = transferred;\r\n // A progress update can make the \"transferred\" value smaller (e.g. a\r\n // partial upload not completed by server, after which the \"transferred\"\r\n // value may reset to the value at the beginning of the request).\r\n if (this._transferred !== old) {\r\n this._notifyObservers();\r\n }\r\n }\r\n _transition(state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n switch (state) {\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n else if (this.pendingTimeout) {\r\n clearTimeout(this.pendingTimeout);\r\n this.pendingTimeout = undefined;\r\n this.completeTransitions_();\r\n }\r\n break;\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n const wasPaused = this._state === \"paused\" /* InternalTaskState.PAUSED */;\r\n this._state = state;\r\n if (wasPaused) {\r\n this._notifyObservers();\r\n this._start();\r\n }\r\n break;\r\n case \"paused\" /* InternalTaskState.PAUSED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"canceled\" /* InternalTaskState.CANCELED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._error = canceled();\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"error\" /* InternalTaskState.ERROR */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"success\" /* InternalTaskState.SUCCESS */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n }\r\n }\r\n completeTransitions_() {\r\n switch (this._state) {\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n this._transition(\"paused\" /* InternalTaskState.PAUSED */);\r\n break;\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n this._transition(\"canceled\" /* InternalTaskState.CANCELED */);\r\n break;\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n this._start();\r\n break;\r\n }\r\n }\r\n /**\r\n * A snapshot of the current task state.\r\n */\r\n get snapshot() {\r\n const externalState = taskStateFromInternalTaskState(this._state);\r\n return {\r\n bytesTransferred: this._transferred,\r\n totalBytes: this._blob.size(),\r\n state: externalState,\r\n metadata: this._metadata,\r\n task: this,\r\n ref: this._ref\r\n };\r\n }\r\n /**\r\n * Adds a callback for an event.\r\n * @param type - The type of event to listen for.\r\n * @param nextOrObserver -\r\n * The `next` function, which gets called for each item in\r\n * the event stream, or an observer object with some or all of these three\r\n * properties (`next`, `error`, `complete`).\r\n * @param error - A function that gets called with a `StorageError`\r\n * if the event stream ends due to an error.\r\n * @param completed - A function that gets called if the\r\n * event stream ends normally.\r\n * @returns\r\n * If only the event argument is passed, returns a function you can use to\r\n * add callbacks (see the examples above). If more than just the event\r\n * argument is passed, returns a function you can call to unregister the\r\n * callbacks.\r\n */\r\n on(type, nextOrObserver, error, completed) {\r\n // Note: `type` isn't being used. Its type is also incorrect. TaskEvent should not be a string.\r\n const observer = new Observer(nextOrObserver || undefined, error || undefined, completed || undefined);\r\n this._addObserver(observer);\r\n return () => {\r\n this._removeObserver(observer);\r\n };\r\n }\r\n /**\r\n * This object behaves like a Promise, and resolves with its snapshot data\r\n * when the upload completes.\r\n * @param onFulfilled - The fulfillment callback. Promise chaining works as normal.\r\n * @param onRejected - The rejection callback.\r\n */\r\n then(onFulfilled, onRejected) {\r\n // These casts are needed so that TypeScript can infer the types of the\r\n // resulting Promise.\r\n return this._promise.then(onFulfilled, onRejected);\r\n }\r\n /**\r\n * Equivalent to calling `then(null, onRejected)`.\r\n */\r\n catch(onRejected) {\r\n return this.then(null, onRejected);\r\n }\r\n /**\r\n * Adds the given observer.\r\n */\r\n _addObserver(observer) {\r\n this._observers.push(observer);\r\n this._notifyObserver(observer);\r\n }\r\n /**\r\n * Removes the given observer.\r\n */\r\n _removeObserver(observer) {\r\n const i = this._observers.indexOf(observer);\r\n if (i !== -1) {\r\n this._observers.splice(i, 1);\r\n }\r\n }\r\n _notifyObservers() {\r\n this._finishPromise();\r\n const observers = this._observers.slice();\r\n observers.forEach(observer => {\r\n this._notifyObserver(observer);\r\n });\r\n }\r\n _finishPromise() {\r\n if (this._resolve !== undefined) {\r\n let triggered = true;\r\n switch (taskStateFromInternalTaskState(this._state)) {\r\n case TaskState.SUCCESS:\r\n async(this._resolve.bind(null, this.snapshot))();\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n const toCall = this._reject;\r\n async(toCall.bind(null, this._error))();\r\n break;\r\n default:\r\n triggered = false;\r\n break;\r\n }\r\n if (triggered) {\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n }\r\n _notifyObserver(observer) {\r\n const externalState = taskStateFromInternalTaskState(this._state);\r\n switch (externalState) {\r\n case TaskState.RUNNING:\r\n case TaskState.PAUSED:\r\n if (observer.next) {\r\n async(observer.next.bind(observer, this.snapshot))();\r\n }\r\n break;\r\n case TaskState.SUCCESS:\r\n if (observer.complete) {\r\n async(observer.complete.bind(observer))();\r\n }\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n break;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n }\r\n }\r\n /**\r\n * Resumes a paused task. Has no effect on a currently running or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n resume() {\r\n const valid = this._state === \"paused\" /* InternalTaskState.PAUSED */ ||\r\n this._state === \"pausing\" /* InternalTaskState.PAUSING */;\r\n if (valid) {\r\n this._transition(\"running\" /* InternalTaskState.RUNNING */);\r\n }\r\n return valid;\r\n }\r\n /**\r\n * Pauses a currently running task. Has no effect on a paused or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n pause() {\r\n const valid = this._state === \"running\" /* InternalTaskState.RUNNING */;\r\n if (valid) {\r\n this._transition(\"pausing\" /* InternalTaskState.PAUSING */);\r\n }\r\n return valid;\r\n }\r\n /**\r\n * Cancels a currently running or paused task. Has no effect on a complete or\r\n * failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n cancel() {\r\n const valid = this._state === \"running\" /* InternalTaskState.RUNNING */ ||\r\n this._state === \"pausing\" /* InternalTaskState.PAUSING */;\r\n if (valid) {\r\n this._transition(\"canceling\" /* InternalTaskState.CANCELING */);\r\n }\r\n return valid;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provides methods to interact with a bucket in the Firebase Storage service.\r\n * @internal\r\n * @param _location - An fbs.location, or the URL at\r\n * which to base this object, in one of the following forms:\r\n * gs:///\r\n * http[s]://firebasestorage.googleapis.com/\r\n * /b//o/\r\n * Any query or fragment strings will be ignored in the http[s]\r\n * format. If no value is passed, the storage object will use a URL based on\r\n * the project ID of the base firebase.App instance.\r\n */\r\nclass Reference {\r\n constructor(_service, location) {\r\n this._service = _service;\r\n if (location instanceof Location) {\r\n this._location = location;\r\n }\r\n else {\r\n this._location = Location.makeFromUrl(location, _service.host);\r\n }\r\n }\r\n /**\r\n * Returns the URL for the bucket and path this object references,\r\n * in the form gs:///\r\n * @override\r\n */\r\n toString() {\r\n return 'gs://' + this._location.bucket + '/' + this._location.path;\r\n }\r\n _newRef(service, location) {\r\n return new Reference(service, location);\r\n }\r\n /**\r\n * A reference to the root of this object's bucket.\r\n */\r\n get root() {\r\n const location = new Location(this._location.bucket, '');\r\n return this._newRef(this._service, location);\r\n }\r\n /**\r\n * The name of the bucket containing this reference's object.\r\n */\r\n get bucket() {\r\n return this._location.bucket;\r\n }\r\n /**\r\n * The full path of this object.\r\n */\r\n get fullPath() {\r\n return this._location.path;\r\n }\r\n /**\r\n * The short name of this object, which is the last component of the full path.\r\n * For example, if fullPath is 'full/path/image.png', name is 'image.png'.\r\n */\r\n get name() {\r\n return lastComponent(this._location.path);\r\n }\r\n /**\r\n * The `StorageService` instance this `StorageReference` is associated with.\r\n */\r\n get storage() {\r\n return this._service;\r\n }\r\n /**\r\n * A `StorageReference` pointing to the parent location of this `StorageReference`, or null if\r\n * this reference is the root.\r\n */\r\n get parent() {\r\n const newPath = parent(this._location.path);\r\n if (newPath === null) {\r\n return null;\r\n }\r\n const location = new Location(this._location.bucket, newPath);\r\n return new Reference(this._service, location);\r\n }\r\n /**\r\n * Utility function to throw an error in methods that do not accept a root reference.\r\n */\r\n _throwIfRoot(name) {\r\n if (this._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n }\r\n}\r\n/**\r\n * Download the bytes at the object's location.\r\n * @returns A Promise containing the downloaded bytes.\r\n */\r\nfunction getBytesInternal(ref, maxDownloadSizeBytes) {\r\n ref._throwIfRoot('getBytes');\r\n const requestInfo = getBytes$1(ref.storage, ref._location, maxDownloadSizeBytes);\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newBytesConnection)\r\n .then(bytes => maxDownloadSizeBytes !== undefined\r\n ? // GCS may not honor the Range header for small files\r\n bytes.slice(0, maxDownloadSizeBytes)\r\n : bytes);\r\n}\r\n/**\r\n * Download the bytes at the object's location.\r\n * @returns A Promise containing the downloaded blob.\r\n */\r\nfunction getBlobInternal(ref, maxDownloadSizeBytes) {\r\n ref._throwIfRoot('getBlob');\r\n const requestInfo = getBytes$1(ref.storage, ref._location, maxDownloadSizeBytes);\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newBlobConnection)\r\n .then(blob => maxDownloadSizeBytes !== undefined\r\n ? // GCS may not honor the Range header for small files\r\n blob.slice(0, maxDownloadSizeBytes)\r\n : blob);\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload is not resumable.\r\n *\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded data.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadBytes$1(ref, data, metadata) {\r\n ref._throwIfRoot('uploadBytes');\r\n const requestInfo = multipartUpload(ref.storage, ref._location, getMappings(), new FbsBlob(data, true), metadata);\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newTextConnection)\r\n .then(finalMetadata => {\r\n return {\r\n metadata: finalMetadata,\r\n ref\r\n };\r\n });\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded data.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable$1(ref, data, metadata) {\r\n ref._throwIfRoot('uploadBytesResumable');\r\n return new UploadTask(ref, new FbsBlob(data), metadata);\r\n}\r\n/**\r\n * Uploads a string to this object's location.\r\n * The upload is not resumable.\r\n * @public\r\n * @param ref - StorageReference where string should be uploaded.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @param metadata - Metadata for the newly uploaded string.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadString$1(ref, value, format = StringFormat.RAW, metadata) {\r\n ref._throwIfRoot('uploadString');\r\n const data = dataFromString(format, value);\r\n const metadataClone = Object.assign({}, metadata);\r\n if (metadataClone['contentType'] == null && data.contentType != null) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return uploadBytes$1(ref, data.data, metadataClone);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - StorageReference to get list from.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll$1(ref) {\r\n const accumulator = {\r\n prefixes: [],\r\n items: []\r\n };\r\n return listAllHelper(ref, accumulator).then(() => accumulator);\r\n}\r\n/**\r\n * Separated from listAll because async functions can't use \"arguments\".\r\n * @param ref\r\n * @param accumulator\r\n * @param pageToken\r\n */\r\nasync function listAllHelper(ref, accumulator, pageToken) {\r\n const opt = {\r\n // maxResults is 1000 by default.\r\n pageToken\r\n };\r\n const nextPage = await list$1(ref, opt);\r\n accumulator.prefixes.push(...nextPage.prefixes);\r\n accumulator.items.push(...nextPage.items);\r\n if (nextPage.nextPageToken != null) {\r\n await listAllHelper(ref, accumulator, nextPage.nextPageToken);\r\n }\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - StorageReference to get list from.\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list$1(ref, options) {\r\n if (options != null) {\r\n if (typeof options.maxResults === 'number') {\r\n validateNumber('options.maxResults', \r\n /* minValue= */ 1, \r\n /* maxValue= */ 1000, options.maxResults);\r\n }\r\n }\r\n const op = options || {};\r\n const requestInfo = list$2(ref.storage, ref._location, \r\n /*delimiter= */ '/', op.pageToken, op.maxResults);\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retrieved, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - StorageReference to get metadata from.\r\n */\r\nfunction getMetadata$1(ref) {\r\n ref._throwIfRoot('getMetadata');\r\n const requestInfo = getMetadata$2(ref.storage, ref._location, getMappings());\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - StorageReference to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves\r\n * with the new metadata for this object.\r\n * See `firebaseStorage.Reference.prototype.getMetadata`\r\n */\r\nfunction updateMetadata$1(ref, metadata) {\r\n ref._throwIfRoot('updateMetadata');\r\n const requestInfo = updateMetadata$2(ref.storage, ref._location, metadata, getMappings());\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * Returns the download URL for the given Reference.\r\n * @public\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL$1(ref) {\r\n ref._throwIfRoot('getDownloadURL');\r\n const requestInfo = getDownloadUrl(ref.storage, ref._location, getMappings());\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newTextConnection)\r\n .then(url => {\r\n if (url === null) {\r\n throw noDownloadURL();\r\n }\r\n return url;\r\n });\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - StorageReference for object to delete.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject$1(ref) {\r\n ref._throwIfRoot('deleteObject');\r\n const requestInfo = deleteObject$2(ref.storage, ref._location);\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * Returns reference for object obtained by appending `childPath` to `ref`.\r\n *\r\n * @param ref - StorageReference to get child of.\r\n * @param childPath - Child path from provided ref.\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n *\r\n */\r\nfunction _getChild$1(ref, childPath) {\r\n const newPath = child(ref._location.path, childPath);\r\n const location = new Location(ref._location.bucket, newPath);\r\n return new Reference(ref.storage, location);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isUrl(path) {\r\n return /^[A-Za-z]+:\\/\\//.test(path);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given url.\r\n */\r\nfunction refFromURL(service, url) {\r\n return new Reference(service, url);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\nfunction refFromPath(ref, path) {\r\n if (ref instanceof FirebaseStorageImpl) {\r\n const service = ref;\r\n if (service._bucket == null) {\r\n throw noDefaultBucket();\r\n }\r\n const reference = new Reference(service, service._bucket);\r\n if (path != null) {\r\n return refFromPath(reference, path);\r\n }\r\n else {\r\n return reference;\r\n }\r\n }\r\n else {\r\n // ref is a Reference\r\n if (path !== undefined) {\r\n return _getChild$1(ref, path);\r\n }\r\n else {\r\n return ref;\r\n }\r\n }\r\n}\r\nfunction ref$1(serviceOrRef, pathOrUrl) {\r\n if (pathOrUrl && isUrl(pathOrUrl)) {\r\n if (serviceOrRef instanceof FirebaseStorageImpl) {\r\n return refFromURL(serviceOrRef, pathOrUrl);\r\n }\r\n else {\r\n throw invalidArgument('To use ref(service, url), the first argument must be a Storage instance.');\r\n }\r\n }\r\n else {\r\n return refFromPath(serviceOrRef, pathOrUrl);\r\n }\r\n}\r\nfunction extractBucket(host, config) {\r\n const bucketString = config === null || config === void 0 ? void 0 : config[CONFIG_STORAGE_BUCKET_KEY];\r\n if (bucketString == null) {\r\n return null;\r\n }\r\n return Location.makeFromBucketSpec(bucketString, host);\r\n}\r\nfunction connectStorageEmulator$1(storage, host, port, options = {}) {\r\n storage.host = `${host}:${port}`;\r\n storage._protocol = 'http';\r\n const { mockUserToken } = options;\r\n if (mockUserToken) {\r\n storage._overrideAuthToken =\r\n typeof mockUserToken === 'string'\r\n ? mockUserToken\r\n : createMockUserToken(mockUserToken, storage.app.options.projectId);\r\n }\r\n}\r\n/**\r\n * A service that provides Firebase Storage Reference instances.\r\n * @param opt_url - gs:// url to a custom Storage Bucket\r\n *\r\n * @internal\r\n */\r\nclass FirebaseStorageImpl {\r\n constructor(\r\n /**\r\n * FirebaseApp associated with this StorageService instance.\r\n */\r\n app, _authProvider, \r\n /**\r\n * @internal\r\n */\r\n _appCheckProvider, \r\n /**\r\n * @internal\r\n */\r\n _url, _firebaseVersion) {\r\n this.app = app;\r\n this._authProvider = _authProvider;\r\n this._appCheckProvider = _appCheckProvider;\r\n this._url = _url;\r\n this._firebaseVersion = _firebaseVersion;\r\n this._bucket = null;\r\n /**\r\n * This string can be in the formats:\r\n * - host\r\n * - host:port\r\n */\r\n this._host = DEFAULT_HOST;\r\n this._protocol = 'https';\r\n this._appId = null;\r\n this._deleted = false;\r\n this._maxOperationRetryTime = DEFAULT_MAX_OPERATION_RETRY_TIME;\r\n this._maxUploadRetryTime = DEFAULT_MAX_UPLOAD_RETRY_TIME;\r\n this._requests = new Set();\r\n if (_url != null) {\r\n this._bucket = Location.makeFromBucketSpec(_url, this._host);\r\n }\r\n else {\r\n this._bucket = extractBucket(this._host, this.app.options);\r\n }\r\n }\r\n /**\r\n * The host string for this service, in the form of `host` or\r\n * `host:port`.\r\n */\r\n get host() {\r\n return this._host;\r\n }\r\n set host(host) {\r\n this._host = host;\r\n if (this._url != null) {\r\n this._bucket = Location.makeFromBucketSpec(this._url, host);\r\n }\r\n else {\r\n this._bucket = extractBucket(host, this.app.options);\r\n }\r\n }\r\n /**\r\n * The maximum time to retry uploads in milliseconds.\r\n */\r\n get maxUploadRetryTime() {\r\n return this._maxUploadRetryTime;\r\n }\r\n set maxUploadRetryTime(time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxUploadRetryTime = time;\r\n }\r\n /**\r\n * The maximum time to retry operations other than uploads or downloads in\r\n * milliseconds.\r\n */\r\n get maxOperationRetryTime() {\r\n return this._maxOperationRetryTime;\r\n }\r\n set maxOperationRetryTime(time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxOperationRetryTime = time;\r\n }\r\n async _getAuthToken() {\r\n if (this._overrideAuthToken) {\r\n return this._overrideAuthToken;\r\n }\r\n const auth = this._authProvider.getImmediate({ optional: true });\r\n if (auth) {\r\n const tokenData = await auth.getToken();\r\n if (tokenData !== null) {\r\n return tokenData.accessToken;\r\n }\r\n }\r\n return null;\r\n }\r\n async _getAppCheckToken() {\r\n const appCheck = this._appCheckProvider.getImmediate({ optional: true });\r\n if (appCheck) {\r\n const result = await appCheck.getToken();\r\n // TODO: What do we want to do if there is an error getting the token?\r\n // Context: appCheck.getToken() will never throw even if an error happened. In the error case, a dummy token will be\r\n // returned along with an error field describing the error. In general, we shouldn't care about the error condition and just use\r\n // the token (actual or dummy) to send requests.\r\n return result.token;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Stop running requests and prevent more from being created.\r\n */\r\n _delete() {\r\n if (!this._deleted) {\r\n this._deleted = true;\r\n this._requests.forEach(request => request.cancel());\r\n this._requests.clear();\r\n }\r\n return Promise.resolve();\r\n }\r\n /**\r\n * Returns a new firebaseStorage.Reference object referencing this StorageService\r\n * at the given Location.\r\n */\r\n _makeStorageReference(loc) {\r\n return new Reference(this, loc);\r\n }\r\n /**\r\n * @param requestInfo - HTTP RequestInfo object\r\n * @param authToken - Firebase auth token\r\n */\r\n _makeRequest(requestInfo, requestFactory, authToken, appCheckToken, retry = true) {\r\n if (!this._deleted) {\r\n const request = makeRequest(requestInfo, this._appId, authToken, appCheckToken, requestFactory, this._firebaseVersion, retry);\r\n this._requests.add(request);\r\n // Request removes itself from set when complete.\r\n request.getPromise().then(() => this._requests.delete(request), () => this._requests.delete(request));\r\n return request;\r\n }\r\n else {\r\n return new FailRequest(appDeleted());\r\n }\r\n }\r\n async makeRequestWithTokens(requestInfo, requestFactory) {\r\n const [authToken, appCheckToken] = await Promise.all([\r\n this._getAuthToken(),\r\n this._getAppCheckToken()\r\n ]);\r\n return this._makeRequest(requestInfo, requestFactory, authToken, appCheckToken).getPromise();\r\n }\r\n}\n\nconst name = \"@firebase/storage\";\nconst version = \"0.13.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Storage.\r\n */\r\nconst STORAGE_TYPE = 'storage';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Downloads the data at the object's location. Returns an error if the object\r\n * is not found.\r\n *\r\n * To use this functionality, you have to whitelist your app's origin in your\r\n * Cloud Storage bucket. See also\r\n * https://cloud.google.com/storage/docs/configuring-cors\r\n *\r\n * @public\r\n * @param ref - StorageReference where data should be downloaded.\r\n * @param maxDownloadSizeBytes - If set, the maximum allowed size in bytes to\r\n * retrieve.\r\n * @returns A Promise containing the object's bytes\r\n */\r\nfunction getBytes(ref, maxDownloadSizeBytes) {\r\n ref = getModularInstance(ref);\r\n return getBytesInternal(ref, maxDownloadSizeBytes);\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload is not resumable.\r\n * @public\r\n * @param ref - {@link StorageReference} where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the data to upload.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadBytes(ref, data, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadBytes$1(ref, data, metadata);\r\n}\r\n/**\r\n * Uploads a string to this object's location.\r\n * The upload is not resumable.\r\n * @public\r\n * @param ref - {@link StorageReference} where string should be uploaded.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @param metadata - Metadata for the string to upload.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadString(ref, value, format, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadString$1(ref, value, format, metadata);\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - {@link StorageReference} where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the data to upload.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable(ref, data, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadBytesResumable$1(ref, data, metadata);\r\n}\r\n/**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retrieved, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - {@link StorageReference} to get metadata from.\r\n */\r\nfunction getMetadata(ref) {\r\n ref = getModularInstance(ref);\r\n return getMetadata$1(ref);\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - {@link StorageReference} to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves with the new metadata for this object.\r\n */\r\nfunction updateMetadata(ref, metadata) {\r\n ref = getModularInstance(ref);\r\n return updateMetadata$1(ref, metadata);\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - {@link StorageReference} to get list from.\r\n * @param options - See {@link ListOptions} for details.\r\n * @returns A `Promise` that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list(ref, options) {\r\n ref = getModularInstance(ref);\r\n return list$1(ref, options);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: `listAll` may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - {@link StorageReference} to get list from.\r\n *\r\n * @returns A `Promise` that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll(ref) {\r\n ref = getModularInstance(ref);\r\n return listAll$1(ref);\r\n}\r\n/**\r\n * Returns the download URL for the given {@link StorageReference}.\r\n * @public\r\n * @param ref - {@link StorageReference} to get the download URL for.\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL(ref) {\r\n ref = getModularInstance(ref);\r\n return getDownloadURL$1(ref);\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - {@link StorageReference} for object to delete.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject(ref) {\r\n ref = getModularInstance(ref);\r\n return deleteObject$1(ref);\r\n}\r\nfunction ref(serviceOrRef, pathOrUrl) {\r\n serviceOrRef = getModularInstance(serviceOrRef);\r\n return ref$1(serviceOrRef, pathOrUrl);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction _getChild(ref, childPath) {\r\n return _getChild$1(ref, childPath);\r\n}\r\n/**\r\n * Gets a {@link FirebaseStorage} instance for the given Firebase app.\r\n * @public\r\n * @param app - Firebase app to get {@link FirebaseStorage} instance for.\r\n * @param bucketUrl - The gs:// url to your Firebase Storage Bucket.\r\n * If not passed, uses the app's default Storage Bucket.\r\n * @returns A {@link FirebaseStorage} instance.\r\n */\r\nfunction getStorage(app = getApp(), bucketUrl) {\r\n app = getModularInstance(app);\r\n const storageProvider = _getProvider(app, STORAGE_TYPE);\r\n const storageInstance = storageProvider.getImmediate({\r\n identifier: bucketUrl\r\n });\r\n const emulator = getDefaultEmulatorHostnameAndPort('storage');\r\n if (emulator) {\r\n connectStorageEmulator(storageInstance, ...emulator);\r\n }\r\n return storageInstance;\r\n}\r\n/**\r\n * Modify this {@link FirebaseStorage} instance to communicate with the Cloud Storage emulator.\r\n *\r\n * @param storage - The {@link FirebaseStorage} instance\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 5001)\r\n * @param options - Emulator options. `options.mockUserToken` is the mock auth\r\n * token to use for unit testing Security Rules.\r\n * @public\r\n */\r\nfunction connectStorageEmulator(storage, host, port, options = {}) {\r\n connectStorageEmulator$1(storage, host, port, options);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Downloads the data at the object's location. Returns an error if the object\r\n * is not found.\r\n *\r\n * To use this functionality, you have to whitelist your app's origin in your\r\n * Cloud Storage bucket. See also\r\n * https://cloud.google.com/storage/docs/configuring-cors\r\n *\r\n * This API is not available in Node.\r\n *\r\n * @public\r\n * @param ref - StorageReference where data should be downloaded.\r\n * @param maxDownloadSizeBytes - If set, the maximum allowed size in bytes to\r\n * retrieve.\r\n * @returns A Promise that resolves with a Blob containing the object's bytes\r\n */\r\nfunction getBlob(ref, maxDownloadSizeBytes) {\r\n ref = getModularInstance(ref);\r\n return getBlobInternal(ref, maxDownloadSizeBytes);\r\n}\r\n/**\r\n * Downloads the data at the object's location. Raises an error event if the\r\n * object is not found.\r\n *\r\n * This API is only available in Node.\r\n *\r\n * @public\r\n * @param ref - StorageReference where data should be downloaded.\r\n * @param maxDownloadSizeBytes - If set, the maximum allowed size in bytes to\r\n * retrieve.\r\n * @returns A stream with the object's data as bytes\r\n */\r\nfunction getStream(ref, maxDownloadSizeBytes) {\r\n throw new Error('getStream() is only supported by NodeJS builds');\r\n}\n\n/**\r\n * Cloud Storage for Firebase\r\n *\r\n * @packageDocumentation\r\n */\r\nfunction factory(container, { instanceIdentifier: url }) {\r\n const app = container.getProvider('app').getImmediate();\r\n const authProvider = container.getProvider('auth-internal');\r\n const appCheckProvider = container.getProvider('app-check-internal');\r\n return new FirebaseStorageImpl(app, authProvider, appCheckProvider, url, SDK_VERSION);\r\n}\r\nfunction registerStorage() {\r\n _registerComponent(new Component(STORAGE_TYPE, factory, \"PUBLIC\" /* ComponentType.PUBLIC */).setMultipleInstances(true));\r\n //RUNTIME_ENV will be replaced during the compilation to \"node\" for nodejs and an empty string for browser\r\n registerVersion(name, version, '');\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\r\nregisterStorage();\n\nexport { StorageError, StorageErrorCode, StringFormat, FbsBlob as _FbsBlob, Location as _Location, TaskEvent as _TaskEvent, TaskState as _TaskState, UploadTask as _UploadTask, dataFromString as _dataFromString, _getChild, invalidArgument as _invalidArgument, invalidRootOperation as _invalidRootOperation, connectStorageEmulator, deleteObject, getBlob, getBytes, getDownloadURL, getMetadata, getStorage, getStream, list, listAll, ref, updateMetadata, uploadBytes, uploadBytesResumable, uploadString };\n//# sourceMappingURL=index.esm2017.js.map\n","export * from '@firebase/storage';\n//# sourceMappingURL=index.esm.js.map\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","export var IconsManifest = [\n {\n \"id\": \"ci\",\n \"name\": \"Circum Icons\",\n \"projectUrl\": \"https://circumicons.com/\",\n \"license\": \"MPL-2.0 license\",\n \"licenseUrl\": \"https://github.com/Klarr-Agency/Circum-Icons/blob/main/LICENSE\"\n },\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome 5\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"fa6\",\n \"name\": \"Font Awesome 6\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"lu\",\n \"name\": \"Lucide\",\n \"projectUrl\": \"https://lucide.dev/\",\n \"license\": \"ISC\",\n \"licenseUrl\": \"https://github.com/lucide-icons/lucide/blob/main/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"hi2\",\n \"name\": \"Heroicons 2\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"sl\",\n \"name\": \"Simple Line Icons\",\n \"projectUrl\": \"https://thesabbir.github.io/simple-line-icons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/Keyamoon/IcoMoon-Free/blob/master/License.txt\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/atisawd/boxicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"tfi\",\n \"name\": \"Themify Icons\",\n \"projectUrl\": \"https://github.com/lykmapipo/themify-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/thecreation/standard-icons/blob/master/modules/themify-icons/LICENSE\"\n },\n {\n \"id\": \"rx\",\n \"name\": \"Radix Icons\",\n \"projectUrl\": \"https://icons.radix-ui.com\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/radix-ui/icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"pi\",\n \"name\": \"Phosphor Icons\",\n \"projectUrl\": \"https://github.com/phosphor-icons/core\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/phosphor-icons/core/blob/main/LICENSE\"\n },\n {\n \"id\": \"lia\",\n \"name\": \"Icons8 Line Awesome\",\n \"projectUrl\": \"https://icons8.com/line-awesome\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/icons8/line-awesome/blob/master/LICENSE.md\"\n }\n]","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);","var _excluded = [\"attr\", \"size\", \"title\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext.mjs\";\nfunction Tree2Element(tree) {\n return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n key: i\n }, node.attr), Tree2Element(node.child)));\n}\nexport function GenIcon(data) {\n return props => /*#__PURE__*/React.createElement(IconBase, _extends({\n attr: _objectSpread({}, data.attr)\n }, props), Tree2Element(data.child));\n}\nexport function IconBase(props) {\n var elem = conf => {\n var {\n attr,\n size,\n title\n } = props,\n svgProps = _objectWithoutProperties(props, _excluded);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: _objectSpread(_objectSpread({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && /*#__PURE__*/React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);\n}","export * from \"./iconsManifest.mjs\";\nexport * from \"./iconBase.mjs\";\nexport * from \"./iconContext.mjs\";"],"names":["listCacheClear","__data__","size","array","key","assocIndexOf","length","eq","splice","Array","prototype","listCacheDelete","data","index","lastIndex","pop","call","listCacheGet","undefined","listCacheHas","listCacheSet","value","push","ListCache","entries","clear","entry","set","get","has","getNative","root","Map","Object","nativeCreate","hashClear","hashDelete","result","HASH_UNDEFINED","hasOwnProperty","hashGet","objectProto","hashHas","hashSet","Hash","mapCacheClear","isKeyable","type","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","Symbol","Uint8Array","baseTimes","iteratee","n","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","String","isIndex","arrayPush","values","offset","baseGetAllKeys","keysFunc","symbolsFunc","object","nativeObjectToString","toString","symToStringTag","toStringTag","getRawTag","isOwn","tag","unmasked","e","objectToString","nullTag","undefinedTag","baseGetTag","baseUnary","func","global","freeGlobal","getAllKeys","keys","getSymbols","coreJsData","maskSrcKey","uid","exec","IE_PROTO","isMasked","reRegExpChar","reIsHostCtor","funcToString","funcProto","reIsNative","RegExp","replace","baseIsNative","isObject","pattern","isFunction","test","toSource","getValue","arrayFilter","predicate","resIndex","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","symbol","stubArray","DataView","Promise","Set","WeakMap","mapTag","objectTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","Ctor","constructor","ctorString","MAX_SAFE_INTEGER","reIsUint","isPrototype","proto","freeExports","exports","nodeType","freeModule","module","freeProcess","moduleExports","process","types","require","nodeUtil","binding","overArg","transform","arg","freeSelf","self","Function","other","argsTag","baseIsArguments","isObjectLike","arguments","isArrayLike","isLength","stubFalse","Buffer","nativeIsBuffer","setCacheAdd","setCacheHas","SetCache","add","arraySome","cacheHas","cache","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","forEach","setToArray","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","symbolTag","arrayBufferTag","symbolProto","symbolValueOf","valueOf","equalByTag","byteLength","byteOffset","buffer","name","message","convert","stacked","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","arrayTag","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","isEqual","asyncTag","funcTag","genTag","proxyTag","float64Tag","float32Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","nodeIsTypedArray","nativeKeys","baseKeys","DefaultContext","color","className","style","attr","React","_excluded","_objectWithoutProperties","source","excluded","i","target","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","_extends","assign","bind","apply","ownKeys","r","t","o","filter","getOwnPropertyDescriptor","enumerable","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","_toPropertyKey","configurable","writable","_toPrimitive","toPrimitive","Number","Tree2Element","tree","node","child","GenIcon","props","IconBase","elem","conf","title","svgProps","computedSize","stroke","fill","strokeWidth","height","width","xmlns","children","IconContext","Consumer"],"sourceRoot":"","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110]}