{"version":3,"sources":["components/Header/SmallHeader.js","components/Header/LargeHeader.js","firebase/config.js","firebase/firebase.js","contexts/UserContexts.js","services/product.js","components/Product/ProductItem.js","components/Product/ProductList.js","pages/Home.js","pages/Trending.js","utils/toast.js","Hooks/useFormValidation.js","components/Product/validateCreateProduct.js","utils/file.js","components/Form/Upload.js","pages/Submit.js","pages/Search.js","pages/Profile.js","components/Header/NavHeader.js","components/Auth/validateEditProfile.js","pages/EditProfile.js","components/Auth/validateSignup.js","pages/Signup.js","components/Auth/validateLogin.js","pages/Login.js","components/Auth/validatePassword.js","pages/Forgot.js","components/Product/ProductPhotos.js","components/Product/CommentModal.js","components/Product/ProductComment.js","pages/Product.js","App.js","Hooks/useAuth.js","index.js","../node_modules/@ionic/core/dist/esm-es5 lazy /^/.//.*/.entry/.js$/ include: //.entry/.js$/ exclude: //.system/.entry/.js$/ groupOptions: {} namespace object","../node_modules/ionicons/dist/esm-es5 lazy /^/.//.*/.entry/.js$/ include: //.entry/.js$/ exclude: //.system/.entry/.js$/ groupOptions: {} namespace object"],"names":["SmallHeader","title","style","background","color","size","LargeHeader","collapse","firebaseConfig","apiKey","process","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","firebase","app","initializeApp","this","auth","db","firestore","storage","name","email","password","createUserWithEmailAndPassword","newUser","user","updateProfile","displayName","signInWithEmailAndPassword","signOut","sendPasswordResetEmail","UserContexts","createContext","addUpvote","productId","Promise","reject","productRef","collection","doc","get","then","exists","data","previousVotes","votes","vote","votedBy","id","uid","updatedVotes","voteCount","length","update","withRouter","product","url","browser","history","useContext","UserContext","routerLink","onClick","button","class","lines","slot","src","thumbnail","className","fontSize","description","alignItems","fontWeight","icon","chevronUpCircleOutline","verticalAlign","personCircleOutline","postedBy","timeOutline","formatDistanceToNow","created","comments","chatbubbleEllipsesOutline","event","preventDefault","stopPropagation","productService","catch","push","caretUp","ProductList","props","useState","products","setProducts","isTrending","location","pathname","includes","handleSnapshot","snapshot","docs","map","useEffect","unsubscribe","orderBy","onSnapshot","getProducts","prevDate","index","result","key","showCount","currentDate","isToday","isYesterday","formatDate","unshift","fontStyle","Home","backgroundColor","fullscreen","alt","href","width","display","marginRight","marginLeft","cursor","Trending","console","log","toast","message","duration","document","createElement","body","appendChild","present","useFormValidation","initialState","validate","action","values","setValues","errors","setErrors","loading","setLoading","Object","keys","join","handleChange","previousValues","target","value","handleSubmit","validationErrors","validateCreateProduct","test","dataURItoBlob","dataURI","byteString","atob","split","mimeString","ab","ArrayBuffer","ia","Uint8Array","i","charCodeAt","Blob","type","Camera","Plugins","Upload","onChange","placeholder","files","multiple","rest","handleSelectFile","evt","a","isPlatform","getPhoto","quality","allowEditing","resultType","CameraResultType","DataUrl","image","blob","dataUrl","accept","INITIAL_STATE","Submit","submitting","setSubmitting","setThumbnail","photos","setPhotos","all","f","ref","child","put","getDownloadURL","productPhotos","productThumbnails","newProduct","Date","now","set","error","position","onIonChange","required","textAlign","expand","fill","disabled","Search","filteredProducts","setFilteredProducts","filter","setFilter","query","toLowerCase","matchedProducts","handleSearch","backgroundImage","spellcheck","onKeyPress","animated","filteredProduct","Profile","logout","mailOutline","NavHeader","option","defaultHref","validateEditProfile","currentPassword","newPassword","EditProfile","setUser","busyloading","setBusyloading","reauthenticateUser","credential","EmailAuthProvider","reauthenticateWithCredential","updateProfileItems","updateEmail","updatePassword","login","isOpen","validateSignup","Signup","register","validateLogin","Login","validatePassword","Forgot","resetPassword","ProductPhotos","setIndex","margin","p","CommentModal","sendAction","closeAction","comment","text","commentText","setCommentText","onDidDismiss","translucent","role","aria-label","rows","cols","e","ProductComment","setProduct","showModal","setShowModal","postedByAuthUser","previousComments","newComment","updatedComments","item","prevState","handleDeleteComment","Browser","Product","match","params","open","trash","delete","err","App","authUser","setAuthUser","onAuthStateChanged","useAuth","Provider","exact","path","render","to","component","tab","listCircleOutline","trendingUpOutline","createOutline","searchOutline","ReactDOM","getElementById","webpackAsyncContext","req","__webpack_require__","o","resolve","Error","code","ids","module","exports"],"mappings":"0PAaeA,EAVK,SAAC,GAAe,IAAbC,EAAY,EAAZA,MACrB,OACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAYC,MAAO,CAAEC,WAAY,WAAaC,MAAM,WAClD,kBAAC,IAAD,CAAUC,KAAK,SAASJ,MCMjBK,EAVK,SAAC,GAAe,IAAbL,EAAY,EAAZA,MACrB,OACE,kBAAC,IAAD,CAAWM,SAAS,YAClB,kBAAC,IAAD,CAAYH,MAAM,WAChB,kBAAC,IAAD,CAAUC,KAAK,SAASJ,M,+DCKjBO,G,mBAXQ,CACrBC,OAAQC,0CACRC,WAAYD,qCACZE,YAAaF,4CACbG,UAAWH,qBACXI,cAAeJ,iCACfK,kBAAmBL,eACnBM,MAAON,4CACPO,cAAeP,iBC+BFQ,EADE,I,WA/Bf,aAAe,oBACbC,IAAIC,cAAcZ,GAClBa,KAAKF,IAAMA,IACXE,KAAKC,KAAOH,IAAIG,OAChBD,KAAKE,GAAKJ,IAAIK,YACdH,KAAKI,QAAUN,IAAIM,U,8FAGNC,EAAMC,EAAOC,G,uFACJP,KAAKC,KAAKO,+BAC9BF,EACAC,G,cAFIE,E,yBAICA,EAAQC,KAAKC,cAAc,CAChCC,YAAaP,K,uIAIXC,EAAOC,GACX,OAAOP,KAAKC,KAAKY,2BAA2BP,EAAOC,K,+BAInD,OAAOP,KAAKC,KAAKa,Y,oCAGLR,GACZ,OAAON,KAAKC,KAAKc,uBAAuBT,O,MC/B7BU,EAFMC,wBAAc,M,QCuBpB,OACbC,UAxBF,SAAmBR,EAAMS,GACvB,IAAKT,EAAM,OAAOU,QAAQC,SAE1B,IAAMC,EAAazB,EAASK,GAAGqB,WAAW,YAAYC,IAAIL,GAE1D,OAAOG,EAAWG,MAAMC,MAAK,SAACF,GAC5B,GAAIA,EAAIG,OAAQ,CACd,IAAMC,EAAOJ,EAAII,OACXC,EAAgBD,EAAKE,MACrBC,EAAO,CAAEC,QAAS,CAAEC,GAAIvB,EAAKwB,IAAK7B,KAAMK,EAAKE,cAC7CuB,EAAY,sBAAON,GAAP,CAAsBE,IAClCK,EAAYD,EAAaE,OAG/B,OAFAf,EAAWgB,OAAO,CAAER,MAAOK,EAAcC,cAElC,2BACFR,GADL,IAEEE,MAAOK,EACPC,UAAWA,U,iBCiHJG,eA3GK,SAAC,GAAwC,IAAtCC,EAAqC,EAArCA,QAASC,EAA4B,EAA5BA,IAAKC,EAAuB,EAAvBA,QAASC,EAAc,EAAdA,QACpCjC,EAASkC,qBAAWC,GAApBnC,KAUR,OACE,kBAAC,IAAD,CAASoC,WAAYL,EAAKM,QAASL,EAASM,QAAM,GAChD,kBAAC,IAAD,CAAgBC,MAAM,kBACpB,kBAAC,IAAD,CAASC,MAAM,QACb,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAcC,KAAK,SACjB,kBAAC,IAAD,CAAQC,IAAKZ,EAAQa,aAEvB,kBAAC,IAAD,KACE,yBAAKC,UAAU,iBACb,4BAAQzE,MAAO,CAAE0E,SAAU,WAAaf,EAAQ5D,QAElD,yBAAK0E,UAAU,gBAAgBzE,MAAO,CAAE0E,SAAU,SAC/Cf,EAAQgB,aAEX,uBACE3E,MAAO,CACL4E,WAAY,SACZF,SAAU,SACVG,WAAY,WAGd,kBAAC,IAAD,CACEC,KAAMC,IACN/E,MAAO,CACLgF,cAAe,YAEhB,IACH,kBAAC,IAAD,CACEhF,MAAO,CACLgF,cAAe,WAGhBrB,EAAQJ,UALX,kBAOC,iBACD,kBAAC,IAAD,CACEuB,KAAMG,IACNjF,MAAO,CACLgF,cAAe,YAEhB,IACH,kBAAC,IAAD,CACEhF,MAAO,CACLgF,cAAe,WAGhBrB,EAAQuB,SAAS1D,MAEnB,iBACD,kBAAC,IAAD,CACEsD,KAAMK,IACNnF,MAAO,CACLgF,cAAe,YAEhB,IACH,kBAAC,IAAD,CACEhF,MAAO,CACLgF,cAAe,WAGhBI,IAAoBzB,EAAQ0B,UAE9B1B,EAAQ2B,SAAS9B,OAAS,GACzB,oCACG,iBACD,kBAAC,IAAD,CACEsB,KAAMS,IACNvF,MAAO,CACLgF,cAAe,YAEhB,IACH,kBAAC,IAAD,CACEhF,MAAO,CACLgF,cAAe,WAGhBrB,EAAQ2B,SAAS9B,OALpB,cAQD,MAGP,kBAAC,IAAD,CAAWc,KAAK,MAAMJ,QA3Fd,SAACsB,GACjBA,EAAMC,iBACND,EAAME,kBACNC,EAAetD,UAAUR,EAAM8B,EAAQP,IAAIwC,OAAM,WAC/C9B,EAAQ+B,KAAK,cAuFmC1F,KAAK,UAC7C,yBAAKsE,UAAU,wBACb,kBAAC,IAAD,CAASK,KAAMgB,MACdnC,EAAQJ,mB,mDCzCVwC,EAzEK,SAACC,GAAW,IAAD,EACGC,mBAAS,IADZ,mBACtBC,EADsB,KACZC,EADY,KAEvBC,EAAaJ,EAAMK,SAASC,SAASC,SAAS,YAqBpD,SAASC,EAAeC,GACtB,IAAMP,EAAWO,EAASC,KAAKC,KAAI,SAAChE,GAClC,OAAO,aAAES,GAAIT,EAAIS,IAAOT,EAAII,WAG9BoD,EAAYD,GAxBdU,qBAAU,WACR,IAAMC,EAIR,WACE,GAAIT,EACF,OAAOpF,EAASK,GACbqB,WAAW,YACXoE,QAAQ,YAAa,QACrBC,WAAWP,GAGhB,OAAOxF,EAASK,GACbqB,WAAW,YACXoE,QAAQ,UAAW,QACnBC,WAAWP,GAfMQ,GACpB,OAAO,kBAAMH,OACZ,CAACT,IAwBJ,IAAIa,EAAW,KAEf,OAAOf,EAASS,KAAI,SAAChD,EAASuD,GAC5B,IAAMC,EAAS,CACb,kBAAC,EAAD,CACEC,IAAKzD,EAAQP,GACbiE,WAAW,EACXzD,IAAG,mBAAcD,EAAQP,IACzBO,QAASA,EACTuD,MAAOA,EAAQ,KAGbI,EAAcC,IAAQ5D,EAAQ0B,SAChC,QACAmC,IAAY7D,EAAQ0B,SACpB,YACAoC,IAAW9D,EAAQ0B,QAAS,SAsBhC,OApBIiC,IAAgBL,GAAab,IAC/Be,EAAOO,QACL,kBAAC,IAAD,CACExH,MAAM,OACNF,MAAO,CACLE,MAAO,UACPwE,SAAU,SACViD,UAAW,UAEbtD,MAAM,OACN+C,IAAKE,GAEL,kBAAC,IAAD,KACE,gCAASA,MAIfL,EAAWK,GAGNH,MC3CIS,EA5BF,SAAC5B,GACZ,OACE,oCACE,kBAAC,IAAD,CAAShG,MAAO,CAAE6H,gBAAiB,YACjC,kBAAC,EAAD,CAAa9H,MAAM,wCACnB,kBAAC,IAAD,CAAY+H,YAAU,GACpB,yBACEvD,IAAI,6BACJwD,IAAI,mBACJC,KAAK,IACLhI,MAAO,CACLiI,MAAO,MACPC,QAAS,QACTC,YAAa,OACbC,WAAY,OACZC,OAAQ,aAIZ,kBAAC,EAAD,CAAatI,MAAM,gBACnB,6BACA,kBAAC,EAAD,CAAasG,SAAUL,EAAMK,eCPxBiC,EAdE,SAACtC,GAChB,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAajG,MAAM,mCACnB,kBAAC,IAAD,CAAY+H,YAAU,GACpB,kBAAC,EAAD,CAAa/H,MAAM,mCACnB,6BACA,kBAAC,EAAD,CAAasG,SAAUL,EAAMK,WAC5BkC,QAAQC,IAAI,kBAAmBxC,EAAMK,aCdvC,SAASoC,EAAMC,GAA2B,IAAlBC,EAAiB,uDAAN,IAClCF,EAAQG,SAASC,cAAc,aAMrC,OALAJ,EAAMC,QAAUA,EAChBD,EAAME,SAAWA,EACjBF,EAAMvI,MAAQ,OAEd0I,SAASE,KAAKC,YAAYN,GACnBA,EAAMO,UCJA,SAASC,EAAkBC,EAAcC,EAAUC,GAAS,IAAD,EAC5CnD,mBAASiD,GADmC,mBACjEG,EADiE,KACzDC,EADyD,OAE5CrD,mBAAS,IAFmC,mBAEjEsD,EAFiE,KAEzDC,EAFyD,OAG1CvD,oBAAS,GAHiC,mBAGjEwD,EAHiE,KAGxDC,EAHwD,KAgCxE,OA3BA9C,qBAAU,WACJ6C,IAC8C,IAA/BE,OAAOC,KAAKL,GAAQ/F,QAEnC4F,IACAE,EAAUJ,GACVQ,GAAW,KAEXjB,EAAMkB,OAAON,OAAOE,GAAQM,KAAK,MACjCH,GAAW,OAGd,CAACH,IAeG,CACLO,aAdF,SAAsBtE,GACpB8D,GAAU,SAACS,GAAD,mBAAC,eACNA,GADK,kBAEPvE,EAAMwE,OAAOxI,KAAOgE,EAAMwE,OAAOC,YAYpCC,aARF,WACE,IAAMC,EAAmBhB,EAASE,GAClCG,EAAUW,GACVT,GAAW,IAMXL,SACAC,YACAG,WCxCW,SAASW,EAAsBf,GAC5C,IAAIE,EAAS,GAkBb,OAhBKF,EAAOtJ,QACVwJ,EAAOxJ,MAAQ,sBAGZsJ,EAAO1E,YAED0E,EAAO1E,YAAYnB,OAAS,IACrC+F,EAAO5E,YAAc,qDAFrB4E,EAAO5E,YAAc,gCAKlB0E,EAAOzF,IAEA,gCAAgCyG,KAAKhB,EAAOzF,OACtD2F,EAAO3F,IAAM,wBAFb2F,EAAO3F,IAAM,mBAKR2F,E,oBCnBF,SAASe,EAAcC,GAW5B,IARA,IAAIC,EAAaC,KAAKF,EAAQG,MAAM,KAAK,IAGrCC,EAAaJ,EAAQG,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAK,GAG5DE,EAAK,IAAIC,YAAYL,EAAWhH,QAChCsH,EAAK,IAAIC,WAAWH,GACfI,EAAI,EAAGA,EAAIR,EAAWhH,OAAQwH,IACrCF,EAAGE,GAAKR,EAAWS,WAAWD,GAGhC,OAAO,IAAIE,KAAK,CAACN,GAAK,CAAEO,KAAMR,I,WCRxBS,EAAWC,IAAXD,OA4COE,MA1Cf,YAAsE,IAApDC,EAAmD,EAAnDA,SAAUC,EAAyC,EAAzCA,YAAaC,EAA4B,EAA5BA,MAAOC,EAAqB,EAArBA,SAAaC,EAAQ,6DAC7DC,EAAgB,uCAAG,WAAOC,GAAP,iBAAAC,EAAA,0DACnBC,YAAW,UADQ,gCAEDX,EAAOY,SAAS,CAClCC,QAAS,GACTC,cAAc,EACdC,WAAYC,IAAiBC,UALV,OAEfC,EAFe,OAOfC,EAAOjC,EAAcgC,EAAME,SAEjCjB,EAAS,CAACgB,IATW,sBAWrBhB,EAAS,YAAIM,EAAI7B,OAAOyB,QAXH,2CAAH,sDAetB,OACE,yBAAKhH,UAAU,yBACXsH,YAAW,WACX,2BACE3I,GAAG,OACH+H,KAAK,OACL1G,UAAU,aACVgI,OAAO,UACPf,SAAUA,EACVH,SAAUK,IAGd,kBAAC,IAAD,eAAW1H,QAAS0H,GAAsBD,GACvCF,EAAMjI,OAAN,UAAkBiI,EAAMjI,OAAxB,kBAAiDgI,KClBpDkB,EAAgB,CACpB3M,MAAO,GACP4E,YAAa,GACbf,IAAK,IAuKQ+I,EApKA,SAAC,GAAiB,IAAf7I,EAAc,EAAdA,QACRjC,EAASkC,qBAAWC,GAApBnC,KADsB,EAEMoE,oBAAS,GAFf,mBAEvB2G,EAFuB,KAEXC,EAFW,OAGI5G,mBAAS,IAHb,mBAGvBzB,EAHuB,KAGZsI,EAHY,OAIF7G,mBAAS,IAJP,mBAIvB8G,EAJuB,KAIfC,EAJe,OAKiB/D,EAC7CyD,EACAtC,GAP4B,6CAKtBF,EALsB,EAKtBA,aAAcJ,EALQ,EAKRA,aAAcT,EALN,EAKMA,OALN,4CAW9B,wCAAAyC,EAAA,kEAESjK,EAFT,uBAGMiC,EAAQ+B,KAAK,UAHnB,iCAMIgH,GAAc,GACNjJ,EAA4ByF,EAA5BzF,IAAKe,EAAuB0E,EAAvB1E,YAAa5E,EAAUsJ,EAAVtJ,MACpBqD,EAAKpC,EAASK,GAAGqB,WAAW,YAAYC,MAAMS,GARxD,SAUUb,QAAQ0K,IAAR,sBACDzI,EAAUmC,KAAI,SAACuG,EAAGhG,GAAJ,OACflG,EAASO,QACN4L,MACAC,MAFH,mBAEqBhK,EAFrB,sBAEqC8D,EAFrC,SAGGmG,IAAIH,OALL,YAODH,EAAOpG,KAAI,SAACuG,EAAGhG,GAAJ,OACZlG,EAASO,QACN4L,MACAC,MAFH,mBAEqBhK,EAFrB,mBAEkC8D,EAFlC,SAGGmG,IAAIH,SArBf,wBAyBgC3K,QAAQ0K,IAClCF,EAAOpG,KAAI,SAACuG,EAAGhG,GAAJ,OACTlG,EAASO,QACN4L,MACAC,MAFH,mBAEqBhK,EAFrB,mBAEkC8D,EAFlC,SAGGoG,qBA9BX,eAyBUC,EAzBV,iBAkCoChL,QAAQ0K,IACtCzI,EAAUmC,KAAI,SAACuG,EAAGhG,GAAJ,OACZlG,EAASO,QACN4L,MACAC,MAFH,mBAEqBhK,EAFrB,sBAEqC8D,EAFrC,SAGGoG,qBAvCX,eAkCUE,EAlCV,OA2CUC,EAAa,CACjB1N,QACA6D,MACAe,cACAO,SAAU,CACR9B,GAAIvB,EAAKwB,IACT7B,KAAMK,EAAKE,aAEbyC,UAAWgJ,EAAkB,IAAM,KACnCT,OAAQQ,EACRhK,UAAW,EACX+B,SAAU,GACVrC,MAAO,CACL,CACEE,QAAS,CAAEC,GAAIvB,EAAKwB,IAAK7B,KAAMK,EAAKE,eAGxCsD,QAASqI,KAAKC,OAEhBb,EAAa,IACbE,EAAU,IA/Dd,UAgEUhM,EAASK,GAAGqB,WAAW,YAAYC,IAAIS,GAAIwK,IAAIH,GAhEzD,QAiEI3J,EAAQ+B,KAAK,KAjEjB,kDAmEI0C,QAAQsF,MAAR,MACApF,EAAM,KAAEC,SACRmE,GAAc,GArElB,2DAX8B,sBAoF9B,OACE,oCACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAa9M,MAAM,wBACnB,kBAAC,IAAD,CAAY+H,YAAU,GACpB,kBAAC,EAAD,CAAa/H,MAAM,WACnB,kBAAC,IAAD,CAASsE,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,SACA,kBAAC,IAAD,CACEtM,KAAK,QACLyI,MAAOZ,EAAOtJ,MACdoL,KAAK,OACL4C,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,CAAS3J,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,eACA,kBAAC,IAAD,CACEtM,KAAK,cACLyI,MAAOZ,EAAO1E,YACdwG,KAAK,OACL4C,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,CAAS3J,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,OACA,kBAAC,IAAD,CACEtM,KAAK,MACLyI,MAAOZ,EAAOzF,IACduH,KAAK,MACL4C,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQhO,MAAO,CAAEiO,UAAW,WAC1B,kBAAC,EAAD,CACExC,MAAOjH,EACP+G,SAAUuB,EACVtB,YAAY,yQAKlB,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQxL,MAAO,CAAEiO,UAAW,WAC1B,kBAAC,EAAD,CACExC,MAAOsB,EACPxB,SAAUyB,EACVxB,YAAY,mCACZE,UAAQ,MAKd,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CACEP,KAAK,SACLjL,MAAM,UACNgO,OAAO,QACPC,KAAK,QACLC,SAAUxB,EACV1I,QAASgG,GANX,gBC9FCmE,EAvEA,WAAO,IAAD,EAC6BpI,mBAAS,IADtC,mBACZqI,EADY,KACMC,EADN,OAEatI,mBAAS,IAFtB,mBAEZC,EAFY,KAEFC,EAFE,OAGSF,mBAAS,IAHlB,mBAGZuI,EAHY,KAGJC,EAHI,KA2CnB,OAtCA7H,qBAAU,WASR5F,EAASK,GACNqB,WAAW,YACXE,MACAC,MAAK,SAAC4D,GACL,IAAMP,EAAWO,EAASC,KAAKC,KAAI,SAAChE,GAClC,OAAO,aAAES,GAAIT,EAAIS,IAAOT,EAAII,WAE9BoD,EAAYD,QAdf,IAEHU,qBAAU,YAsBV,WACE,IAAM8H,EAAQF,EAAOG,cACfC,EAAkB1I,EAASsI,QAAO,SAAC7K,GACvC,OACEA,EAAQgB,YAAYgK,cAAcpI,SAASmI,IAC3C/K,EAAQC,IAAI+K,cAAcpI,SAASmI,IACnC/K,EAAQuB,SAAS1D,KAAKmN,cAAcpI,SAASmI,MAGjDH,EAAoBK,GA9BpBC,KACC,CAACL,IAiCF,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAazO,MAAM,WACnB,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAaA,MAAM,WACnB,kBAAC,IAAD,CACEC,MAAO,CAAE8O,gBAAiB,2CAC1BtD,YAAY,SACZuD,WAAW,QACX5D,KAAK,MACLlB,MAAOuE,EACPQ,WA7BR,SAAsBnD,GACJ,UAAZA,EAAIzE,KACNqH,EAAU5C,EAAI7B,OAAOC,QA4BjBgF,UAAQ,IAETX,EAAiB3H,KAAI,SAACuI,EAAiBhI,GAAlB,OACpB,kBAAC,EAAD,CACEE,IAAK8H,EAAgB9L,GACrBiE,WAAW,EACX1D,QAASuL,EACThI,MAAOA,EACPtD,IAAG,mBAAcsL,EAAgB9L,YC4C9B+L,EA5FC,SAACnJ,GAAW,IAClBnE,EAASkC,qBAAW5B,GAApBN,KADiB,4CAEzB,sBAAAiK,EAAA,+EAEU9K,EAASoO,SAFnB,OAGIpJ,EAAMlC,QAAQ+B,KAAK,KACnB4C,EAAM,gCAJV,gDAMIF,QAAQsF,MAAM,0BAAd,MACApF,EAAM,KAAIC,SAPd,0DAFyB,sBAYzB,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAa3I,MAAM,YACnB,kBAAC,IAAD,CAAY+H,YAAU,GACpB,kBAAC,EAAD,CAAa/H,MAAM,YAClB8B,EACC,oCACE,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAASwC,MAAM,QACb,kBAAC,IAAD,KACE,kBAAC,IAAD,CAASS,KAAMG,IAAqBX,KAAK,UACzC,kBAAC,IAAD,KACE,gCAASzC,EAAKE,aACd,yCAGJ,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAS+C,KAAMuK,IAAa/K,KAAK,UACjC,kBAAC,IAAD,KACE,gCAASzC,EAAKJ,OACd,yCAMV,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CACEyM,OAAO,QACPjK,WAAU,eACV/D,MAAM,UACNiO,KAAK,WAJP,kBAUJ,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CACED,OAAO,QACPhO,MAAM,SACNiO,KAAK,UACLjK,QAzDS,4CAqDX,aAYN,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQlE,MAAO,CAAEiO,UAAW,WAC1B,kBAAC,IAAD,CACE9N,KAAK,QACLD,MAAM,YACN+D,WAAU,WAHZ,cAUJ,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQjE,MAAO,CAAEiO,UAAW,WAC1B,kBAAC,IAAD,CAAW9N,KAAK,QAAQ8D,WAAU,SAAY/D,MAAM,YAApD,eCxEDoP,EApBG,SAAC,GAAqC,IAAnCvP,EAAkC,EAAlCA,MAAOwP,EAA2B,EAA3BA,OAAQzK,EAAmB,EAAnBA,KAAMsE,EAAa,EAAbA,OACxC,OACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAYlJ,MAAM,WAChB,kBAAC,IAAD,CAAWoE,KAAK,SACd,kBAAC,IAAD,CAAekL,YAAY,OAE5BD,GACC,kBAAC,IAAD,CAAWjL,KAAK,WACd,kBAAC,IAAD,CAAWJ,QAASkF,GAClB,kBAAC,IAAD,CAAS9E,KAAK,YAAYQ,KAAMA,MAItC,kBAAC,IAAD,KAAW/E,MCxBJ,SAAS0P,EAAoBpG,GAC1C,IAAIE,EAAS,GAwBb,OAtBKF,EAAO7H,OACV+H,EAAO/H,KAAO,qBAGX6H,EAAO5H,MAEA,2CAA2C4I,KAAKhB,EAAO5H,SACjE8H,EAAO9H,MAAQ,0BAFf8H,EAAO9H,MAAQ,0BAKZ4H,EAAOqG,gBAEDrG,EAAOqG,gBAAgBlM,OAAS,IACzC+F,EAAOmG,gBAAkB,6CAFzBnG,EAAOmG,gBAAkB,gCAKtBrG,EAAOsG,YAEDtG,EAAOsG,YAAYnM,OAAS,IACrC+F,EAAOoG,YAAc,6CAFrBpG,EAAOoG,YAAc,wBAKhBpG,ECNT,IAyIeqG,GAzIK,SAAC5J,GAAW,IAAD,EACHjC,qBAAW5B,GAA7BN,EADqB,EACrBA,KAAMgO,EADe,EACfA,QADe,EAgBzB5G,EAbkB,CACpBzH,KAAMK,GAAQA,EAAKE,YACnBN,MAAOI,GAAQA,EAAKJ,MACpBkO,YAAa,GACbD,gBAAiB,IASkBD,GAhBR,6CAW3B3F,EAX2B,EAW3BA,aACAI,EAZ2B,EAY3BA,aACAb,EAb2B,EAa3BA,OACAC,EAd2B,EAc3BA,UACAG,EAf2B,EAe3BA,QAf2B,EAkBSxD,oBAAS,GAlBlB,mBAkBtB6J,EAlBsB,KAkBTC,EAlBS,cAoBdC,EApBc,gFAoB7B,WAAkCvO,EAAOC,GAAzC,eAAAoK,EAAA,6DACQmE,EAAajP,EAASC,IAAIG,KAAK8O,kBAAkBD,WACrDxO,EACAC,GAHJ,kBAMUG,EAAKsO,6BAA6BF,GAN5C,OAOI1H,QAAQC,IAAI,gCAPhB,gDASID,QAAQsF,MAAM,mCAAd,MACApF,EAAM,KAAIC,SAVd,0DApB6B,+BAkCd0H,EAlCc,kFAkC7B,WAAkC5O,EAAMC,EAAOC,GAA/C,SAAAoK,EAAA,sEACQjK,EAAKC,cAAc,CACvBC,YAAaP,IAFjB,uBAIQK,EAAKwO,YAAY5O,GAJzB,WAKMC,EALN,gCAMUG,EAAKyO,eAAe5O,GAN9B,4CAlC6B,kEA4C7B,oCAAAoK,EAAA,6DACEiE,GAAe,GACPvO,EAA8C6H,EAA9C7H,KAAMC,EAAwC4H,EAAxC5H,MAAOiO,EAAiCrG,EAAjCqG,gBAAiBC,EAAgBtG,EAAhBsG,YAFxC,kBAIUK,EAAmBnO,EAAKJ,MAAOiO,GAJzC,uBAKUU,EAAmB5O,EAAMC,EAAOkO,GAL1C,uBAMyB3O,EAASuP,MAC5B9O,EACAkO,GAAeD,GARrB,OAMUvI,EANV,OAUImC,EAAU,CACR9H,KAAMK,GAAQA,EAAKE,YACnBN,MAAOI,GAAQA,EAAKJ,MACpBkO,YAAa,GACbD,gBAAiB,KAEnBG,EAAQ1I,EAAOtF,MACf4G,EAAM,gCACNzC,EAAMlC,QAAQ+B,KAAd,YAlBJ,kDAoBI0C,QAAQsF,MAAM,mCAAd,MACApF,EAAM,KAAIC,SArBd,QAuBEqH,GAAe,GAvBjB,2DA5C6B,sBAsE7B,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAWhQ,MAAM,iBACjB,kBAAC,IAAD,CAAY2I,QAAS,uBAAwB8H,OAAQV,IACrD,kBAAC,IAAD,KACE,kBAAC,IAAD,CAASzL,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,YACA,kBAAC,IAAD,CACEtM,KAAK,OACL2J,KAAK,OACLlB,MAAOZ,EAAO7H,KACduM,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,CAAS3J,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,SACA,kBAAC,IAAD,CACEtM,KAAK,QACL2J,KAAK,OACLlB,MAAOZ,EAAO5H,MACdsM,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,CAAS3J,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,oBACA,kBAAC,IAAD,CACEtM,KAAK,kBACL2J,KAAK,WACLlB,MAAOZ,EAAOqG,gBACd3B,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,CAAS3J,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,gBACA,kBAAC,IAAD,CACEtM,KAAK,cACL2J,KAAK,WACLlB,MAAOZ,EAAOsG,YACd5B,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CACE7C,KAAK,SACLjL,MAAM,UACNgO,OAAO,QACPhK,QAASgG,EACTkE,SAAU3E,GALZ,qBC5IG,SAASgH,GAAepH,GACrC,IAAIE,EAAS,GAkBb,OAhBKF,EAAO7H,OACV+H,EAAO/H,KAAO,qBAGX6H,EAAO5H,MAEA,2CAA2C4I,KAAKhB,EAAO5H,SACjE8H,EAAO9H,MAAQ,0BAFf8H,EAAO9H,MAAQ,0BAKZ4H,EAAO3H,SAED2H,EAAO3H,SAAS8B,OAAS,IAClC+F,EAAO7H,SAAW,6CAFlB6H,EAAO7H,SAAW,wBAKb6H,ECXT,IAAMmD,GAAe,CACjBlL,KAAM,GACNC,MAAO,GACPC,SAAU,IAwDCgP,GAnDA,SAAC1K,GAAW,IAAD,EAGlBiD,EAAkByD,GAAc+D,IAHd,6CAElB3G,EAFkB,EAElBA,aAAaI,EAFK,EAELA,aAAab,EAFR,EAEQA,OAAiBI,GAFzB,EAEeH,UAFf,EAEyBG,SAFzB,EAKcxD,oBAAS,GALvB,mBAKf6J,EALe,KAKHC,EALG,iDAOtB,gCAAAjE,EAAA,6DACIiE,GAAe,GACRtO,EAAuB4H,EAAvB5H,MAAMC,EAAiB2H,EAAjB3H,SAASF,EAAQ6H,EAAR7H,KAF1B,kBAIcR,EAAS2P,SAASnP,EAAKC,EAAMC,GAJ3C,OAKQ+G,EAAM,oCACNzC,EAAMlC,QAAQ+B,KAAK,KAN3B,gDAQQ0C,QAAQsF,MAAM,uDAAd,MACApF,EAAM,KAAIC,SATlB,QAWIqH,GAAe,GAXnB,0DAPsB,sBAqBtB,OACI,kBAAC,IAAD,KACI,kBAAC,EAAD,CAAWhQ,MAAM,YACjB,kBAAC,IAAD,CAAY2I,QAAS,uBAAwB8H,OAAQV,IACrD,kBAAC,IAAD,KACI,kBAAC,IAAD,CAASzL,MAAM,QACX,kBAAC,IAAD,CAAUyJ,SAAU,YAApB,YACA,kBAAC,IAAD,CAAUtM,KAAK,OAAO2J,KAAK,OAAOlB,MAAOZ,EAAO7H,KAAMuM,YAAajE,EAAckE,UAAQ,KAG7F,kBAAC,IAAD,CAAS3J,MAAM,QACX,kBAAC,IAAD,CAAUyJ,SAAU,YAApB,SACA,kBAAC,IAAD,CAAUtM,KAAK,QAAQ2J,KAAK,OAAOlB,MAAOZ,EAAO5H,MAAOsM,YAAajE,EAAckE,UAAQ,KAG/F,kBAAC,IAAD,CAAS3J,MAAM,QACX,kBAAC,IAAD,CAAUyJ,SAAU,YAApB,YACA,kBAAC,IAAD,CAAUtM,KAAK,WAAW2J,KAAK,WAAWlB,MAAOZ,EAAO3H,SAAUqM,YAAajE,EAAckE,UAAQ,KAGzG,kBAAC,IAAD,KACI,kBAAC,IAAD,KACI,kBAAC,IAAD,CAAW7C,KAAK,SAASjL,MAAM,UAAUgO,OAAO,QAAQhK,QAASgG,EAAckE,SAAU3E,GAAzF,iBC3DT,SAASmH,GAAcvH,GACpC,IAAIE,EAAS,GAcb,OAZKF,EAAO5H,MAEA,2CAA2C4I,KAAKhB,EAAO5H,SACjE8H,EAAO9H,MAAQ,0BAFf8H,EAAO9H,MAAQ,0BAKZ4H,EAAO3H,SAED2H,EAAO3H,SAAS8B,OAAS,IAClC+F,EAAO7H,SAAW,6CAFlB6H,EAAO7H,SAAW,wBAKb6H,ECIT,IAAMmD,GAAgB,CACpBjL,MAAO,GACPC,SAAU,IAgFGmP,GA7ED,SAAC7K,GAAW,IAAD,EAOnBiD,EAAkByD,GAAekE,IAPd,6CAErB9G,EAFqB,EAErBA,aACAI,EAHqB,EAGrBA,aACAb,EAJqB,EAIrBA,OAEAI,GANqB,EAKrBH,UALqB,EAMrBG,SANqB,EASexD,oBAAS,GATxB,mBASH8J,GATG,uDAWvB,8BAAAjE,EAAA,6DACEiE,GAAe,GACPtO,EAAoB4H,EAApB5H,MAAOC,EAAa2H,EAAb3H,SAFjB,kBAIUV,EAASuP,MAAM9O,EAAOC,GAJhC,OAKI+G,EAAM,qCACNzC,EAAMlC,QAAQ+B,KAAK,KANvB,gDAQI0C,QAAQsF,MAAM,6CAAd,MACApF,EAAM,KAAIC,SATd,QAWEqH,GAAe,GAXjB,0DAXuB,sBAyBvB,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAWhQ,MAAM,UACjB,kBAAC,IAAD,KACE,kBAAC,IAAD,CAASsE,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,SACA,kBAAC,IAAD,CACEtM,KAAK,QACL2J,KAAK,OACLlB,MAAOZ,EAAO5H,MACdsM,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,CAAS3J,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,YACA,kBAAC,IAAD,CACEtM,KAAK,WACL2J,KAAK,WACLlB,MAAOZ,EAAO3H,SACdqM,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CACE7C,KAAK,SACLjL,MAAM,UACNgO,OAAO,QACPhK,QAASgG,EACTkE,SAAU3E,GALZ,WAYJ,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQrF,MAAM,wCACZ,kBAAC,IAAD,CAAeH,WAAU,WAAzB,wBACwB,UC5FrB,SAAS6M,GAAiBzH,GACvC,IAAIE,EAAS,GAQb,OANKF,EAAO5H,MAEA,2CAA2C4I,KAAKhB,EAAO5H,SACjE8H,EAAO9H,MAAQ,0BAFf8H,EAAO9H,MAAQ,0BAKV8H,ECST,IAAMmD,GAAgB,CACpBjL,MAAO,IA+DMsP,GA5DA,SAAC/K,GAAW,IAAD,EAOpBiD,EAAkByD,GAAeoE,IAPb,6CAEtBhH,EAFsB,EAEtBA,aACAI,EAHsB,EAGtBA,aACAb,EAJsB,EAItBA,OAEAI,GANsB,EAKtBH,UALsB,EAMtBG,SANsB,EAScxD,oBAAS,GATvB,mBASJ8J,GATI,uDAWxB,4BAAAjE,EAAA,6DACEiE,GAAe,GACPtO,EAAU4H,EAAV5H,MAFV,kBAIUT,EAASgQ,cAAcvP,GAJjC,OAKIgH,EAAM,0CACNzC,EAAMlC,QAAQ+B,KAAK,UANvB,gDAQI0C,QAAQsF,MACN,0DADF,MAIApF,EAAM,KAAIC,SAZd,QAcEqH,GAAe,GAdjB,0DAXwB,sBA2BxB,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAWhQ,MAAM,oBACjB,kBAAC,IAAD,KACE,kBAAC,IAAD,CAASsE,MAAM,QACb,kBAAC,IAAD,CAAUyJ,SAAS,YAAnB,SACA,kBAAC,IAAD,CACEtM,KAAK,QACL2J,KAAK,OACLlB,MAAOZ,EAAO5H,MACdsM,YAAajE,EACbkE,UAAQ,KAIZ,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CACE7C,KAAK,SACLjL,MAAM,UACNgO,OAAO,QACPhK,QAASgG,EACTkE,SAAU3E,GALZ,0BChCGwH,OA9Bf,YAAoC,IAAXlE,EAAU,EAAVA,OAAU,EACP9G,mBAAS,GADF,mBAC1BiB,EAD0B,KACnBgK,EADmB,KAEjC,OACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAS7M,MAAM,QACb,kBAAC,IAAD,KACE,yBAAKrE,MAAO,CAAEmR,OAAQ,WACpB,kBAAC,IAAD,CAAQ5M,IAAKwI,EAAO7F,OAGxB,kBAAC,IAAD,KACG6F,EAAOpG,KAAI,SAACyK,EAAGpG,GAAJ,OACV,kBAAC,IAAD,CACE5D,IAAG,iBAAY4D,GACf9G,QAAS,kBAAMgN,EAASlG,IACxB1G,KAAK,SAEL,kBAAC,IAAD,CAAQC,IAAK6M,YCmCZC,GA5CM,SAAC,GAAyD,IAAvDb,EAAsD,EAAtDA,OAAQzQ,EAA8C,EAA9CA,MAAOuR,EAAuC,EAAvCA,WAAYC,EAA2B,EAA3BA,YAAaC,EAAc,EAAdA,QAAc,EACtCvL,mBAASuL,EAAUA,EAAQC,KAAO,IADI,mBACrEC,EADqE,KACxDC,EADwD,KAQ5E,OACE,kBAAC,IAAD,CAAUnB,OAAQA,EAAQoB,aAAcL,GACtC,kBAAC,IAAD,CAAWM,aAAW,GACpB,kBAAC,IAAD,CAAY3R,MAAM,WAChB,kBAAC,IAAD,KAAWH,GACX,kBAAC,IAAD,CAAYuE,KAAK,SACf,kBAAC,IAAD,CAAWJ,QAASqN,GAClB,0BAAMO,KAAK,MAAMC,aAAW,SAA5B,UAEQ,IAHV,UAOF,kBAAC,IAAD,CAAYzN,KAAK,OACf,kBAAC,IAAD,CAAWJ,QAAS,kBAlB5BoN,EAkBmDI,QAjBnDC,EAAe,MAiBP,OACO,IACL,0BAAMG,KAAK,MAAMC,aAAW,WAA5B,oBAOR,kBAAC,IAAD,CAAYjK,YAAU,GACpB,kBAAC,IAAD,CACEkK,KAAM,GACNC,KAAM,GACNzG,YAAY,yCACZvB,MAAOyH,EACP3D,YAAa,SAACmE,GAAD,OAAOP,EAAeO,EAAElI,OAAOC,aCoEvCkI,GAvGQ,SAAC,GAAsC,IAApCX,EAAmC,EAAnCA,QAAS7N,EAA0B,EAA1BA,QAASyO,EAAiB,EAAjBA,WAClCvQ,EAASkC,qBAAWC,GAApBnC,KADmD,EAEzBoE,oBAAS,GAFgB,mBAEpDoM,EAFoD,KAEzCC,EAFyC,KAIrDC,EAAmB1Q,GAAQA,EAAKwB,MAAQmO,EAAQtM,SAAS9B,GA8C/D,OACE,oCACE,kBAAC,GAAD,CACEoN,OAAQ6B,EACRtS,MAAM,eACNuR,WA7CN,SAA2BI,GACzB,IAAMjP,EAAazB,EAASK,GAAGqB,WAAW,YAAYC,IAAIgB,EAAQP,IAClEX,EAAWG,MAAMC,MAAK,SAACF,GACrB,GAAIA,EAAIG,OAAQ,CACd,IAAM0P,EAAmB7P,EAAII,OAAOuC,SAC9BmN,EAAa,CACjBvN,SAAU,CAAE9B,GAAIvB,EAAKwB,IAAK7B,KAAMK,EAAKE,aACrCsD,QAASqI,KAAKC,MACd8D,KAAMC,GAEFgB,EAAkBF,EAAiB7L,KAAI,SAACgM,GAAD,OAC3CA,EAAKtN,UAAYmM,EAAQnM,QAAUoN,EAAaE,KAElDlQ,EAAWgB,OAAO,CAAE6B,SAAUoN,IAC9BN,GAAW,SAACQ,GAAD,mBAAC,eACPA,GADM,IAETtN,SAAUoN,WAIhBJ,GAAa,IA0BTf,YAlDN,WACEe,GAAa,IAkDTd,QAASA,IAEX,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAASnN,MAAM,QACb,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAUD,MAAM,kBACd,uBACEpE,MAAO,CACL4E,WAAY,SACZF,SAAU,SACVG,WAAY,WAGb2M,EAAQtM,SAAS1D,KAPpB,IAO2B,iBACxB4D,IAAoBoM,EAAQnM,UAE/B,yBAAKZ,UAAU,wBAAwB+M,EAAQC,MAC9Cc,GACC,kBAAC,IAAD,CAAWpS,KAAK,QAAQ+D,QAAS,kBAAMoO,GAAa,KAClD,0BAAMR,KAAK,MAAMC,aAAW,OAA5B,sBAEQ,IAHV,QAODQ,GACC,kBAAC,IAAD,CACEpS,KAAK,QACL+D,QAAS,kBArD3B,WACE,IAAMzB,EAAazB,EAASK,GAAGqB,WAAW,YAAYC,IAAIgB,EAAQP,IAClEX,EAAWG,MAAMC,MAAK,SAACF,GACrB,GAAIA,EAAIG,OAAQ,CACd,IACM4P,EADmB/P,EAAII,OAAOuC,SACKkJ,QACvC,SAACmE,GAAD,OAAUA,EAAKtN,UAAYmM,EAAQnM,WAErC5C,EAAWgB,OAAO,CAAE6B,SAAUoN,IAC9BN,GAAW,SAACQ,GAAD,mBAAC,eACPA,GADM,IAETtN,SAAUoN,WA0CeG,KAEf,0BAAMf,KAAK,MAAMC,aAAW,OAA5B,sBAEQ,IANV,iBC5EVe,GAAYzH,IAAZyH,QA4IOC,GA1IC,SAAC/M,GAAW,IAClBnE,EAASkC,qBAAWC,GAApBnC,KADiB,EAEKoE,mBAAS,MAFd,mBAElBtC,EAFkB,KAETyO,EAFS,OAGSnM,oBAAS,GAHlB,mBAGlBoM,EAHkB,KAGPC,EAHO,KAInBhQ,EAAY0D,EAAMgN,MAAMC,OAAO3Q,UAC/BG,EAAazB,EAASK,GAAGqB,WAAW,YAAYC,IAAIL,GALjC,4CAgFzB,sBAAAwJ,EAAA,sEACQgH,GAAQI,KAAK,CACjBtP,IAAKD,EAAQC,MAFjB,4CAhFyB,sBAsFzB,OA/EAgD,qBAAU,WAKRnE,EAAWG,MAAMC,MAAK,SAACF,GACrByP,EAAW,2BAAKzP,EAAII,QAAV,IAAkBK,GAAIT,EAAIS,WAJrC,CAACd,IA8EF,kBAAC,IAAD,KACE,kBAAC,EAAD,CACEvC,MAAO4D,GAAWA,EAAQgB,YAC1B4K,OAAQ5L,GAdd,SAA0BA,GACxB,OAAO9B,GAAQA,EAAKwB,MAAQM,EAAQuB,SAAS9B,GAatBmP,CAAiB5O,GACpCmB,KAAMqO,IACN/J,OA5BN,WACE3G,EACG2Q,SACAvQ,MAAK,WACJ0F,QAAQC,IAAR,2BAAgC7E,EAAQP,GAAxC,gBAEDwC,OAAM,SAACyN,GACN9K,QAAQsF,MAAM,2BAA4BwF,MAE9CrN,EAAMlC,QAAQ+B,KAAK,QAqBjB,kBAAC,IAAD,KACE,kBAAC,GAAD,CACE2K,OAAQ6B,EACRtS,MAAM,cACNuR,WArER,SAA6BI,GACtB7P,GAGHY,EAAWG,MAAMC,MAAK,SAACF,GACrB,GAAIA,EAAIG,OAAQ,CACd,IAAM0P,EAAmB7P,EAAII,OAAOuC,SAC9BmN,EAAa,CACjBvN,SAAU,CAAE9B,GAAIvB,EAAKwB,IAAK7B,KAAMK,EAAKE,aACrCsD,QAASqI,KAAKC,MACd8D,KAAMC,GAEFgB,EAAe,sBAAOF,GAAP,CAAyBC,IAC9ChQ,EAAWgB,OAAO,CAAE6B,SAAUoN,IAC9BN,GAAW,SAACQ,GAAD,mBAAC,eACPA,GADM,IAETtN,SAAUoN,WAIhBJ,GAAa,IAlBbtM,EAAMlC,QAAQ+B,KAAK,WAoEf0L,YA1ER,WACEe,GAAa,MA2ER3O,GACC,oCACE,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQS,MAAM,mBACZ,kBAAC,EAAD,CAAaT,QAASA,EAASE,QA1GtB,6CA2GT,kBAAC,GAAD,CAAekJ,OAAQpJ,EAAQoJ,SAC/B,kBAAC,IAAD,CAAW7I,QAAS,WAtD7BrC,EAGH8D,EACGtD,UAAUR,EAAMS,GAChBO,MAAK,SAAC4K,GAAD,OAAgB2E,EAAW3E,MAChC7H,OAAM,kBAAMI,EAAMlC,QAAQ+B,KAAK,aALlCG,EAAMlC,QAAQ+B,KAAK,WAqDoC1F,KAAK,UAC9C,0BAAM2R,KAAK,MAAMC,aAAW,aAA5B,sBAEQ,IAHV,kBAMA,kBAAC,IAAD,CAAW7N,QAAS,WAhG7BrC,EAGHyQ,GAAa,GAFbtM,EAAMlC,QAAQ+B,KAAK,WA+FsC1F,KAAK,UAChD,0BAAM2R,KAAK,MAAMC,aAAW,UAA5B,gBAEQ,IAHV,qBASLpO,EAAQ2B,SAASqB,KAAI,SAAC6K,EAAStK,GAAV,OACpB,kBAAC,GAAD,CACEE,IAAKF,EACLsK,QAASA,EACT7N,QAASA,EACTyO,WAAYA,WCnBbkB,I,6EAnFH,WAAO,IAAD,EC/CH,WAAoB,IAAD,EACArN,mBAAS,MADT,mBACzBsN,EADyB,KACfC,EADe,KAchC,OAXA5M,qBAAU,WACR,IAAMC,EAAc7F,EAASI,KAAKqS,oBAAmB,SAAC5R,GAElD2R,EADE3R,GAGU,SAGhB,OAAO,kBAAMgF,OACZ,IAEI,CAAC0M,EAAUC,GDkCME,GADR,mBACT7R,EADS,KACHgO,EADG,KAGhB,OACE,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,EAAa8D,SAAd,CAAuB1J,MAAO,CAAEpI,OAAMgO,YACpC,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,aACE+D,OAAK,EACLC,KAAK,IACLC,OAAQ,kBAAM,kBAAC,IAAD,CAAUC,GAAG,YAH7B,SAIS,IAET,kBAAC,IAAD,CAAOF,KAAK,QAAQG,UAAWpM,IAC/B,kBAAC,IAAD,CAAOiM,KAAK,YAAYG,UAAW1L,IAEnC,kBAAC,IAAD,CAAOuL,KAAK,UAAUG,UAAWrH,IAEjC,kBAAC,IAAD,CAAOkH,KAAK,UAAUG,UAAW3F,IACjC,kBAAC,IAAD,CAAOwF,KAAK,WAAWG,UAAW7E,IAClC,kBAAC,IAAD,CAAO0E,KAAK,eAAeG,UAAWpE,KACtC,kBAAC,IAAD,CAAOiE,KAAK,UAAUG,UAAWtD,KACjC,kBAAC,IAAD,CAAOmD,KAAK,SAASG,UAAWnD,KAChC,kBAAC,IAAD,CAAOgD,KAAK,UAAUG,UAAWjD,KACjC,kBAAC,IAAD,CAAO8C,KAAK,sBAAsBG,UAAWjB,KAC7C,kBAAC,IAAD,CAAOiB,UAAW,kBAAM,kBAAC,IAAD,CAAUD,GAAG,cAEvC,kBAAC,IAAD,CAAWzP,KAAK,UACd,kBAAC,IAAD,CAAc2P,IAAI,OAAOjM,KAAK,SAC5B,kBAAC,IAAD,CAASlD,KAAMoP,MACf,kBAAC,IAAD,KACE,0BAAMpC,KAAK,MAAMC,aAAW,SAA5B,gBAEQ,IAHV,cAOF,kBAAC,IAAD,CAAckC,IAAI,WAAWjM,KAAK,aAChC,kBAAC,IAAD,CAASlD,KAAMqP,MACf,kBAAC,IAAD,KACE,0BAAMrC,KAAK,MAAMC,aAAW,SAA5B,gBAEQ,IAHV,aAOF,kBAAC,IAAD,CAAckC,IAAI,SAASjM,KAAK,WAC9B,kBAAC,IAAD,CAASlD,KAAMsP,MACf,kBAAC,IAAD,KACE,0BAAMtC,KAAK,MAAMC,aAAW,aAA5B,gBAEQ,IAHV,WAOF,kBAAC,IAAD,CAAckC,IAAI,SAASjM,KAAK,WAC9B,kBAAC,IAAD,CAASlD,KAAMuP,MACf,kBAAC,IAAD,KACE,0BAAMvC,KAAK,MAAMC,aAAW,UAA5B,gBAEQ,IAHV,WAOF,kBAAC,IAAD,CAAckC,IAAI,UAAUjM,KAAK,YAC/B,kBAAC,IAAD,CAASlD,KAAMG,MACf,kBAAC,IAAD,KACE,0BAAM6M,KAAK,MAAMC,aAAW,QAA5B,gBADF,mBElHhBuC,IAASR,OAAO,kBAAC,GAAD,MAASlL,SAAS2L,eAAe,U,wDCJjD,IAAI5N,EAAM,CACT,8BAA+B,CAC9B,IACA,GAED,uBAAwB,CACvB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,0BAA2B,CAC1B,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,sBAAuB,CACtB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,4BAA6B,CAC5B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,mCAAoC,CACnC,IACA,IAED,uBAAwB,CACvB,IACA,IAED,+BAAgC,CAC/B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,uBAAwB,CACvB,IACA,GAED,uBAAwB,CACvB,IACA,IAED,yBAA0B,CACzB,IACA,GAED,8BAA+B,CAC9B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,+BAAgC,CAC/B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,4BAA6B,CAC5B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,gCAAiC,CAChC,IACA,KAGF,SAAS6N,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEhO,EAAK8N,GAC9B,OAAOlS,QAAQqS,UAAU/R,MAAK,WAC7B,IAAIqP,EAAI,IAAI2C,MAAM,uBAAyBJ,EAAM,KAEjD,MADAvC,EAAE4C,KAAO,mBACH5C,KAIR,IAAI6C,EAAMpO,EAAI8N,GAAMrR,EAAK2R,EAAI,GAC7B,OAAOL,EAAoBxC,EAAE6C,EAAI,IAAIlS,MAAK,WACzC,OAAO6R,EAAoBtR,MAG7BoR,EAAoB5K,KAAO,WAC1B,OAAOD,OAAOC,KAAKjD,IAEpB6N,EAAoBpR,GAAK,GACzB4R,EAAOC,QAAUT,G,mBChMjB,IAAI7N,EAAM,CACT,sBAAuB,CACtB,IACA,KAGF,SAAS6N,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEhO,EAAK8N,GAC9B,OAAOlS,QAAQqS,UAAU/R,MAAK,WAC7B,IAAIqP,EAAI,IAAI2C,MAAM,uBAAyBJ,EAAM,KAEjD,MADAvC,EAAE4C,KAAO,mBACH5C,KAIR,IAAI6C,EAAMpO,EAAI8N,GAAMrR,EAAK2R,EAAI,GAC7B,OAAOL,EAAoBxC,EAAE6C,EAAI,IAAIlS,MAAK,WACzC,OAAO6R,EAAoBtR,MAG7BoR,EAAoB5K,KAAO,WAC1B,OAAOD,OAAOC,KAAKjD,IAEpB6N,EAAoBpR,GAAK,GACzB4R,EAAOC,QAAUT,I","file":"static/js/main.0eb6f9b9.chunk.js","sourcesContent":["import React from \"react\";\nimport { IonToolbar, IonHeader, IonTitle } from \"@ionic/react\";\n\nconst SmallHeader = ({ title }) => {\n return (\n \n \n {title}\n \n \n );\n};\n\nexport default SmallHeader;\n","import React from \"react\";\nimport { IonToolbar, IonHeader, IonTitle } from \"@ionic/react\";\n\nconst LargeHeader = ({ title }) => {\n return (\n \n \n {title}\n \n \n );\n};\n\nexport default LargeHeader;\n","// For Firebase JS SDK v7.20.0 and later, measurementId is optional\nconst firebaseConfig = {\n apiKey: process.env.REACT_APP_API_KEY,\n authDomain: process.env.REACT_APP_AUTH_DOMAIN,\n databaseURL: process.env.REACT_APP_DATABASE_URL,\n projectId: process.env.REACT_APP_PROJECT_ID,\n storageBucket: process.env.REACT_APP_STORAGE_BUCKET,\n messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,\n appId: process.env.REACT_APP_APP_ID,\n measurementId: process.env.REACT_APP_MEASUREMENT_ID,\n};\n\nexport default firebaseConfig;\n","import app from \"firebase/app\";\nimport \"firebase/auth\";\nimport \"firebase/firestore\";\nimport \"firebase/storage\";\n\nimport firebaseConfig from \"./config\";\n\nclass Firebase {\n constructor() {\n app.initializeApp(firebaseConfig);\n this.app = app;\n this.auth = app.auth();\n this.db = app.firestore();\n this.storage = app.storage();\n }\n\n async register(name, email, password) {\n const newUser = await this.auth.createUserWithEmailAndPassword(\n email,\n password\n );\n return newUser.user.updateProfile({\n displayName: name,\n });\n }\n\n login(email, password) {\n return this.auth.signInWithEmailAndPassword(email, password);\n }\n\n logout() {\n return this.auth.signOut();\n }\n\n resetPassword(email) {\n return this.auth.sendPasswordResetEmail(email);\n }\n}\n\nconst firebase = new Firebase();\nexport default firebase;\n","import { createContext } from \"react\";\n\nconst UserContexts = createContext(null);\n\nexport default UserContexts;\n","import firebase from \"../firebase\";\n\nfunction addUpvote(user, productId) {\n if (!user) return Promise.reject();\n\n const productRef = firebase.db.collection(\"products\").doc(productId);\n\n return productRef.get().then((doc) => {\n if (doc.exists) {\n const data = doc.data();\n const previousVotes = data.votes;\n const vote = { votedBy: { id: user.uid, name: user.displayName } };\n const updatedVotes = [...previousVotes, vote];\n const voteCount = updatedVotes.length;\n productRef.update({ votes: updatedVotes, voteCount });\n\n return {\n ...data,\n votes: updatedVotes,\n voteCount: voteCount,\n };\n }\n });\n}\n\nexport default {\n addUpvote,\n};\n","import React, { useContext } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport {\n IonItem,\n IonLabel,\n IonCard,\n IonCardContent,\n IonThumbnail,\n IonList,\n IonImg,\n IonIcon,\n IonText,\n IonButton,\n} from \"@ionic/react\";\nimport {\n chevronUpCircleOutline,\n personCircleOutline,\n timeOutline,\n caretUp,\n chatbubbleEllipsesOutline,\n} from \"ionicons/icons\";\nimport UserContext from \"../../contexts/UserContexts\";\nimport productService from \"../../services/product\";\nimport formatDistanceToNow from \"date-fns/formatDistanceToNow\";\n\nconst ProductItem = ({ product, url, browser, history }) => {\n const { user } = useContext(UserContext);\n\n const addUpvote = (event) => {\n event.preventDefault();\n event.stopPropagation();\n productService.addUpvote(user, product.id).catch(() => {\n history.push(\"/login\");\n });\n };\n\n return (\n \n \n \n \n \n \n \n \n
\n {product.title}\n
\n
\n {product.description}\n
\n \n {\" \"}\n \n {product.voteCount} hunting-point\n \n {\" ๐ŸŽˆ \"}\n {\" \"}\n \n {product.postedBy.name}\n \n {\" ๐Ÿงฑ \"}\n {\" \"}\n \n {formatDistanceToNow(product.created)}\n \n {product.comments.length > 0 && (\n <>\n {\" ๐Ÿ“œ \"}\n {\" \"}\n \n {product.comments.length} comments\n \n \n )}{\" \"}\n

\n
\n \n
\n \n {product.voteCount}\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default withRouter(ProductItem);\n","import React, { useState, useEffect } from \"react\";\nimport firebase from \"../../firebase\";\nimport ProductItem from \"./ProductItem\";\nimport formatDate from \"date-fns/format\";\nimport isYesterday from \"date-fns/isYesterday\";\nimport isToday from \"date-fns/isToday\";\nimport { IonItem, IonLabel } from \"@ionic/react\";\n\nconst ProductList = (props) => {\n const [products, setProducts] = useState([]);\n const isTrending = props.location.pathname.includes(\"trending\");\n\n useEffect(() => {\n const unsubscribe = getProducts();\n return () => unsubscribe();\n }, [isTrending]);\n\n function getProducts() {\n if (isTrending) {\n return firebase.db\n .collection(\"products\")\n .orderBy(\"voteCount\", \"desc\")\n .onSnapshot(handleSnapshot);\n }\n\n return firebase.db\n .collection(\"products\")\n .orderBy(\"created\", \"desc\")\n .onSnapshot(handleSnapshot);\n }\n\n function handleSnapshot(snapshot) {\n const products = snapshot.docs.map((doc) => {\n return { id: doc.id, ...doc.data() };\n });\n\n setProducts(products);\n }\n\n let prevDate = null;\n\n return products.map((product, index) => {\n const result = [\n ,\n ];\n const currentDate = isToday(product.created)\n ? \"Today\"\n : isYesterday(product.created)\n ? \"Yesterday\"\n : formatDate(product.created, \"MMM d\");\n\n if (currentDate !== prevDate && !isTrending) {\n result.unshift(\n \n \n {currentDate}\n \n \n );\n prevDate = currentDate;\n }\n\n return result;\n });\n};\n\nexport default ProductList;\n","import React from \"react\";\nimport { IonPage, IonContent } from \"@ionic/react\";\nimport SmallHeader from \"../components/Header/SmallHeader\";\nimport LargeHeader from \"../components/Header/LargeHeader\";\nimport ProductList from \"../components/Product/ProductList\";\n\nconst Home = (props) => {\n return (\n <>\n \n \n \n \n\n \n

\n \n
\n
\n \n );\n};\n\nexport default Home;\n","import React from \"react\";\nimport { IonPage, IonContent } from \"@ionic/react\";\nimport SmallHeader from \"../components/Header/SmallHeader\";\nimport LargeHeader from \"../components/Header/LargeHeader\";\nimport ProductList from \"../components/Product/ProductList\";\n\nconst Trending = (props) => {\n return (\n \n \n \n \n

\n \n {console.log(\"What the fuzzzz\", props.location)}\n
\n
\n );\n};\n\nexport default Trending;\n","export function toast(message, duration = 5000) {\n const toast = document.createElement(\"ion-toast\");\n toast.message = message;\n toast.duration = duration;\n toast.color = \"dark\";\n\n document.body.appendChild(toast);\n return toast.present();\n}\n","import { useState, useEffect } from \"react\";\nimport { toast } from \"../utils/toast\";\n\nexport default function useFormValidation(initialState, validate, action) {\n const [values, setValues] = useState(initialState);\n const [errors, setErrors] = useState({});\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (loading) {\n const noErrors = Object.keys(errors).length === 0;\n if (noErrors) {\n action();\n setValues(initialState);\n setLoading(false);\n } else {\n toast(Object.values(errors).join(\" \"));\n setLoading(false);\n }\n }\n }, [errors]);\n\n function handleChange(event) {\n setValues((previousValues) => ({\n ...previousValues,\n [event.target.name]: event.target.value,\n }));\n }\n\n function handleSubmit() {\n const validationErrors = validate(values);\n setErrors(validationErrors);\n setLoading(true);\n }\n\n return {\n handleChange,\n handleSubmit,\n values,\n setValues,\n loading,\n };\n}\n","export default function validateCreateProduct(values) {\n let errors = {};\n\n if (!values.title) {\n errors.title = \"Title is required.\";\n }\n\n if (!values.description) {\n errors.description = \"Your description is required.\";\n } else if (values.description.length < 5) {\n errors.description = \"The description must be atleast 10 character long\";\n }\n\n if (!values.url) {\n errors.url = \"URL is required.\";\n } else if (!/^(ftp|http|https):\\/\\/[^ \"]+$/.test(values.url)) {\n errors.url = \" URL should be valid\";\n }\n\n return errors;\n}\n","export function dataURItoBlob(dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(\",\")[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n\n // write the bytes of the string to an ArrayBuffer\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ab], { type: mimeString });\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { IonButton, isPlatform } from \"@ionic/react\";\nimport { Plugins, CameraResultType } from \"@capacitor/core\";\nimport { dataURItoBlob } from \"../../utils/file\";\nimport \"./Upload.css\";\n\nconst { Camera } = Plugins;\n\nfunction Upload({ onChange, placeholder, files, multiple, ...rest }) {\n const handleSelectFile = async (evt) => {\n if (isPlatform(\"mobile\")) {\n const image = await Camera.getPhoto({\n quality: 90,\n allowEditing: false,\n resultType: CameraResultType.DataUrl,\n });\n const blob = dataURItoBlob(image.dataUrl);\n\n onChange([blob]);\n } else {\n onChange([...evt.target.files]);\n }\n };\n\n return (\n
\n {!isPlatform(\"mobile\") && (\n \n )}\n \n {files.length ? `${files.length} file selected` : placeholder}\n \n
\n );\n}\n\nUpload.propTypes = {\n multiple: PropTypes.bool,\n files: PropTypes.array,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nexport default Upload;\n","import React, { useState, useContext } from \"react\";\nimport useFormValidation from \"../Hooks/useFormValidation\";\nimport validateCreateProduct from \"../components/Product/validateCreateProduct\";\nimport firebase from \"../firebase\";\nimport UserContext from \"../contexts/UserContexts\";\nimport {\n IonPage,\n IonContent,\n IonItem,\n IonInput,\n IonRow,\n IonLabel,\n IonCol,\n IonButton,\n} from \"@ionic/react\";\nimport SmallHeader from \"../components/Header/SmallHeader\";\nimport LargeHeader from \"../components/Header/LargeHeader\";\nimport { toast } from \"../utils/toast\";\nimport Upload from \"../components/Form/Upload\";\n\nconst INITIAL_STATE = {\n title: \"\",\n description: \"\",\n url: \"\",\n};\n\nconst Submit = ({ history }) => {\n const { user } = useContext(UserContext);\n const [submitting, setSubmitting] = useState(false);\n const [thumbnail, setThumbnail] = useState([]);\n const [photos, setPhotos] = useState([]);\n const { handleSubmit, handleChange, values } = useFormValidation(\n INITIAL_STATE,\n validateCreateProduct,\n handleCreate\n );\n\n async function handleCreate() {\n try {\n if (!user) {\n history.push(\"/login\");\n return;\n }\n setSubmitting(true);\n const { url, description, title } = values;\n const id = firebase.db.collection(\"products\").doc().id;\n\n await Promise.all([\n ...thumbnail.map((f, index) =>\n firebase.storage\n .ref()\n .child(`products/${id}_thumbnail_${index}.jpg`)\n .put(f)\n ),\n ...photos.map((f, index) =>\n firebase.storage\n .ref()\n .child(`products/${id}_photos_${index}.jpg`)\n .put(f)\n ),\n ]);\n\n const productPhotos = await Promise.all(\n photos.map((f, index) =>\n firebase.storage\n .ref()\n .child(`products/${id}_photos_${index}.jpg`)\n .getDownloadURL()\n )\n );\n\n const productThumbnails = await Promise.all(\n thumbnail.map((f, index) =>\n firebase.storage\n .ref()\n .child(`products/${id}_thumbnail_${index}.jpg`)\n .getDownloadURL()\n )\n );\n\n const newProduct = {\n title,\n url,\n description,\n postedBy: {\n id: user.uid,\n name: user.displayName,\n },\n thumbnail: productThumbnails[0] || null,\n photos: productPhotos,\n voteCount: 1,\n comments: [],\n votes: [\n {\n votedBy: { id: user.uid, name: user.displayName },\n },\n ],\n created: Date.now(),\n };\n setThumbnail([]);\n setPhotos([]);\n await firebase.db.collection(\"products\").doc(id).set(newProduct);\n history.push(\"/\");\n } catch (e) {\n console.error(e);\n toast(e.message);\n setSubmitting(false);\n }\n }\n\n return (\n <>\n \n \n \n \n \n Title\n \n \n\n \n Description\n \n \n\n \n URL\n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n Submit\n \n \n \n \n \n \n );\n};\n\nexport default Submit;\n","import React, { useState, useEffect } from \"react\";\nimport { IonPage, IonContent, IonSearchbar } from \"@ionic/react\";\nimport firebase from \"../firebase\";\nimport ProductItem from \"../components/Product/ProductItem\";\nimport SmallHeader from \"../components/Header/SmallHeader\";\nimport LargeHeader from \"../components/Header/LargeHeader\";\n\nconst Search = () => {\n const [filteredProducts, setFilteredProducts] = useState([]);\n const [products, setProducts] = useState([]);\n const [filter, setFilter] = useState(\"\");\n\n useEffect(() => {\n getInitialProducts();\n }, []);\n\n useEffect(() => {\n handleSearch();\n }, [filter]);\n\n function getInitialProducts() {\n firebase.db\n .collection(\"products\")\n .get()\n .then((snapshot) => {\n const products = snapshot.docs.map((doc) => {\n return { id: doc.id, ...doc.data() };\n });\n setProducts(products);\n });\n }\n\n function handleChange(evt) {\n if (evt.key === \"Enter\") {\n setFilter(evt.target.value);\n }\n }\n\n function handleSearch() {\n const query = filter.toLowerCase();\n const matchedProducts = products.filter((product) => {\n return (\n product.description.toLowerCase().includes(query) ||\n product.url.toLowerCase().includes(query) ||\n product.postedBy.name.toLowerCase().includes(query)\n );\n });\n setFilteredProducts(matchedProducts);\n }\n\n return (\n \n \n \n \n \n {filteredProducts.map((filteredProduct, index) => (\n \n ))}\n \n \n );\n};\n\nexport default Search;\n","import React, { useContext } from \"react\";\nimport {\n IonPage,\n IonContent,\n IonList,\n IonCol,\n IonRow,\n IonIcon,\n IonLabel,\n IonItem,\n IonCard,\n IonButton,\n IonCardContent,\n IonGrid,\n} from \"@ionic/react\";\nimport { personCircleOutline, mailOutline } from \"ionicons/icons\";\nimport UserContexts from \"../contexts/UserContexts\";\nimport firebase from \"../firebase\";\nimport { toast } from \"../utils/toast\";\nimport SmallHeader from \"../components/Header/SmallHeader\";\nimport LargeHeader from \"../components/Header/LargeHeader\";\n\nconst Profile = (props) => {\n const { user } = useContext(UserContexts);\n async function logoutUser() {\n try {\n await firebase.logout();\n props.history.push(\"/\");\n toast(\"Sorry to see you goo.. BYE!!\");\n } catch (err) {\n console.error(\"Error while logging out\", err);\n toast(err.message);\n }\n }\n return (\n \n \n \n \n {user ? (\n <>\n \n \n \n \n \n \n {user.displayName}\n

Username

\n
\n
\n \n \n \n {user.email}\n

Email

\n
\n
\n
\n
\n
\n \n \n \n Edit profile\n \n \n \n \n \n \n LOGOUT\n \n \n \n \n ) : (\n \n \n \n \n Register\n \n \n \n\n \n \n \n Login\n \n \n \n \n )}\n
\n
\n );\n};\n\nexport default Profile;\n","import React from \"react\";\nimport {\n IonBackButton,\n IonHeader,\n IonTitle,\n IonToolbar,\n IonButton,\n IonIcon,\n} from \"@ionic/react\";\n\nconst NavHeader = ({ title, option, icon, action }) => {\n return (\n \n \n \n \n \n {option && (\n \n \n \n \n \n )}\n {title}\n \n \n );\n};\n\nexport default NavHeader;\n","export default function validateEditProfile(values) {\n let errors = {};\n\n if (!values.name) {\n errors.name = \"Name is required.\";\n }\n\n if (!values.email) {\n errors.email = \"Your email is required.\";\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(values.email)) {\n errors.email = \"Your email is invalid.\";\n }\n\n if (!values.currentPassword) {\n errors.currentPassword = \"Current Password is required.\";\n } else if (values.currentPassword.length < 7) {\n errors.currentPassword = \" Password should be seven charcters long.\";\n }\n\n if (!values.newPassword) {\n errors.newPassword = \"Password is required.\";\n } else if (values.newPassword.length < 7) {\n errors.newPassword = \" Password should be seven charcters long.\";\n }\n\n return errors;\n}\n","import React, { useContext, useState } from \"react\";\nimport {\n IonPage,\n IonContent,\n IonItem,\n IonLabel,\n IonInput,\n IonRow,\n IonCol,\n IonButton,\n IonLoading,\n} from \"@ionic/react\";\nimport NavHeader from \"../components/Header/NavHeader\";\nimport { toast } from \"../utils/toast\";\nimport useFormValidation from \"../Hooks/useFormValidation\";\nimport validateEditProfile from \"../components/Auth/validateEditProfile\";\nimport firebase from \"../firebase\";\nimport UserContexts from \"../contexts/UserContexts\";\n\nconst EditProfile = (props) => {\n const { user, setUser } = useContext(UserContexts);\n\n const INITIAL_STATE = {\n name: user && user.displayName,\n email: user && user.email,\n newPassword: \"\",\n currentPassword: \"\",\n };\n\n const {\n handleChange,\n handleSubmit,\n values,\n setValues,\n loading,\n } = useFormValidation(INITIAL_STATE, validateEditProfile, authenticateUser);\n\n const [busyloading, setBusyloading] = useState(false);\n\n async function reauthenticateUser(email, password) {\n const credential = firebase.app.auth.EmailAuthProvider.credential(\n email,\n password\n );\n try {\n await user.reauthenticateWithCredential(credential);\n console.log(\"successfully reauthenticated\");\n } catch (err) {\n console.error(\"Error while updating the profile\", err);\n toast(err.message);\n }\n }\n\n async function updateProfileItems(name, email, password) {\n await user.updateProfile({\n displayName: name,\n });\n await user.updateEmail(email);\n if (password) {\n await user.updatePassword(password);\n }\n }\n\n async function authenticateUser() {\n setBusyloading(true);\n const { name, email, currentPassword, newPassword } = values;\n try {\n await reauthenticateUser(user.email, currentPassword);\n await updateProfileItems(name, email, newPassword);\n const result = await firebase.login(\n email,\n newPassword || currentPassword\n );\n setValues({\n name: user && user.displayName,\n email: user && user.email,\n newPassword: \"\",\n currentPassword: \"\",\n });\n setUser(result.user);\n toast(\"Profile updated successfully\");\n props.history.push(`/profile`);\n } catch (err) {\n console.error(\"Error while updating the profile\", err);\n toast(err.message);\n }\n setBusyloading(false);\n }\n\n return (\n \n \n \n \n \n Username\n \n \n\n \n Email\n \n \n\n \n Current Password\n \n \n\n \n New Password\n \n \n\n \n \n \n Edit Profile\n \n \n \n \n \n );\n};\n\nexport default EditProfile;\n","export default function validateSignup(values) {\n let errors = {};\n\n if (!values.name) {\n errors.name = \"Name is required.\";\n }\n\n if (!values.email) {\n errors.email = \"Your email is required.\";\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(values.email)) {\n errors.email = \"Your email is invalid.\";\n }\n\n if (!values.password) {\n errors.password = \"Password is required.\";\n } else if (values.password.length < 7) {\n errors.password = \" Password should be seven charcters long.\";\n }\n\n return errors;\n}\n","import React,{useState} from 'react';\nimport {IonPage,IonContent,IonItem,IonLabel,IonInput,IonRow,IonCol,IonButton, IonLoading} from '@ionic/react';\nimport NavHeader from \"../components/Header/NavHeader\";\nimport {toast} from \"../utils/toast\";\nimport useFormValidation from \"../Hooks/useFormValidation\";\nimport validateSignup from \"../components/Auth/validateSignup\";\nimport firebase from \"../firebase\";\n\nconst INITIAL_STATE ={\n name: \"\",\n email: \"\",\n password: \"\"\n};\n\n\n\nconst Signup = (props) => {\n const {\n handleChange,handleSubmit,values,setValues,loading\n } = useFormValidation(INITIAL_STATE,validateSignup,authenticateUser)\n\n const [busyloading,setBusyloading]= useState(false);\n\n async function authenticateUser(){\n setBusyloading(true);\n const {email,password,name} = values;\n try {\n await firebase.register(name,email,password)\n toast(\"Registered successfully cheers!!\");\n props.history.push(\"/\");\n } catch (err){\n console.error(\"Error Registering the user.. Please try again later!\",err)\n toast(err.message)\n }\n setBusyloading(false);\n }\n\n return (\n \n \n \n \n \n Username\n \n \n\n \n Email\n \n \n\n \n Password\n \n \n\n \n \n Register\n \n \n \n \n )\n}\n\nexport default Signup;\n","export default function validateLogin(values) {\n let errors = {};\n\n if (!values.email) {\n errors.email = \"Your email is required.\";\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(values.email)) {\n errors.email = \"Your email is invalid.\";\n }\n\n if (!values.password) {\n errors.password = \"Password is required.\";\n } else if (values.password.length < 7) {\n errors.password = \" Password should be seven charcters long.\";\n }\n\n return errors;\n}\n","import React, { useState } from \"react\";\nimport {\n IonPage,\n IonContent,\n IonItem,\n IonLabel,\n IonInput,\n IonRow,\n IonCol,\n IonButton,\n IonRouterLink,\n} from \"@ionic/react\";\nimport NavHeader from \"../components/Header/NavHeader\";\nimport { toast } from \"../utils/toast\";\n\nimport useFormValidation from \"../Hooks/useFormValidation\";\nimport validateLogin from \"../components/Auth/validateLogin\";\nimport firebase from \"../firebase\";\n\nconst INITIAL_STATE = {\n email: \"\",\n password: \"\",\n};\n\nconst Login = (props) => {\n const {\n handleChange,\n handleSubmit,\n values,\n setValues,\n loading,\n } = useFormValidation(INITIAL_STATE, validateLogin, authenticateUser);\n\n const [busyloading, setBusyloading] = useState(false);\n\n async function authenticateUser() {\n setBusyloading(true);\n const { email, password } = values;\n try {\n await firebase.login(email, password);\n toast(\"Logged in successfully.. cheers!!\");\n props.history.push(\"/\");\n } catch (err) {\n console.error(\"Error Logging in.. Please try again later!\", err);\n toast(err.message);\n }\n setBusyloading(false);\n }\n\n return (\n \n \n \n \n Email\n \n \n\n \n Password\n \n \n\n \n \n \n Login\n \n \n \n\n \n \n \n Forgot the password ?{\" \"}\n \n \n \n \n \n );\n};\n\nexport default Login;\n","export default function validatePassword(values) {\n let errors = {};\n\n if (!values.email) {\n errors.email = \"Your email is required.\";\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(values.email)) {\n errors.email = \"Your email is invalid.\";\n }\n\n return errors;\n}\n","import React, { useState } from \"react\";\nimport {\n IonPage,\n IonContent,\n IonItem,\n IonLabel,\n IonInput,\n IonRow,\n IonCol,\n IonButton,\n} from \"@ionic/react\";\nimport NavHeader from \"../components/Header/NavHeader\";\n\nimport { toast } from \"../utils/toast\";\nimport useFormValidation from \"../Hooks/useFormValidation\";\nimport validatePassword from \"../components/Auth/validatePassword\";\nimport firebase from \"../firebase\";\n\nconst INITIAL_STATE = {\n email: \"\",\n};\n\nconst Forgot = (props) => {\n const {\n handleChange,\n handleSubmit,\n values,\n setValues,\n loading,\n } = useFormValidation(INITIAL_STATE, validatePassword, handleResetPassword);\n\n const [busyloading, setBusyloading] = useState(false);\n\n async function handleResetPassword() {\n setBusyloading(true);\n const { email } = values;\n try {\n await firebase.resetPassword(email);\n toast(\"password reset link sent to your email\");\n props.history.push(\"/login\");\n } catch (err) {\n console.error(\n \"Error while reseting password.. Please try again later!\",\n err\n );\n toast(err.message);\n }\n setBusyloading(false);\n }\n return (\n \n \n \n \n Email\n \n \n\n \n \n \n Email my password\n \n \n \n \n \n );\n};\n\nexport default Forgot;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { IonImg, IonThumbnail, IonItem, IonCard, IonList } from \"@ionic/react\";\n\nfunction ProductPhotos({ photos }) {\n const [index, setIndex] = useState(0);\n return (\n \n \n \n
\n \n
\n
\n \n {photos.map((p, i) => (\n setIndex(i)}\n slot=\"start\"\n >\n \n \n ))}\n \n
\n
\n );\n}\n\nProductPhotos.propTypes = {\n photos: PropTypes.array,\n};\n\nexport default ProductPhotos;\n","import React, { useState } from \"react\";\nimport {\n IonModal,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonButtons,\n IonButton,\n IonContent,\n IonTextarea,\n} from \"@ionic/react\";\n\nconst CommentModal = ({ isOpen, title, sendAction, closeAction, comment }) => {\n const [commentText, setCommentText] = useState(comment ? comment.text : \"\");\n\n function handleSendAction(item) {\n sendAction(item);\n setCommentText(\"\");\n }\n\n return (\n \n \n \n {title}\n \n \n \n โŒ\n {\" \"}\n Close\n \n \n \n handleSendAction(commentText)}>\n Post{\" \"}\n \n ๐Ÿ“ฎ\n \n \n \n \n \n \n setCommentText(e.target.value)}\n />\n \n \n );\n};\n\nexport default CommentModal;\n","import React, { useState, useContext } from \"react\";\nimport {\n IonCard,\n IonCardContent,\n IonList,\n IonItem,\n IonLabel,\n IonButton,\n} from \"@ionic/react\";\nimport formatDistanceToNow from \"date-fns/formatDistanceToNow\";\nimport UserContext from \"../../contexts/UserContexts\";\nimport CommentModal from \"./CommentModal\";\nimport firebase from \"../../firebase\";\n\nconst ProductComment = ({ comment, product, setProduct }) => {\n const { user } = useContext(UserContext);\n const [showModal, setShowModal] = useState(false);\n\n const postedByAuthUser = user && user.uid === comment.postedBy.id;\n\n function handleCloseModal() {\n setShowModal(false);\n }\n\n function handleEditComment(commentText) {\n const productRef = firebase.db.collection(\"products\").doc(product.id);\n productRef.get().then((doc) => {\n if (doc.exists) {\n const previousComments = doc.data().comments;\n const newComment = {\n postedBy: { id: user.uid, name: user.displayName },\n created: Date.now(),\n text: commentText,\n };\n const updatedComments = previousComments.map((item) =>\n item.created === comment.created ? newComment : item\n );\n productRef.update({ comments: updatedComments });\n setProduct((prevState) => ({\n ...prevState,\n comments: updatedComments,\n }));\n }\n });\n setShowModal(false);\n }\n\n function handleDeleteComment() {\n const productRef = firebase.db.collection(\"products\").doc(product.id);\n productRef.get().then((doc) => {\n if (doc.exists) {\n const previousComments = doc.data().comments;\n const updatedComments = previousComments.filter(\n (item) => item.created !== comment.created\n );\n productRef.update({ comments: updatedComments });\n setProduct((prevState) => ({\n ...prevState,\n comments: updatedComments,\n }));\n }\n });\n }\n\n return (\n <>\n \n \n \n \n \n \n \n {comment.postedBy.name} {\" ๐Ÿ•‘ \"}\n {formatDistanceToNow(comment.created)}\n

\n
{comment.text}
\n {postedByAuthUser && (\n setShowModal(true)}>\n \n ๐Ÿ–Š๏ธ\n {\" \"}\n Edit\n \n )}\n {postedByAuthUser && (\n handleDeleteComment(comment)}\n >\n \n ๐Ÿ—‘๏ธ\n {\" \"}\n Delete\n \n )}\n
\n
\n
\n
\n
\n \n );\n};\n\nexport default ProductComment;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport {\n IonPage,\n IonContent,\n IonButton,\n IonGrid,\n IonRow,\n IonCol,\n} from \"@ionic/react\";\nimport { closeCircleOutline, trash } from \"ionicons/icons\";\n\nimport firebase from \"../firebase\";\nimport { Plugins } from \"@capacitor/core\";\nimport UserContext from \"../contexts/UserContexts\";\nimport NavHeader from \"../components/Header/NavHeader\";\nimport ProductItem from \"../components/Product/ProductItem\";\nimport ProductPhotos from \"../components/Product/ProductPhotos\";\nimport ProductComment from \"../components/Product/ProductComment\";\nimport CommentModal from \"../components/Product/CommentModal\";\n\nimport productService from \"../services/product\";\n\nconst { Browser } = Plugins;\n\nconst Product = (props) => {\n const { user } = useContext(UserContext);\n const [product, setProduct] = useState(null);\n const [showModal, setShowModal] = useState(false);\n const productId = props.match.params.productId;\n const productRef = firebase.db.collection(\"products\").doc(productId);\n\n useEffect(() => {\n getProduct();\n }, [productId]);\n\n function getProduct() {\n productRef.get().then((doc) => {\n setProduct({ ...doc.data(), id: doc.id });\n });\n }\n\n function handleOpenModal() {\n if (!user) {\n props.history.push(\"/login\");\n } else {\n setShowModal(true);\n }\n }\n\n function handleCloseModal() {\n setShowModal(false);\n }\n\n function handleAddingComment(commentText) {\n if (!user) {\n props.history.push(\"/login\");\n } else {\n productRef.get().then((doc) => {\n if (doc.exists) {\n const previousComments = doc.data().comments;\n const newComment = {\n postedBy: { id: user.uid, name: user.displayName },\n created: Date.now(),\n text: commentText,\n };\n const updatedComments = [...previousComments, newComment];\n productRef.update({ comments: updatedComments });\n setProduct((prevState) => ({\n ...prevState,\n comments: updatedComments,\n }));\n }\n });\n setShowModal(false);\n }\n }\n\n function handleAddVote() {\n if (!user) {\n props.history.push(\"/login\");\n } else {\n productService\n .addUpvote(user, productId)\n .then((newProduct) => setProduct(newProduct))\n .catch(() => props.history.push(\"/login\"));\n }\n }\n\n function handleDeleteProduct() {\n productRef\n .delete()\n .then(() => {\n console.log(`Document with ID ${product.id} deleted`);\n })\n .catch((err) => {\n console.error(\"Error deleting document:\", err);\n });\n props.history.push(\"/\");\n }\n\n function postedByAuthUser(product) {\n return user && user.uid === product.postedBy.id;\n }\n\n async function openBrowser() {\n await Browser.open({\n url: product.url,\n });\n }\n\n return (\n \n \n \n \n {product && (\n <>\n \n \n \n \n \n handleAddVote()} size=\"medium\">\n \n ๐Ÿ—ณ๏ธ\n {\" \"}\n Give an Upvote\n \n handleOpenModal()} size=\"medium\">\n \n ๐Ÿ“œ\n {\" \"}\n Post a comment\n \n \n \n \n {product.comments.map((comment, index) => (\n \n ))}\n \n )}\n \n \n );\n};\n\nexport default Product;\n","import React from \"react\";\nimport { Redirect, Route } from \"react-router-dom\";\nimport { IonApp, IonRouterOutlet } from \"@ionic/react\";\nimport { IonReactRouter } from \"@ionic/react-router\";\nimport {\n IonTabs,\n IonTabBar,\n IonTabButton,\n IonLabel,\n IonIcon,\n} from \"@ionic/react\";\nimport {\n listCircleOutline,\n trendingUpOutline,\n createOutline,\n searchOutline,\n personCircleOutline,\n} from \"ionicons/icons\";\nimport Home from \"./pages/Home\";\nimport Trending from \"./pages/Trending\";\nimport Submit from \"./pages/Submit\";\nimport Search from \"./pages/Search\";\nimport Profile from \"./pages/Profile\";\nimport EditProfile from \"./pages/EditProfile\";\nimport Signup from \"./pages/Signup\";\nimport Login from \"./pages/Login\";\nimport Forgot from \"./pages/Forgot\";\nimport useAuth from \"./Hooks/useAuth\";\nimport UserContexts from \"./contexts/UserContexts\";\nimport Product from \"./pages/Product\";\n\n/* Core CSS required for Ionic components to work properly */\nimport \"@ionic/react/css/core.css\";\n\n/* Basic CSS for apps built with Ionic */\nimport \"@ionic/react/css/normalize.css\";\nimport \"@ionic/react/css/structure.css\";\nimport \"@ionic/react/css/typography.css\";\n\n/* Optional CSS utils that can be commented out */\nimport \"@ionic/react/css/padding.css\";\nimport \"@ionic/react/css/float-elements.css\";\nimport \"@ionic/react/css/text-alignment.css\";\nimport \"@ionic/react/css/text-transformation.css\";\nimport \"@ionic/react/css/flex-utils.css\";\nimport \"@ionic/react/css/display.css\";\n\n/* Theme variables */\nimport \"./theme/variables.css\";\n\nconst App = () => {\n const [user, setUser] = useAuth();\n\n return (\n \n \n \n \n \n }\n exact={true}\n />\n \n \n\n \n\n \n \n \n \n \n \n \n } />\n \n \n \n \n \n \n ๐Ÿฌ\n {\" \"}\n MerchHunt\n \n \n \n \n \n \n ๐Ÿ“ˆ\n {\" \"}\n Trending\n \n \n \n \n \n \n โœ”๏ธ\n {\" \"}\n Submit\n \n \n \n \n \n \n ๐Ÿ”\n {\" \"}\n Search\n \n \n \n \n \n \n ๐Ÿป\n \n Profile\n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import { useState, useEffect } from \"react\";\nimport firebase from \"../firebase\";\n\nexport default function useAuth() {\n const [authUser, setAuthUser] = useState(null);\n\n useEffect(() => {\n const unsubscribe = firebase.auth.onAuthStateChanged((user) => {\n if (user) {\n setAuthUser(user);\n } else {\n setAuthUser(null);\n }\n });\n return () => unsubscribe();\n }, []);\n\n return [authUser, setAuthUser];\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n","var map = {\n\t\"./ion-action-sheet.entry.js\": [\n\t\t148,\n\t\t5\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t149,\n\t\t6\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t150,\n\t\t7\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t151,\n\t\t18\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t152,\n\t\t19\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t153,\n\t\t43\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t154,\n\t\t20\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t155,\n\t\t21\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t156,\n\t\t22\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t157,\n\t\t23\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t158,\n\t\t44\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t159,\n\t\t10\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t160,\n\t\t24\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t161,\n\t\t45\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t162,\n\t\t46\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t163,\n\t\t25\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t164,\n\t\t26\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t165,\n\t\t27\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t166,\n\t\t28\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t167,\n\t\t29\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t168,\n\t\t8\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t169,\n\t\t15\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t170,\n\t\t9\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t171,\n\t\t30\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t172,\n\t\t31\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t173,\n\t\t32\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t174,\n\t\t11\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t175,\n\t\t17\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t176,\n\t\t47\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t177,\n\t\t33\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t178,\n\t\t34\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t179,\n\t\t35\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t180,\n\t\t36\n\t],\n\t\"./ion-slide_2.entry.js\": [\n\t\t181,\n\t\t48\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t182,\n\t\t13\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t183,\n\t\t49\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t184,\n\t\t37\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t185,\n\t\t16\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t186,\n\t\t38\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t187,\n\t\t39\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t188,\n\t\t40\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t189,\n\t\t12\n\t],\n\t\"./ion-virtual-scroll.entry.js\": [\n\t\t190,\n\t\t50\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 87;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./ion-icon.entry.js\": [\n\t\t194,\n\t\t57\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 89;\nmodule.exports = webpackAsyncContext;"],"sourceRoot":""}