@tushar-br/desktop 1.0.247 → 1.0.249
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @tushar-br/desktop might be problematic. Click here for more details.
- package/package.json +1 -1
- package/staging_area/desktop/resume web/dist/assets/KaliLinux-B8gJf7kt.js +26 -0
- package/staging_area/desktop/resume web/dist/assets/MobileViewSimulator-aeGEZ5cs.js +5 -0
- package/staging_area/desktop/resume web/dist/assets/SecretNotes-oMDnic6h.js +16 -0
- package/staging_area/desktop/resume web/dist/assets/images/1769177455986_screenshot_2026_01_23_194039.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1770625084592_screenshot_2026_02_09_134633.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1770625157233_screenshot_2026_02_08_200105.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1770625318954_screenshot_2026_02_09_135032.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1771471211893_screenshot_2026_02_19_084940.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1771471268955_screenshot_2026_02_19_085052.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1771471360160_screenshot_2026_02_18_15_57_31_33_b783bf344239542886fee7b48fa4b892.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1771471388247_screenshot_2026_02_18_15_57_31_33_b783bf344239542886fee7b48fa4b892.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/1771471567331_screenshot_2026_02_19_085459.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (1).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (2).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (3).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (4).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (5).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (6).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (7).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/Tushar/tushar (8).jpeg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/apk-laptop-wp.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/apk-mobile-wp.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/avatar.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/blog-1.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/cover-tusharbr.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/cursor.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/cursor.svg +3 -0
- package/staging_area/desktop/resume web/dist/assets/images/cyber-bg-smooth.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/features/desktop_file_explorer.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/features/desktop_home.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/features/desktop_os.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/features/mobile_home.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/global-bg-v2.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/global-bg-v3.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/global-bg-v4.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/global-bg-v5.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/global-bg.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/1.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/10.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/11.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/12.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/13.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/14.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/15.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/16.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/2.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/3.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/4.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/5.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/6.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/7.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/8.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/grid/9.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/home-avatar.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/kali-icon.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/kali-logo.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/logo--.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/logo-icon.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/logo.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/logo.svg +23 -0
- package/staging_area/desktop/resume web/dist/assets/images/og-image.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/portfolio-bg-new.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/profilecard cover video.mp4 +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/project-1.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/project-2.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/promo-banner.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/resume-preview.svg +65 -0
- package/staging_area/desktop/resume web/dist/assets/images/simulator-bg.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/site-bg.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/smooth-bg.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/social-card.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/status-v1.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/status-v2.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/status-v3.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/timeline-code.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/timeline-edu.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/images/timeline-exp.png +0 -0
- package/staging_area/desktop/resume web/dist/assets/index-CBjHCN3v.css +1 -0
- package/staging_area/desktop/resume web/dist/assets/index-CRxB_GjQ.js +1 -0
- package/staging_area/desktop/resume web/dist/assets/js/script.js +184 -0
- package/staging_area/desktop/resume web/dist/assets/main-CgEgbzKB.css +1 -0
- package/staging_area/desktop/resume web/dist/assets/main-DoBlDLsb.js +366 -0
- package/staging_area/desktop/resume web/dist/assets/os-B_E4AY-V.css +1 -0
- package/staging_area/desktop/resume web/dist/assets/os-Bq4xD0id.js +46 -0
- package/staging_area/desktop/resume web/dist/assets/pdf-CxPl5vKc.js +211 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615435561_DSA_Handwritten_Notes_Zero_to_Hero.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615436069_linux-commands-handbook.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615436290_pamphlet__2_.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615451043_StudentLIST_SEM-3.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615458398_CLASS_COORDINATOR_W24-1-3-5-Revised.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615467705_LECP-IT-W24_3RD_SEMESTER_TENTATIVE_TIMETABLE.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615471212_MID-1time_table.jpg +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615493204_DS_unit1_by_PKChavda.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615493535_DS_unit2_OOP_by_PKC.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615493622_DS_unit3_by_pkc.pptx +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615519049_PRECTICAL-1.py +0 -92
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615519206_PRECTICAL-2.py +0 -17
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615519288_PRECTICAL-3.py +0 -36
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615519394_PRECTICAL-4.py +0 -4
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615519461_PRECTICAL-5.py +0 -7
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615519540_PRECTICAL-6.py +0 -6
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615542912_practical-1_-_9.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615543303_practical-14-18.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615543419_Data_Structure_with_Python___LAB_MANUAL_.pdf +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615547902_unit5_pk_chavda.pptx +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615562404_microproject-dswp.docx +0 -0
- package/staging_area/desktop/resume web/dist/assets/explorer/thispc/1771615598223_DM_GTU_Study_Material_e-Notes_Unit-3.pdf +0 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Admin-DzmvYKWV.js","assets/vendor-DTZZIXzC.js","assets/index-CRxB_GjQ.js","assets/ui-lsJM0os1.js","assets/index-CBjHCN3v.css","assets/firebase-B_lZQArn.js","assets/three-C2Wyq5d1.js","assets/pdf-CxPl5vKc.js","assets/Book-DCFz_w4F.js","assets/KaliLinux-B8gJf7kt.js","assets/Apk-CwiIAXsZ.js","assets/Cloud-CjMj0UM3.js","assets/Chat-BQTn5L_O.js","assets/AdminChat-Cipu9BDh.js","assets/AdminLogin-CSu4aTfQ.js","assets/WindowsFileExplorer-DxU86Ysz.js","assets/SecretNotes-oMDnic6h.js","assets/MobileViewSimulator-aeGEZ5cs.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{I as sp,a as $i,b as Fm,c as Qi,d as Ki,e as Yi,f as Ms,g as Vi,h as lp,i as cp,j as dp,k as Ji,l as pp,m as hp,n as up,o as mp,p as gp,q as fp,r as yp,s as Cc,t as Bm,u as Um,v as Mm,w as vp,x as Sp,y as Nm,z as Wm,A as Gm,B as zm,C as Om,D as Lm,E as Hm,F as xp,G as bp,H as Xm,J as Zm,K as qm,L as $m,M as Qm,N as Km,O as Ym,P as Jm,Q as Pp,R as eg,S as tg,T as rg,U as ag,V as og,W as ig,X as ng,Y as sg,Z as lg,_ as cg,$ as dg,a0 as Dp,a1 as pg,a2 as hg,a3 as Ap,a4 as kc,a5 as ug,a6 as mg,a7 as gg}from"./index-CRxB_GjQ.js";import{b as T,j as n,R as ca,A as ht,m as Y,u as Rc,e as Mn,a as fg,g as yg,f as vg}from"./vendor-DTZZIXzC.js";import{C as Sg,P as xg,a as bg,F as Pg,E as Dg,u as Ag,R as Nn,T as Wn,H as jp,c as jg,d as Eg,e as Tc,f as _g,_ as Gt,g as Cg}from"./three-C2Wyq5d1.js";import{G as Ke}from"./ui-lsJM0os1.js";import{i as Ep,g as _p,a as kg,G as Rg,r as Ft,o as da,b as Tg,s as Pi,c as Cp,L as Vg,_ as wg,C as Ig,d as Vc,e as Fg,F as Bg,f as nr,h as Ug,j as Mg,k as Ng,l as kp,p as Wg,u as Gg,m as zg,n as Og,q as er,t as Lg,v as Hg,S as Xg,w as Zg,x as Gn,y as ja,z as qg,A as wc,B as $g}from"./firebase-B_lZQArn.js";import{D as Qg,P as Kg,S as Yg,V as Ht,T as Ve,L as zn,a as Jg}from"./pdf-CxPl5vKc.js";class ef extends T.Component{state={hasError:!1,error:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){if(console.error("Uncaught error:",e,t),e.message.includes("Loading chunk")||e.message.includes("Importing a module script failed")){const r="chunk_reload_"+new Date().toLocaleDateString();localStorage.getItem(r)||(localStorage.setItem(r,"true"),window.location.reload())}}render(){return this.state.hasError?n.jsxs("div",{style:{padding:"20px",color:"#fff",background:"#000",height:"100vh",overflow:"auto",fontFamily:"monospace",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center"},children:[n.jsx("h1",{style:{color:"red",marginBottom:"20px"},children:"APPLICATION ERROR"}),n.jsx("p",{style:{color:"#ccc",marginBottom:"30px"},children:"System Encountered a Critical Failure."}),n.jsx("button",{onClick:()=>window.location.reload(),style:{padding:"10px 20px",background:"#00ff41",color:"#000",border:"none",fontWeight:"bold",cursor:"pointer",fontFamily:"monospace"},children:"REBOOT SYSTEM (RELOAD)"}),n.jsxs("div",{style:{marginTop:"40px",color:"#555",fontSize:"10px",maxWidth:"80%"},children:["ERROR DETAILS: ",this.state.error?.toString()]})]}):this.props.children}}var tf="1.3.17";function Rp(a,e,t){return Math.max(a,Math.min(e,t))}function rf(a,e,t){return(1-t)*a+t*e}function af(a,e,t,r){return rf(a,e,1-Math.exp(-t*r))}function of(a,e){return(a%e+e)%e}var nf=class{isRunning=!1;value=0;from=0;to=0;currentTime=0;lerp;duration;easing;onUpdate;advance(a){if(!this.isRunning)return;let e=!1;if(this.duration&&this.easing){this.currentTime+=a;const t=Rp(0,this.currentTime/this.duration,1);e=t>=1;const r=e?1:this.easing(t);this.value=this.from+(this.to-this.from)*r}else this.lerp?(this.value=af(this.value,this.to,this.lerp*60,a),Math.round(this.value)===this.to&&(this.value=this.to,e=!0)):(this.value=this.to,e=!0);e&&this.stop(),this.onUpdate?.(this.value,e)}stop(){this.isRunning=!1}fromTo(a,e,{lerp:t,duration:r,easing:o,onStart:i,onUpdate:s}){this.from=this.value=a,this.to=e,this.lerp=t,this.duration=r,this.easing=o,this.currentTime=0,this.isRunning=!0,i?.(),this.onUpdate=s}};function sf(a,e){let t;return function(...r){let o=this;clearTimeout(t),t=setTimeout(()=>{t=void 0,a.apply(o,r)},e)}}var lf=class{constructor(a,e,{autoResize:t=!0,debounce:r=250}={}){this.wrapper=a,this.content=e,t&&(this.debouncedResize=sf(this.resize,r),this.wrapper instanceof Window?window.addEventListener("resize",this.debouncedResize,!1):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}width=0;height=0;scrollHeight=0;scrollWidth=0;debouncedResize;wrapperResizeObserver;contentResizeObserver;destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),this.wrapper===window&&this.debouncedResize&&window.removeEventListener("resize",this.debouncedResize,!1)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper instanceof Window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper instanceof Window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}},Tp=class{events={};emit(a,...e){let t=this.events[a]||[];for(let r=0,o=t.length;r<o;r++)t[r]?.(...e)}on(a,e){return this.events[a]?.push(e)||(this.events[a]=[e]),()=>{this.events[a]=this.events[a]?.filter(t=>e!==t)}}off(a,e){this.events[a]=this.events[a]?.filter(t=>e!==t)}destroy(){this.events={}}},Ic=100/6,Sr={passive:!1},cf=class{constructor(a,e={wheelMultiplier:1,touchMultiplier:1}){this.element=a,this.options=e,window.addEventListener("resize",this.onWindowResize,!1),this.onWindowResize(),this.element.addEventListener("wheel",this.onWheel,Sr),this.element.addEventListener("touchstart",this.onTouchStart,Sr),this.element.addEventListener("touchmove",this.onTouchMove,Sr),this.element.addEventListener("touchend",this.onTouchEnd,Sr)}touchStart={x:0,y:0};lastDelta={x:0,y:0};window={width:0,height:0};emitter=new Tp;on(a,e){return this.emitter.on(a,e)}destroy(){this.emitter.destroy(),window.removeEventListener("resize",this.onWindowResize,!1),this.element.removeEventListener("wheel",this.onWheel,Sr),this.element.removeEventListener("touchstart",this.onTouchStart,Sr),this.element.removeEventListener("touchmove",this.onTouchMove,Sr),this.element.removeEventListener("touchend",this.onTouchEnd,Sr)}onTouchStart=a=>{const{clientX:e,clientY:t}=a.targetTouches?a.targetTouches[0]:a;this.touchStart.x=e,this.touchStart.y=t,this.lastDelta={x:0,y:0},this.emitter.emit("scroll",{deltaX:0,deltaY:0,event:a})};onTouchMove=a=>{const{clientX:e,clientY:t}=a.targetTouches?a.targetTouches[0]:a,r=-(e-this.touchStart.x)*this.options.touchMultiplier,o=-(t-this.touchStart.y)*this.options.touchMultiplier;this.touchStart.x=e,this.touchStart.y=t,this.lastDelta={x:r,y:o},this.emitter.emit("scroll",{deltaX:r,deltaY:o,event:a})};onTouchEnd=a=>{this.emitter.emit("scroll",{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:a})};onWheel=a=>{let{deltaX:e,deltaY:t,deltaMode:r}=a;const o=r===1?Ic:r===2?this.window.width:1,i=r===1?Ic:r===2?this.window.height:1;e*=o,t*=i,e*=this.options.wheelMultiplier,t*=this.options.wheelMultiplier,this.emitter.emit("scroll",{deltaX:e,deltaY:t,event:a})};onWindowResize=()=>{this.window={width:window.innerWidth,height:window.innerHeight}}},Fc=a=>Math.min(1,1.001-Math.pow(2,-10*a)),df=class{_isScrolling=!1;_isStopped=!1;_isLocked=!1;_preventNextNativeScrollEvent=!1;_resetVelocityTimeout=null;_rafId=null;isTouching;time=0;userData={};lastVelocity=0;velocity=0;direction=0;options;targetScroll;animatedScroll;animate=new nf;emitter=new Tp;dimensions;virtualScroll;constructor({wrapper:a=window,content:e=document.documentElement,eventsTarget:t=a,smoothWheel:r=!0,syncTouch:o=!1,syncTouchLerp:i=.075,touchInertiaExponent:s=1.7,duration:c,easing:d,lerp:p=.1,infinite:h=!1,orientation:m="vertical",gestureOrientation:f=m==="horizontal"?"both":"vertical",touchMultiplier:v=1,wheelMultiplier:P=1,autoResize:y=!0,prevent:A,virtualScroll:V,overscroll:I=!0,autoRaf:E=!1,anchors:w=!1,autoToggle:k=!1,allowNestedScroll:U=!1,__experimental__naiveDimensions:D=!1,naiveDimensions:S=D,stopInertiaOnNavigate:x=!1}={}){window.lenisVersion=tf,(!a||a===document.documentElement)&&(a=window),typeof c=="number"&&typeof d!="function"?d=Fc:typeof d=="function"&&typeof c!="number"&&(c=1),this.options={wrapper:a,content:e,eventsTarget:t,smoothWheel:r,syncTouch:o,syncTouchLerp:i,touchInertiaExponent:s,duration:c,easing:d,lerp:p,infinite:h,gestureOrientation:f,orientation:m,touchMultiplier:v,wheelMultiplier:P,autoResize:y,prevent:A,virtualScroll:V,overscroll:I,autoRaf:E,anchors:w,autoToggle:k,allowNestedScroll:U,naiveDimensions:S,stopInertiaOnNavigate:x},this.dimensions=new lf(a,e,{autoResize:y}),this.updateClassName(),this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener("scroll",this.onNativeScroll,!1),this.options.wrapper.addEventListener("scrollend",this.onScrollEnd,{capture:!0}),(this.options.anchors||this.options.stopInertiaOnNavigate)&&this.options.wrapper.addEventListener("click",this.onClick,!1),this.options.wrapper.addEventListener("pointerdown",this.onPointerDown,!1),this.virtualScroll=new cf(t,{touchMultiplier:v,wheelMultiplier:P}),this.virtualScroll.on("scroll",this.onVirtualScroll),this.options.autoToggle&&(this.checkOverflow(),this.rootElement.addEventListener("transitionend",this.onTransitionEnd,{passive:!0})),this.options.autoRaf&&(this._rafId=requestAnimationFrame(this.raf))}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onNativeScroll,!1),this.options.wrapper.removeEventListener("scrollend",this.onScrollEnd,{capture:!0}),this.options.wrapper.removeEventListener("pointerdown",this.onPointerDown,!1),(this.options.anchors||this.options.stopInertiaOnNavigate)&&this.options.wrapper.removeEventListener("click",this.onClick,!1),this.virtualScroll.destroy(),this.dimensions.destroy(),this.cleanUpClassName(),this._rafId&&cancelAnimationFrame(this._rafId)}on(a,e){return this.emitter.on(a,e)}off(a,e){return this.emitter.off(a,e)}onScrollEnd=a=>{a instanceof CustomEvent||(this.isScrolling==="smooth"||this.isScrolling===!1)&&a.stopPropagation()};dispatchScrollendEvent=()=>{this.options.wrapper.dispatchEvent(new CustomEvent("scrollend",{bubbles:this.options.wrapper===window,detail:{lenisScrollEnd:!0}}))};get overflow(){const a=this.isHorizontal?"overflow-x":"overflow-y";return getComputedStyle(this.rootElement)[a]}checkOverflow(){["hidden","clip"].includes(this.overflow)?this.internalStop():this.internalStart()}onTransitionEnd=a=>{a.propertyName.includes("overflow")&&this.checkOverflow()};setScroll(a){this.isHorizontal?this.options.wrapper.scrollTo({left:a,behavior:"instant"}):this.options.wrapper.scrollTo({top:a,behavior:"instant"})}onClick=a=>{const t=a.composedPath().filter(r=>r instanceof HTMLAnchorElement&&r.getAttribute("href"));if(this.options.anchors){const r=t.find(o=>o.getAttribute("href")?.includes("#"));if(r){const o=r.getAttribute("href");if(o){const i=typeof this.options.anchors=="object"&&this.options.anchors?this.options.anchors:void 0,s=`#${o.split("#")[1]}`;this.scrollTo(s,i)}}}this.options.stopInertiaOnNavigate&&t.find(o=>o.host===window.location.host)&&this.reset()};onPointerDown=a=>{a.button===1&&this.reset()};onVirtualScroll=a=>{if(typeof this.options.virtualScroll=="function"&&this.options.virtualScroll(a)===!1)return;const{deltaX:e,deltaY:t,event:r}=a;if(this.emitter.emit("virtual-scroll",{deltaX:e,deltaY:t,event:r}),r.ctrlKey||r.lenisStopPropagation)return;const o=r.type.includes("touch"),i=r.type.includes("wheel");this.isTouching=r.type==="touchstart"||r.type==="touchmove";const s=e===0&&t===0;if(this.options.syncTouch&&o&&r.type==="touchstart"&&s&&!this.isStopped&&!this.isLocked){this.reset();return}const d=this.options.gestureOrientation==="vertical"&&t===0||this.options.gestureOrientation==="horizontal"&&e===0;if(s||d)return;let p=r.composedPath();p=p.slice(0,p.indexOf(this.rootElement));const h=this.options.prevent;if(p.find(A=>A instanceof HTMLElement&&(typeof h=="function"&&h?.(A)||A.hasAttribute?.("data-lenis-prevent")||o&&A.hasAttribute?.("data-lenis-prevent-touch")||i&&A.hasAttribute?.("data-lenis-prevent-wheel")||this.options.allowNestedScroll&&this.checkNestedScroll(A,{deltaX:e,deltaY:t}))))return;if(this.isStopped||this.isLocked){r.cancelable&&r.preventDefault();return}if(!(this.options.syncTouch&&o||this.options.smoothWheel&&i)){this.isScrolling="native",this.animate.stop(),r.lenisStopPropagation=!0;return}let f=t;this.options.gestureOrientation==="both"?f=Math.abs(t)>Math.abs(e)?t:e:this.options.gestureOrientation==="horizontal"&&(f=e),(!this.options.overscroll||this.options.infinite||this.options.wrapper!==window&&this.limit>0&&(this.animatedScroll>0&&this.animatedScroll<this.limit||this.animatedScroll===0&&t>0||this.animatedScroll===this.limit&&t<0))&&(r.lenisStopPropagation=!0),r.cancelable&&r.preventDefault();const v=o&&this.options.syncTouch,y=o&&r.type==="touchend";y&&(f=Math.sign(this.velocity)*Math.pow(Math.abs(this.velocity),this.options.touchInertiaExponent)),this.scrollTo(this.targetScroll+f,{programmatic:!1,...v?{lerp:y?this.options.syncTouchLerp:1}:{lerp:this.options.lerp,duration:this.options.duration,easing:this.options.easing}})};resize(){this.dimensions.resize(),this.animatedScroll=this.targetScroll=this.actualScroll,this.emit()}emit(){this.emitter.emit("scroll",this)}onNativeScroll=()=>{if(this._resetVelocityTimeout!==null&&(clearTimeout(this._resetVelocityTimeout),this._resetVelocityTimeout=null),this._preventNextNativeScrollEvent){this._preventNextNativeScrollEvent=!1;return}if(this.isScrolling===!1||this.isScrolling==="native"){const a=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity,this.velocity=this.animatedScroll-a,this.direction=Math.sign(this.animatedScroll-a),this.isStopped||(this.isScrolling="native"),this.emit(),this.velocity!==0&&(this._resetVelocityTimeout=setTimeout(()=>{this.lastVelocity=this.velocity,this.velocity=0,this.isScrolling=!1,this.emit()},400))}};reset(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity=0,this.animate.stop()}start(){if(this.isStopped){if(this.options.autoToggle){this.rootElement.style.removeProperty("overflow");return}this.internalStart()}}internalStart(){this.isStopped&&(this.reset(),this.isStopped=!1,this.emit())}stop(){if(!this.isStopped){if(this.options.autoToggle){this.rootElement.style.setProperty("overflow","clip");return}this.internalStop()}}internalStop(){this.isStopped||(this.reset(),this.isStopped=!0,this.emit())}raf=a=>{const e=a-(this.time||a);this.time=a,this.animate.advance(e*.001),this.options.autoRaf&&(this._rafId=requestAnimationFrame(this.raf))};scrollTo(a,{offset:e=0,immediate:t=!1,lock:r=!1,programmatic:o=!0,lerp:i=o?this.options.lerp:void 0,duration:s=o?this.options.duration:void 0,easing:c=o?this.options.easing:void 0,onStart:d,onComplete:p,force:h=!1,userData:m}={}){if(!((this.isStopped||this.isLocked)&&!h)){if(typeof a=="string"&&["top","left","start","#"].includes(a))a=0;else if(typeof a=="string"&&["bottom","right","end"].includes(a))a=this.limit;else{let f;if(typeof a=="string"?(f=document.querySelector(a),f||(a==="#top"?a=0:console.warn("Lenis: Target not found",a))):a instanceof HTMLElement&&a?.nodeType&&(f=a),f){if(this.options.wrapper!==window){const P=this.rootElement.getBoundingClientRect();e-=this.isHorizontal?P.left:P.top}const v=f.getBoundingClientRect();a=(this.isHorizontal?v.left:v.top)+this.animatedScroll}}if(typeof a=="number"){if(a+=e,a=Math.round(a),this.options.infinite){if(o){this.targetScroll=this.animatedScroll=this.scroll;const f=a-this.animatedScroll;f>this.limit/2?a=a-this.limit:f<-this.limit/2&&(a=a+this.limit)}}else a=Rp(0,a,this.limit);if(a===this.targetScroll){d?.(this),p?.(this);return}if(this.userData=m??{},t){this.animatedScroll=this.targetScroll=a,this.setScroll(this.scroll),this.reset(),this.preventNextNativeScrollEvent(),this.emit(),p?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()});return}o||(this.targetScroll=a),typeof s=="number"&&typeof c!="function"?c=Fc:typeof c=="function"&&typeof s!="number"&&(s=1),this.animate.fromTo(this.animatedScroll,a,{duration:s,easing:c,lerp:i,onStart:()=>{r&&(this.isLocked=!0),this.isScrolling="smooth",d?.(this)},onUpdate:(f,v)=>{this.isScrolling="smooth",this.lastVelocity=this.velocity,this.velocity=f-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=f,this.setScroll(this.scroll),o&&(this.targetScroll=f),v||this.emit(),v&&(this.reset(),this.emit(),p?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()}),this.preventNextNativeScrollEvent())}})}}}preventNextNativeScrollEvent(){this._preventNextNativeScrollEvent=!0,requestAnimationFrame(()=>{this._preventNextNativeScrollEvent=!1})}checkNestedScroll(a,{deltaX:e,deltaY:t}){const r=Date.now(),o=a._lenis??={};let i,s,c,d,p,h,m,f;const v=this.options.gestureOrientation;if(r-(o.time??0)>2e3){o.time=Date.now();const k=window.getComputedStyle(a);o.computedStyle=k;const U=k.overflowX,D=k.overflowY;if(i=["auto","overlay","scroll"].includes(U),s=["auto","overlay","scroll"].includes(D),o.hasOverflowX=i,o.hasOverflowY=s,!i&&!s||v==="vertical"&&!s||v==="horizontal"&&!i)return!1;p=a.scrollWidth,h=a.scrollHeight,m=a.clientWidth,f=a.clientHeight,c=p>m,d=h>f,o.isScrollableX=c,o.isScrollableY=d,o.scrollWidth=p,o.scrollHeight=h,o.clientWidth=m,o.clientHeight=f}else c=o.isScrollableX,d=o.isScrollableY,i=o.hasOverflowX,s=o.hasOverflowY,p=o.scrollWidth,h=o.scrollHeight,m=o.clientWidth,f=o.clientHeight;if(!i&&!s||!c&&!d||v==="vertical"&&(!s||!d)||v==="horizontal"&&(!i||!c))return!1;let P;if(v==="horizontal")P="x";else if(v==="vertical")P="y";else{const k=e!==0,U=t!==0;k&&i&&c&&(P="x"),U&&s&&d&&(P="y")}if(!P)return!1;let y,A,V,I,E;if(P==="x")y=a.scrollLeft,A=p-m,V=e,I=i,E=c;else if(P==="y")y=a.scrollTop,A=h-f,V=t,I=s,E=d;else return!1;return(V>0?y<A:y>0)&&I&&E}get rootElement(){return this.options.wrapper===window?document.documentElement:this.options.wrapper}get limit(){return this.options.naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?"x":"y"]}get isHorizontal(){return this.options.orientation==="horizontal"}get actualScroll(){const a=this.options.wrapper;return this.isHorizontal?a.scrollX??a.scrollLeft:a.scrollY??a.scrollTop}get scroll(){return this.options.infinite?of(this.animatedScroll,this.limit):this.animatedScroll}get progress(){return this.limit===0?1:this.scroll/this.limit}get isScrolling(){return this._isScrolling}set isScrolling(a){this._isScrolling!==a&&(this._isScrolling=a,this.updateClassName())}get isStopped(){return this._isStopped}set isStopped(a){this._isStopped!==a&&(this._isStopped=a,this.updateClassName())}get isLocked(){return this._isLocked}set isLocked(a){this._isLocked!==a&&(this._isLocked=a,this.updateClassName())}get isSmooth(){return this.isScrolling==="smooth"}get className(){let a="lenis";return this.options.autoToggle&&(a+=" lenis-autoToggle"),this.isStopped&&(a+=" lenis-stopped"),this.isLocked&&(a+=" lenis-locked"),this.isScrolling&&(a+=" lenis-scrolling"),this.isScrolling==="smooth"&&(a+=" lenis-smooth"),a}updateClassName(){this.cleanUpClassName(),this.rootElement.className=`${this.rootElement.className} ${this.className}`.trim()}cleanUpClassName(){this.rootElement.className=this.rootElement.className.replace(/lenis(-\w+)?/g,"").trim()}};function pf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12.51 13.214c.046-.8.438-1.506 1.03-2.006a3.424 3.424 0 0 1 2.212-.79c.85 0 1.631.3 2.211.79.592.5.983 1.206 1.028 2.005.045.823-.285 1.586-.865 2.153a3.389 3.389 0 0 1-2.374.938 3.393 3.393 0 0 1-2.376-.938c-.58-.567-.91-1.33-.865-2.152M7.35 14.831c.006.314.106.922.256 1.398a7.372 7.372 0 0 0 1.593 2.757 8.227 8.227 0 0 0 2.787 2.001 8.947 8.947 0 0 0 3.66.76 8.964 8.964 0 0 0 3.657-.772 8.285 8.285 0 0 0 2.785-2.01 7.428 7.428 0 0 0 1.592-2.762 6.964 6.964 0 0 0 .25-3.074 7.123 7.123 0 0 0-1.016-2.779 7.764 7.764 0 0 0-1.852-2.043h.002L13.566 2.55l-.02-.015c-.492-.378-1.319-.376-1.86.002-.547.382-.609 1.015-.123 1.415l-.001.001 3.126 2.543-9.53.01h-.013c-.788.001-1.545.518-1.695 1.172-.154.665.38 1.217 1.2 1.22V8.9l4.83-.01-8.62 6.617-.034.025c-.813.622-1.075 1.658-.563 2.313.52.667 1.625.668 2.447.004L7.414 14s-.069.52-.063.831zm12.09 1.741c-.97.988-2.326 1.548-3.795 1.55-1.47.004-2.827-.552-3.797-1.538a4.51 4.51 0 0 1-1.036-1.622 4.282 4.282 0 0 1 .282-3.519 4.702 4.702 0 0 1 1.153-1.371c.942-.768 2.141-1.183 3.396-1.185 1.256-.002 2.455.41 3.398 1.175.48.391.87.854 1.152 1.367a4.28 4.28 0 0 1 .522 1.706 4.236 4.236 0 0 1-.239 1.811 4.54 4.54 0 0 1-1.035 1.626"},child:[]}]})(a)}function hf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M18.144 13.067v-2.134L16.55 12zm1.276 1.194a.628.628 0 01-.006.083l-.005.028-.011.053-.01.031c-.005.016-.01.031-.017.047l-.014.03a.78.78 0 01-.021.043l-.019.03a.57.57 0 01-.08.1l-.026.025a.602.602 0 01-.036.03l-.029.022-.01.008-6.782 4.522a.637.637 0 01-.708 0L4.864 14.79l-.01-.008a.599.599 0 01-.065-.052l-.026-.025-.032-.034-.021-.028a.588.588 0 01-.067-.11l-.014-.031a.644.644 0 01-.017-.047l-.01-.03c-.004-.018-.008-.036-.01-.054l-.006-.028a.628.628 0 01-.006-.083V9.739c0-.028.002-.055.006-.083l.005-.027.011-.054.01-.03a.574.574 0 01.12-.217l.031-.034.026-.025a.62.62 0 01.065-.052l.01-.008 6.782-4.521a.638.638 0 01.708 0l6.782 4.521.01.008.03.022.035.03c.01.008.017.016.026.025a.545.545 0 01.08.1l.019.03a.633.633 0 01.021.043l.014.03c.007.016.012.032.017.047l.01.031c.004.018.008.036.01.054l.006.027a.619.619 0 01.006.083zM12 0C5.373 0 0 5.372 0 12 0 18.627 5.373 24 12 24c6.628 0 12-5.372 12-12 0-6.627-5.372-12-12-12m0 10.492L9.745 12 12 13.51 14.255 12zm.638 4.124v2.975l4.996-3.33-2.232-1.493zm-6.272-.356l4.996 3.33v-2.974l-2.764-1.849zm11.268-4.52l-4.996-3.33v2.974l2.764 1.85zm-6.272-.356V6.41L6.366 9.74l2.232 1.493zm-5.506 1.549v2.134L7.45 12Z"},child:[]}]})(a)}function uf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M22.394 6c-.167-.29-.398-.543-.652-.69L12.926.22c-.509-.294-1.34-.294-1.848 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.69l8.816 5.09c.508.293 1.34.293 1.848 0l8.816-5.09c.254-.147.485-.4.652-.69.167-.29.27-.616.27-.91V6.91c.003-.294-.1-.62-.268-.91zM12 19.11c-3.92 0-7.109-3.19-7.109-7.11 0-3.92 3.19-7.11 7.11-7.11a7.133 7.133 0 016.156 3.553l-3.076 1.78a3.567 3.567 0 00-3.08-1.78A3.56 3.56 0 008.444 12 3.56 3.56 0 0012 15.555a3.57 3.57 0 003.08-1.778l3.078 1.78A7.135 7.135 0 0112 19.11zm7.11-6.715h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79zm2.962 0h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79z"},child:[]}]})(a)}function mf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M1.5 0h21l-1.91 21.563L11.977 24l-8.565-2.438L1.5 0zm17.09 4.413L5.41 4.41l.213 2.622 10.125.002-.255 2.716h-6.64l.24 2.573h6.182l-.366 3.523-2.91.804-2.956-.81-.188-2.11h-2.61l.29 3.855L12 19.288l5.373-1.53L18.59 4.414z"},child:[]}]})(a)}function gf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M19.455 8.369c-.538-.748-1.778-2.285-3.681-4.569-.826-.991-1.535-1.832-1.884-2.245a146 146 0 0 0-.488-.576l-.207-.245-.113-.133-.022-.032-.01-.005L12.57 0l-.609.488c-1.555 1.246-2.828 2.851-3.681 4.64-.523 1.064-.864 2.105-1.043 3.176-.047.241-.088.489-.121.738-.209-.017-.421-.028-.632-.033-.018-.001-.035-.002-.059-.003a7.46 7.46 0 0 0-2.28.274l-.317.089-.163.286c-.765 1.342-1.198 2.869-1.252 4.416-.07 2.01.477 3.954 1.583 5.625 1.082 1.633 2.61 2.882 4.42 3.611l.236.095.071.025.003-.001a9.59 9.59 0 0 0 2.941.568q.171.006.342.006c1.273 0 2.513-.249 3.69-.742l.008.004.313-.145a9.63 9.63 0 0 0 3.927-3.335c1.01-1.49 1.577-3.234 1.641-5.042.075-2.161-.643-4.304-2.133-6.371m-7.083 6.695c.328 1.244.264 2.44-.191 3.558-1.135-1.12-1.967-2.352-2.475-3.665-.543-1.404-.87-2.74-.974-3.975.48.157.922.366 1.315.622 1.132.737 1.914 1.902 2.325 3.461zm.207 6.022c.482.368.99.712 1.513 1.028-.771.21-1.565.302-2.369.273a8 8 0 0 1-.373-.022c.458-.394.869-.823 1.228-1.279zm1.347-6.431c-.516-1.957-1.527-3.437-3.002-4.398-.647-.421-1.385-.741-2.194-.95.011-.134.026-.268.043-.4.014-.113.03-.216.046-.313.133-.689.332-1.37.589-2.025.099-.25.206-.499.321-.74l.004-.008c.177-.358.376-.719.61-1.105l.092-.152-.003-.001c.544-.851 1.197-1.627 1.942-2.311l.288.341c.672.796 1.304 1.548 1.878 2.237 1.291 1.549 2.966 3.583 3.612 4.48 1.277 1.771 1.893 3.579 1.83 5.375-.049 1.395-.461 2.755-1.195 3.933-.694 1.116-1.661 2.05-2.8 2.708-.636-.318-1.559-.839-2.539-1.599.79-1.575.952-3.28.479-5.072zm-2.575 5.397c-.725.939-1.587 1.55-2.09 1.856-.081-.029-.163-.06-.243-.093l-.065-.026c-1.49-.616-2.747-1.656-3.635-3.01-.907-1.384-1.356-2.993-1.298-4.653.041-1.19.338-2.327.882-3.379.316-.07.638-.114.96-.131l.084-.002c.162-.003.324-.003.478 0 .227.011.454.035.677.07.073 1.513.445 3.145 1.105 4.852.637 1.644 1.694 3.162 3.144 4.515z"},child:[]}]})(a)}function en(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M0 0v24h24V0zm9.95 8.002h1.805c.061 0 .111.05.111.111v7.767c0 .061-.05.111-.11.111H9.95c-.061 0-.111-.05-.111-.11v-2.87H7.894v2.87c0 .06-.05.11-.11.11H5.976a.11.11 0 01-.11-.11V8.112c0-.06.05-.11.11-.11h1.806c.061 0 .11.05.11.11v2.869H9.84v-2.87c0-.06.05-.11.11-.11zm2.999 0h5.778c.061 0 .111.05.111.11v7.767a.11.11 0 01-.11.112h-5.78a.11.11 0 01-.11-.11V8.111c0-.06.05-.11.11-.11z"},child:[]}]})(a)}function ff(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z"},child:[]}]})(a)}function yf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M0 0h24v24H0V0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873-.736-.345-1.554-.585-1.797-1.14-.091-.33-.105-.51-.046-.705.15-.646.915-.84 1.515-.66.39.12.75.42.976.9 1.034-.676 1.034-.676 1.755-1.125-.27-.42-.404-.601-.586-.78-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005-1.14 1.291-.811 3.541.569 4.471 1.365 1.02 3.361 1.244 3.616 2.205.24 1.17-.87 1.545-1.966 1.41-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109 1.74 1.756 6.09 1.666 6.871-1.004.029-.09.24-.705.074-1.65l.046.067zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805 0 1.232.063 2.363-.138 2.711-.33.689-1.18.601-1.566.48-.396-.196-.597-.466-.83-.855-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517.855.51 2.004.675 3.207.405.783-.226 1.458-.691 1.811-1.411.51-.93.402-2.07.397-3.346.012-2.054 0-4.109 0-6.179l.004-.056z"},child:[]}]})(a)}function vf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12.778 5.943s-1.97-.13-5.327.92c-3.42 1.07-5.36 2.587-5.36 2.587s5.098-2.847 10.852-3.008zm7.351 3.095l.257-.017s-1.468-1.78-4.278-2.648c1.58.642 2.954 1.493 4.021 2.665zm.42.74c.039-.068.166.217.263.337.004.024.01.039-.045.027-.005-.025-.013-.032-.013-.032s-.135-.08-.177-.137c-.041-.057-.049-.157-.028-.195zm3.448 8.479s.312-3.578-5.31-4.403a18.277 18.277 0 0 0-2.524-.187c-4.506.06-4.67-5.197-1.275-5.462 1.407-.116 3.087.643 4.73 1.408-.007.204.002.385.136.552.134.168.648.35.813.445.164.094.691.43 1.014.85.07-.131.654-.512.654-.512s-.14.003-.465-.119c-.326-.122-.713-.49-.722-.511-.01-.022-.015-.055.06-.07.059-.049-.072-.207-.13-.265-.058-.058-.445-.716-.454-.73-.009-.016-.012-.031-.04-.05-.085-.027-.46.04-.46.04s-.575-.283-.774-.893c.003.107-.099.224 0 .469-.3-.127-.558-.344-.762-.88-.12.305 0 .499 0 .499s-.707-.198-.82-.85c-.124.293 0 .469 0 .469s-1.153-.602-3.069-.61c-1.283-.118-1.55-2.374-1.43-2.754 0 0-1.85-.975-5.493-1.406-3.642-.43-6.628-.065-6.628-.065s6.45-.31 11.617 1.783c.176.785.704 2.094.989 2.723-.815.563-1.733 1.092-1.876 2.97-.143 1.878 1.472 3.53 3.474 3.58 1.9.102 3.214.116 4.806.942 1.52.84 2.766 3.4 2.89 5.703.132-1.709-.509-5.383-3.5-6.498 4.181.732 4.549 3.832 4.549 3.832zM12.68 5.663l-.15-.485s-2.484-.441-5.822-.204C3.37 5.211 0 6.38 0 6.38s6.896-1.735 12.68-.717Z"},child:[]}]})(a)}function Sf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z"},child:[]}]})(a)}function xf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z"},child:[]}]})(a)}function bf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"},child:[]}]})(a)}function Pf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z"},child:[]}]})(a)}function Df(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z"},child:[]}]})(a)}function Af(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M17.61.455a3.41 3.41 0 0 0-3.41 3.41 3.41 3.41 0 0 0 3.41 3.41 3.41 3.41 0 0 0 3.41-3.41 3.41 3.41 0 0 0-3.41-3.41zM12.92.8C8.923.777 5.137 2.941 3.148 6.451a4.5 4.5 0 0 1 .26-.007 4.92 4.92 0 0 1 2.585.737A8.316 8.316 0 0 1 12.688 3.6 4.944 4.944 0 0 1 13.723.834 11.008 11.008 0 0 0 12.92.8zm9.226 4.994a4.915 4.915 0 0 1-1.918 2.246 8.36 8.36 0 0 1-.273 8.303 4.89 4.89 0 0 1 1.632 2.54 11.156 11.156 0 0 0 .559-13.089zM3.41 7.932A3.41 3.41 0 0 0 0 11.342a3.41 3.41 0 0 0 3.41 3.409 3.41 3.41 0 0 0 3.41-3.41 3.41 3.41 0 0 0-3.41-3.41zm2.027 7.866a4.908 4.908 0 0 1-2.915.358 11.1 11.1 0 0 0 7.991 6.698 11.234 11.234 0 0 0 2.422.249 4.879 4.879 0 0 1-.999-2.85 8.484 8.484 0 0 1-.836-.136 8.304 8.304 0 0 1-5.663-4.32zm11.405.928a3.41 3.41 0 0 0-3.41 3.41 3.41 3.41 0 0 0 3.41 3.41 3.41 3.41 0 0 0 3.41-3.41 3.41 3.41 0 0 0-3.41-3.41z"},child:[]}]})(a)}function jf(a){return Ke({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"m12.9288 4.2939 3.7997 2.1929c.1366.077.1415.2905 0 .3675l-4.515 2.6076a.4192.4192 0 0 1-.4246 0L7.274 6.8543c-.139-.0745-.1415-.293 0-.3675l3.7972-2.193V0L1.3758 5.5977V16.793l3.7177-2.1456v-4.3858c-.0025-.1565.1813-.2682.318-.1838l4.5148 2.6076a.4252.4252 0 0 1 .2136.3676v5.2127c.0025.1565-.1813.2682-.3179.1838l-3.7996-2.1929-3.7178 2.1457L12 24l9.6954-5.5977-3.7178-2.1457-3.7996 2.1929c-.1341.082-.3229-.0248-.3179-.1838V13.053c0-.1565.087-.2956.2136-.3676l4.5149-2.6076c.134-.082.3228.0224.3179.1838v4.3858l3.7177 2.1456V5.5977L12.9288 0Z"},child:[]}]})(a)}const tn=()=>{const a=T.useRef(null);return{containerRef:a,handleMouseMove:t=>{if(!a.current)return;const r=a.current.getBoundingClientRect(),o=t.clientX-r.left,i=t.clientY-r.top;a.current.style.setProperty("--mouse-x",`${o}px`),a.current.style.setProperty("--mouse-y",`${i}px`)}}};function or(a){if(a===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function Vp(a,e){a.prototype=Object.create(e.prototype),a.prototype.constructor=a,a.__proto__=e}var Et={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},Ma={duration:.5,overwrite:!1,delay:0},Ns,$e,Pe,wt=1e8,fe=1/wt,is=Math.PI*2,Ef=is/4,_f=0,wp=Math.sqrt,Cf=Math.cos,kf=Math.sin,Xe=function(e){return typeof e=="string"},Re=function(e){return typeof e=="function"},sr=function(e){return typeof e=="number"},Ws=function(e){return typeof e>"u"},tr=function(e){return typeof e=="object"},ut=function(e){return e!==!1},Gs=function(){return typeof window<"u"},fi=function(e){return Re(e)||Xe(e)},Ip=typeof ArrayBuffer=="function"&&ArrayBuffer.isView||function(){},rt=Array.isArray,Rf=/random\([^)]+\)/g,Tf=/,\s*/g,Bc=/(?:-?\.?\d|\.)+/gi,Fp=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,Va=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,On=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,Bp=/[+-]=-?[.\d]+/,Vf=/[^,'"\[\]\s]+/gi,wf=/^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,je,Xt,ns,zs,_t={},wi={},Up,Mp=function(e){return(wi=Na(e,_t))&&yt},Os=function(e,t){return console.warn("Invalid property",e,"set to",t,"Missing plugin? gsap.registerPlugin()")},Io=function(e,t){return!t&&console.warn(e)},Np=function(e,t){return e&&(_t[e]=t)&&wi&&(wi[e]=t)||_t},Fo=function(){return 0},If={suppressEvents:!0,isStart:!0,kill:!1},Di={suppressEvents:!0,kill:!1},Ff={suppressEvents:!0},Ls={},Ar=[],ss={},Wp,bt={},Ln={},Uc=30,Ai=[],Hs="",Xs=function(e){var t=e[0],r,o;if(tr(t)||Re(t)||(e=[e]),!(r=(t._gsap||{}).harness)){for(o=Ai.length;o--&&!Ai[o].targetTest(t););r=Ai[o]}for(o=e.length;o--;)e[o]&&(e[o]._gsap||(e[o]._gsap=new dh(e[o],r)))||e.splice(o,1);return e},aa=function(e){return e._gsap||Xs(It(e))[0]._gsap},Gp=function(e,t,r){return(r=e[t])&&Re(r)?e[t]():Ws(r)&&e.getAttribute&&e.getAttribute(t)||r},mt=function(e,t){return(e=e.split(",")).forEach(t)||e},we=function(e){return Math.round(e*1e5)/1e5||0},Ae=function(e){return Math.round(e*1e7)/1e7||0},Ia=function(e,t){var r=t.charAt(0),o=parseFloat(t.substr(2));return e=parseFloat(e),r==="+"?e+o:r==="-"?e-o:r==="*"?e*o:e/o},Bf=function(e,t){for(var r=t.length,o=0;e.indexOf(t[o])<0&&++o<r;);return o<r},Ii=function(){var e=Ar.length,t=Ar.slice(0),r,o;for(ss={},Ar.length=0,r=0;r<e;r++)o=t[r],o&&o._lazy&&(o.render(o._lazy[0],o._lazy[1],!0)._lazy=0)},Zs=function(e){return!!(e._initted||e._startAt||e.add)},zp=function(e,t,r,o){Ar.length&&!$e&&Ii(),e.render(t,r,!!($e&&t<0&&Zs(e))),Ar.length&&!$e&&Ii()},Op=function(e){var t=parseFloat(e);return(t||t===0)&&(e+"").match(Vf).length<2?t:Xe(e)?e.trim():e},Lp=function(e){return e},Ct=function(e,t){for(var r in t)r in e||(e[r]=t[r]);return e},Uf=function(e){return function(t,r){for(var o in r)o in t||o==="duration"&&e||o==="ease"||(t[o]=r[o])}},Na=function(e,t){for(var r in t)e[r]=t[r];return e},Mc=function a(e,t){for(var r in t)r!=="__proto__"&&r!=="constructor"&&r!=="prototype"&&(e[r]=tr(t[r])?a(e[r]||(e[r]={}),t[r]):t[r]);return e},Fi=function(e,t){var r={},o;for(o in e)o in t||(r[o]=e[o]);return r},_o=function(e){var t=e.parent||je,r=e.keyframes?Uf(rt(e.keyframes)):Ct;if(ut(e.inherit))for(;t;)r(e,t.vars.defaults),t=t.parent||t._dp;return e},Mf=function(e,t){for(var r=e.length,o=r===t.length;o&&r--&&e[r]===t[r];);return r<0},Hp=function(e,t,r,o,i){var s=e[o],c;if(i)for(c=t[i];s&&s[i]>c;)s=s._prev;return s?(t._next=s._next,s._next=t):(t._next=e[r],e[r]=t),t._next?t._next._prev=t:e[o]=t,t._prev=s,t.parent=t._dp=e,t},rn=function(e,t,r,o){r===void 0&&(r="_first"),o===void 0&&(o="_last");var i=t._prev,s=t._next;i?i._next=s:e[r]===t&&(e[r]=s),s?s._prev=i:e[o]===t&&(e[o]=i),t._next=t._prev=t.parent=null},kr=function(e,t){e.parent&&(!t||e.parent.autoRemoveChildren)&&e.parent.remove&&e.parent.remove(e),e._act=0},oa=function(e,t){if(e&&(!t||t._end>e._dur||t._start<0))for(var r=e;r;)r._dirty=1,r=r.parent;return e},Nf=function(e){for(var t=e.parent;t&&t.parent;)t._dirty=1,t.totalDuration(),t=t.parent;return e},ls=function(e,t,r,o){return e._startAt&&($e?e._startAt.revert(Di):e.vars.immediateRender&&!e.vars.autoRevert||e._startAt.render(t,!0,o))},Wf=function a(e){return!e||e._ts&&a(e.parent)},Nc=function(e){return e._repeat?Wa(e._tTime,e=e.duration()+e._rDelay)*e:0},Wa=function(e,t){var r=Math.floor(e=Ae(e/t));return e&&r===e?r-1:r},Bi=function(e,t){return(e-t._start)*t._ts+(t._ts>=0?0:t._dirty?t.totalDuration():t._tDur)},an=function(e){return e._end=Ae(e._start+(e._tDur/Math.abs(e._ts||e._rts||fe)||0))},on=function(e,t){var r=e._dp;return r&&r.smoothChildTiming&&e._ts&&(e._start=Ae(r._time-(e._ts>0?t/e._ts:((e._dirty?e.totalDuration():e._tDur)-t)/-e._ts)),an(e),r._dirty||oa(r,e)),e},Xp=function(e,t){var r;if((t._time||!t._dur&&t._initted||t._start<e._time&&(t._dur||!t.add))&&(r=Bi(e.rawTime(),t),(!t._dur||Ko(0,t.totalDuration(),r)-t._tTime>fe)&&t.render(r,!0)),oa(e,t)._dp&&e._initted&&e._time>=e._dur&&e._ts){if(e._dur<e.duration())for(r=e;r._dp;)r.rawTime()>=0&&r.totalTime(r._tTime),r=r._dp;e._zTime=-fe}},qt=function(e,t,r,o){return t.parent&&kr(t),t._start=Ae((sr(r)?r:r||e!==je?Tt(e,r,t):e._time)+t._delay),t._end=Ae(t._start+(t.totalDuration()/Math.abs(t.timeScale())||0)),Hp(e,t,"_first","_last",e._sort?"_start":0),cs(t)||(e._recent=t),o||Xp(e,t),e._ts<0&&on(e,e._tTime),e},Zp=function(e,t){return(_t.ScrollTrigger||Os("scrollTrigger",t))&&_t.ScrollTrigger.create(t,e)},qp=function(e,t,r,o,i){if($s(e,t,i),!e._initted)return 1;if(!r&&e._pt&&!$e&&(e._dur&&e.vars.lazy!==!1||!e._dur&&e.vars.lazy)&&Wp!==Pt.frame)return Ar.push(e),e._lazy=[i,o],1},Gf=function a(e){var t=e.parent;return t&&t._ts&&t._initted&&!t._lock&&(t.rawTime()<0||a(t))},cs=function(e){var t=e.data;return t==="isFromStart"||t==="isStart"},zf=function(e,t,r,o){var i=e.ratio,s=t<0||!t&&(!e._start&&Gf(e)&&!(!e._initted&&cs(e))||(e._ts<0||e._dp._ts<0)&&!cs(e))?0:1,c=e._rDelay,d=0,p,h,m;if(c&&e._repeat&&(d=Ko(0,e._tDur,t),h=Wa(d,c),e._yoyo&&h&1&&(s=1-s),h!==Wa(e._tTime,c)&&(i=1-s,e.vars.repeatRefresh&&e._initted&&e.invalidate())),s!==i||$e||o||e._zTime===fe||!t&&e._zTime){if(!e._initted&&qp(e,t,o,r,d))return;for(m=e._zTime,e._zTime=t||(r?fe:0),r||(r=t&&!m),e.ratio=s,e._from&&(s=1-s),e._time=0,e._tTime=d,p=e._pt;p;)p.r(s,p.d),p=p._next;t<0&&ls(e,t,r,!0),e._onUpdate&&!r&&Dt(e,"onUpdate"),d&&e._repeat&&!r&&e.parent&&Dt(e,"onRepeat"),(t>=e._tDur||t<0)&&e.ratio===s&&(s&&kr(e,1),!r&&!$e&&(Dt(e,s?"onComplete":"onReverseComplete",!0),e._prom&&e._prom()))}else e._zTime||(e._zTime=t)},Of=function(e,t,r){var o;if(r>t)for(o=e._first;o&&o._start<=r;){if(o.data==="isPause"&&o._start>t)return o;o=o._next}else for(o=e._last;o&&o._start>=r;){if(o.data==="isPause"&&o._start<t)return o;o=o._prev}},Ga=function(e,t,r,o){var i=e._repeat,s=Ae(t)||0,c=e._tTime/e._tDur;return c&&!o&&(e._time*=s/e._dur),e._dur=s,e._tDur=i?i<0?1e10:Ae(s*(i+1)+e._rDelay*i):s,c>0&&!o&&on(e,e._tTime=e._tDur*c),e.parent&&an(e),r||oa(e.parent,e),e},Wc=function(e){return e instanceof lt?oa(e):Ga(e,e._dur)},Lf={_start:0,endTime:Fo,totalDuration:Fo},Tt=function a(e,t,r){var o=e.labels,i=e._recent||Lf,s=e.duration()>=wt?i.endTime(!1):e._dur,c,d,p;return Xe(t)&&(isNaN(t)||t in o)?(d=t.charAt(0),p=t.substr(-1)==="%",c=t.indexOf("="),d==="<"||d===">"?(c>=0&&(t=t.replace(/=/,"")),(d==="<"?i._start:i.endTime(i._repeat>=0))+(parseFloat(t.substr(1))||0)*(p?(c<0?i:r).totalDuration()/100:1)):c<0?(t in o||(o[t]=s),o[t]):(d=parseFloat(t.charAt(c-1)+t.substr(c+1)),p&&r&&(d=d/100*(rt(r)?r[0]:r).totalDuration()),c>1?a(e,t.substr(0,c-1),r)+d:s+d)):t==null?s:+t},Co=function(e,t,r){var o=sr(t[1]),i=(o?2:1)+(e<2?0:1),s=t[i],c,d;if(o&&(s.duration=t[1]),s.parent=r,e){for(c=s,d=r;d&&!("immediateRender"in c);)c=d.vars.defaults||{},d=ut(d.vars.inherit)&&d.parent;s.immediateRender=ut(c.immediateRender),e<2?s.runBackwards=1:s.startAt=t[i-1]}return new Ue(t[0],s,t[i+1])},Nr=function(e,t){return e||e===0?t(e):t},Ko=function(e,t,r){return r<e?e:r>t?t:r},tt=function(e,t){return!Xe(e)||!(t=wf.exec(e))?"":t[1]},Hf=function(e,t,r){return Nr(r,function(o){return Ko(e,t,o)})},ds=[].slice,$p=function(e,t){return e&&tr(e)&&"length"in e&&(!t&&!e.length||e.length-1 in e&&tr(e[0]))&&!e.nodeType&&e!==Xt},Xf=function(e,t,r){return r===void 0&&(r=[]),e.forEach(function(o){var i;return Xe(o)&&!t||$p(o,1)?(i=r).push.apply(i,It(o)):r.push(o)})||r},It=function(e,t,r){return Pe&&!t&&Pe.selector?Pe.selector(e):Xe(e)&&!r&&(ns||!za())?ds.call((t||zs).querySelectorAll(e),0):rt(e)?Xf(e,r):$p(e)?ds.call(e,0):e?[e]:[]},ps=function(e){return e=It(e)[0]||Io("Invalid scope")||{},function(t){var r=e.current||e.nativeElement||e;return It(t,r.querySelectorAll?r:r===e?Io("Invalid scope")||zs.createElement("div"):e)}},Qp=function(e){return e.sort(function(){return .5-Math.random()})},Kp=function(e){if(Re(e))return e;var t=tr(e)?e:{each:e},r=ia(t.ease),o=t.from||0,i=parseFloat(t.base)||0,s={},c=o>0&&o<1,d=isNaN(o)||c,p=t.axis,h=o,m=o;return Xe(o)?h=m={center:.5,edges:.5,end:1}[o]||0:!c&&d&&(h=o[0],m=o[1]),function(f,v,P){var y=(P||t).length,A=s[y],V,I,E,w,k,U,D,S,x;if(!A){if(x=t.grid==="auto"?0:(t.grid||[1,wt])[1],!x){for(D=-wt;D<(D=P[x++].getBoundingClientRect().left)&&x<y;);x<y&&x--}for(A=s[y]=[],V=d?Math.min(x,y)*h-.5:o%x,I=x===wt?0:d?y*m/x-.5:o/x|0,D=0,S=wt,U=0;U<y;U++)E=U%x-V,w=I-(U/x|0),A[U]=k=p?Math.abs(p==="y"?w:E):wp(E*E+w*w),k>D&&(D=k),k<S&&(S=k);o==="random"&&Qp(A),A.max=D-S,A.min=S,A.v=y=(parseFloat(t.amount)||parseFloat(t.each)*(x>y?y-1:p?p==="y"?y/x:x:Math.max(x,y/x))||0)*(o==="edges"?-1:1),A.b=y<0?i-y:i,A.u=tt(t.amount||t.each)||0,r=r&&y<0?sh(r):r}return y=(A[f]-A.min)/A.max||0,Ae(A.b+(r?r(y):y)*A.v)+A.u}},hs=function(e){var t=Math.pow(10,((e+"").split(".")[1]||"").length);return function(r){var o=Ae(Math.round(parseFloat(r)/e)*e*t);return(o-o%1)/t+(sr(r)?0:tt(r))}},Yp=function(e,t){var r=rt(e),o,i;return!r&&tr(e)&&(o=r=e.radius||wt,e.values?(e=It(e.values),(i=!sr(e[0]))&&(o*=o)):e=hs(e.increment)),Nr(t,r?Re(e)?function(s){return i=e(s),Math.abs(i-s)<=o?i:s}:function(s){for(var c=parseFloat(i?s.x:s),d=parseFloat(i?s.y:0),p=wt,h=0,m=e.length,f,v;m--;)i?(f=e[m].x-c,v=e[m].y-d,f=f*f+v*v):f=Math.abs(e[m]-c),f<p&&(p=f,h=m);return h=!o||p<=o?e[h]:s,i||h===s||sr(s)?h:h+tt(s)}:hs(e))},Jp=function(e,t,r,o){return Nr(rt(e)?!t:r===!0?!!(r=0):!o,function(){return rt(e)?e[~~(Math.random()*e.length)]:(r=r||1e-5)&&(o=r<1?Math.pow(10,(r+"").length-2):1)&&Math.floor(Math.round((e-r/2+Math.random()*(t-e+r*.99))/r)*r*o)/o})},Zf=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(o){return t.reduce(function(i,s){return s(i)},o)}},qf=function(e,t){return function(r){return e(parseFloat(r))+(t||tt(r))}},$f=function(e,t,r){return th(e,t,0,1,r)},eh=function(e,t,r){return Nr(r,function(o){return e[~~t(o)]})},Qf=function a(e,t,r){var o=t-e;return rt(e)?eh(e,a(0,e.length),t):Nr(r,function(i){return(o+(i-e)%o)%o+e})},Kf=function a(e,t,r){var o=t-e,i=o*2;return rt(e)?eh(e,a(0,e.length-1),t):Nr(r,function(s){return s=(i+(s-e)%i)%i||0,e+(s>o?i-s:s)})},Bo=function(e){return e.replace(Rf,function(t){var r=t.indexOf("[")+1,o=t.substring(r||7,r?t.indexOf("]"):t.length-1).split(Tf);return Jp(r?o:+o[0],r?0:+o[1],+o[2]||1e-5)})},th=function(e,t,r,o,i){var s=t-e,c=o-r;return Nr(i,function(d){return r+((d-e)/s*c||0)})},Yf=function a(e,t,r,o){var i=isNaN(e+t)?0:function(v){return(1-v)*e+v*t};if(!i){var s=Xe(e),c={},d,p,h,m,f;if(r===!0&&(o=1)&&(r=null),s)e={p:e},t={p:t};else if(rt(e)&&!rt(t)){for(h=[],m=e.length,f=m-2,p=1;p<m;p++)h.push(a(e[p-1],e[p]));m--,i=function(P){P*=m;var y=Math.min(f,~~P);return h[y](P-y)},r=t}else o||(e=Na(rt(e)?[]:{},e));if(!h){for(d in t)qs.call(c,e,d,"get",t[d]);i=function(P){return Ys(P,c)||(s?e.p:e)}}}return Nr(r,i)},Gc=function(e,t,r){var o=e.labels,i=wt,s,c,d;for(s in o)c=o[s]-t,c<0==!!r&&c&&i>(c=Math.abs(c))&&(d=s,i=c);return d},Dt=function(e,t,r){var o=e.vars,i=o[t],s=Pe,c=e._ctx,d,p,h;if(i)return d=o[t+"Params"],p=o.callbackScope||e,r&&Ar.length&&Ii(),c&&(Pe=c),h=d?i.apply(p,d):i.call(p),Pe=s,h},xo=function(e){return kr(e),e.scrollTrigger&&e.scrollTrigger.kill(!!$e),e.progress()<1&&Dt(e,"onInterrupt"),e},wa,rh=[],ah=function(e){if(e)if(e=!e.name&&e.default||e,Gs()||e.headless){var t=e.name,r=Re(e),o=t&&!r&&e.init?function(){this._props=[]}:e,i={init:Fo,render:Ys,add:qs,kill:m0,modifier:u0,rawVars:0},s={targetTest:0,get:0,getSetter:Ks,aliases:{},register:0};if(za(),e!==o){if(bt[t])return;Ct(o,Ct(Fi(e,i),s)),Na(o.prototype,Na(i,Fi(e,s))),bt[o.prop=t]=o,e.targetTest&&(Ai.push(o),Ls[t]=1),t=(t==="css"?"CSS":t.charAt(0).toUpperCase()+t.substr(1))+"Plugin"}Np(t,o),e.register&&e.register(yt,o,gt)}else rh.push(e)},ge=255,bo={aqua:[0,ge,ge],lime:[0,ge,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,ge],navy:[0,0,128],white:[ge,ge,ge],olive:[128,128,0],yellow:[ge,ge,0],orange:[ge,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[ge,0,0],pink:[ge,192,203],cyan:[0,ge,ge],transparent:[ge,ge,ge,0]},Hn=function(e,t,r){return e+=e<0?1:e>1?-1:0,(e*6<1?t+(r-t)*e*6:e<.5?r:e*3<2?t+(r-t)*(2/3-e)*6:t)*ge+.5|0},oh=function(e,t,r){var o=e?sr(e)?[e>>16,e>>8&ge,e&ge]:0:bo.black,i,s,c,d,p,h,m,f,v,P;if(!o){if(e.substr(-1)===","&&(e=e.substr(0,e.length-1)),bo[e])o=bo[e];else if(e.charAt(0)==="#"){if(e.length<6&&(i=e.charAt(1),s=e.charAt(2),c=e.charAt(3),e="#"+i+i+s+s+c+c+(e.length===5?e.charAt(4)+e.charAt(4):"")),e.length===9)return o=parseInt(e.substr(1,6),16),[o>>16,o>>8&ge,o&ge,parseInt(e.substr(7),16)/255];e=parseInt(e.substr(1),16),o=[e>>16,e>>8&ge,e&ge]}else if(e.substr(0,3)==="hsl"){if(o=P=e.match(Bc),!t)d=+o[0]%360/360,p=+o[1]/100,h=+o[2]/100,s=h<=.5?h*(p+1):h+p-h*p,i=h*2-s,o.length>3&&(o[3]*=1),o[0]=Hn(d+1/3,i,s),o[1]=Hn(d,i,s),o[2]=Hn(d-1/3,i,s);else if(~e.indexOf("="))return o=e.match(Fp),r&&o.length<4&&(o[3]=1),o}else o=e.match(Bc)||bo.transparent;o=o.map(Number)}return t&&!P&&(i=o[0]/ge,s=o[1]/ge,c=o[2]/ge,m=Math.max(i,s,c),f=Math.min(i,s,c),h=(m+f)/2,m===f?d=p=0:(v=m-f,p=h>.5?v/(2-m-f):v/(m+f),d=m===i?(s-c)/v+(s<c?6:0):m===s?(c-i)/v+2:(i-s)/v+4,d*=60),o[0]=~~(d+.5),o[1]=~~(p*100+.5),o[2]=~~(h*100+.5)),r&&o.length<4&&(o[3]=1),o},ih=function(e){var t=[],r=[],o=-1;return e.split(jr).forEach(function(i){var s=i.match(Va)||[];t.push.apply(t,s),r.push(o+=s.length+1)}),t.c=r,t},zc=function(e,t,r){var o="",i=(e+o).match(jr),s=t?"hsla(":"rgba(",c=0,d,p,h,m;if(!i)return e;if(i=i.map(function(f){return(f=oh(f,t,1))&&s+(t?f[0]+","+f[1]+"%,"+f[2]+"%,"+f[3]:f.join(","))+")"}),r&&(h=ih(e),d=r.c,d.join(o)!==h.c.join(o)))for(p=e.replace(jr,"1").split(Va),m=p.length-1;c<m;c++)o+=p[c]+(~d.indexOf(c)?i.shift()||s+"0,0,0,0)":(h.length?h:i.length?i:r).shift());if(!p)for(p=e.split(jr),m=p.length-1;c<m;c++)o+=p[c]+i[c];return o+p[m]},jr=(function(){var a="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b",e;for(e in bo)a+="|"+e+"\\b";return new RegExp(a+")","gi")})(),Jf=/hsl[a]?\(/,nh=function(e){var t=e.join(" "),r;if(jr.lastIndex=0,jr.test(t))return r=Jf.test(t),e[1]=zc(e[1],r),e[0]=zc(e[0],r,ih(e[1])),!0},Uo,Pt=(function(){var a=Date.now,e=500,t=33,r=a(),o=r,i=1e3/240,s=i,c=[],d,p,h,m,f,v,P=function y(A){var V=a()-o,I=A===!0,E,w,k,U;if((V>e||V<0)&&(r+=V-t),o+=V,k=o-r,E=k-s,(E>0||I)&&(U=++m.frame,f=k-m.time*1e3,m.time=k=k/1e3,s+=E+(E>=i?4:i-E),w=1),I||(d=p(y)),w)for(v=0;v<c.length;v++)c[v](k,f,U,A)};return m={time:0,frame:0,tick:function(){P(!0)},deltaRatio:function(A){return f/(1e3/(A||60))},wake:function(){Up&&(!ns&&Gs()&&(Xt=ns=window,zs=Xt.document||{},_t.gsap=yt,(Xt.gsapVersions||(Xt.gsapVersions=[])).push(yt.version),Mp(wi||Xt.GreenSockGlobals||!Xt.gsap&&Xt||{}),rh.forEach(ah)),h=typeof requestAnimationFrame<"u"&&requestAnimationFrame,d&&m.sleep(),p=h||function(A){return setTimeout(A,s-m.time*1e3+1|0)},Uo=1,P(2))},sleep:function(){(h?cancelAnimationFrame:clearTimeout)(d),Uo=0,p=Fo},lagSmoothing:function(A,V){e=A||1/0,t=Math.min(V||33,e)},fps:function(A){i=1e3/(A||240),s=m.time*1e3+i},add:function(A,V,I){var E=V?function(w,k,U,D){A(w,k,U,D),m.remove(E)}:A;return m.remove(A),c[I?"unshift":"push"](E),za(),E},remove:function(A,V){~(V=c.indexOf(A))&&c.splice(V,1)&&v>=V&&v--},_listeners:c},m})(),za=function(){return!Uo&&Pt.wake()},ce={},e0=/^[\d.\-M][\d.\-,\s]/,t0=/["']/g,r0=function(e){for(var t={},r=e.substr(1,e.length-3).split(":"),o=r[0],i=1,s=r.length,c,d,p;i<s;i++)d=r[i],c=i!==s-1?d.lastIndexOf(","):d.length,p=d.substr(0,c),t[o]=isNaN(p)?p.replace(t0,"").trim():+p,o=d.substr(c+1).trim();return t},a0=function(e){var t=e.indexOf("(")+1,r=e.indexOf(")"),o=e.indexOf("(",t);return e.substring(t,~o&&o<r?e.indexOf(")",r+1):r)},o0=function(e){var t=(e+"").split("("),r=ce[t[0]];return r&&t.length>1&&r.config?r.config.apply(null,~e.indexOf("{")?[r0(t[1])]:a0(e).split(",").map(Op)):ce._CE&&e0.test(e)?ce._CE("",e):r},sh=function(e){return function(t){return 1-e(1-t)}},lh=function a(e,t){for(var r=e._first,o;r;)r instanceof lt?a(r,t):r.vars.yoyoEase&&(!r._yoyo||!r._repeat)&&r._yoyo!==t&&(r.timeline?a(r.timeline,t):(o=r._ease,r._ease=r._yEase,r._yEase=o,r._yoyo=t)),r=r._next},ia=function(e,t){return e&&(Re(e)?e:ce[e]||o0(e))||t},ua=function(e,t,r,o){r===void 0&&(r=function(d){return 1-t(1-d)}),o===void 0&&(o=function(d){return d<.5?t(d*2)/2:1-t((1-d)*2)/2});var i={easeIn:t,easeOut:r,easeInOut:o},s;return mt(e,function(c){ce[c]=_t[c]=i,ce[s=c.toLowerCase()]=r;for(var d in i)ce[s+(d==="easeIn"?".in":d==="easeOut"?".out":".inOut")]=ce[c+"."+d]=i[d]}),i},ch=function(e){return function(t){return t<.5?(1-e(1-t*2))/2:.5+e((t-.5)*2)/2}},Xn=function a(e,t,r){var o=t>=1?t:1,i=(r||(e?.3:.45))/(t<1?t:1),s=i/is*(Math.asin(1/o)||0),c=function(h){return h===1?1:o*Math.pow(2,-10*h)*kf((h-s)*i)+1},d=e==="out"?c:e==="in"?function(p){return 1-c(1-p)}:ch(c);return i=is/i,d.config=function(p,h){return a(e,p,h)},d},Zn=function a(e,t){t===void 0&&(t=1.70158);var r=function(s){return s?--s*s*((t+1)*s+t)+1:0},o=e==="out"?r:e==="in"?function(i){return 1-r(1-i)}:ch(r);return o.config=function(i){return a(e,i)},o};mt("Linear,Quad,Cubic,Quart,Quint,Strong",function(a,e){var t=e<5?e+1:e;ua(a+",Power"+(t-1),e?function(r){return Math.pow(r,t)}:function(r){return r},function(r){return 1-Math.pow(1-r,t)},function(r){return r<.5?Math.pow(r*2,t)/2:1-Math.pow((1-r)*2,t)/2})});ce.Linear.easeNone=ce.none=ce.Linear.easeIn;ua("Elastic",Xn("in"),Xn("out"),Xn());(function(a,e){var t=1/e,r=2*t,o=2.5*t,i=function(c){return c<t?a*c*c:c<r?a*Math.pow(c-1.5/e,2)+.75:c<o?a*(c-=2.25/e)*c+.9375:a*Math.pow(c-2.625/e,2)+.984375};ua("Bounce",function(s){return 1-i(1-s)},i)})(7.5625,2.75);ua("Expo",function(a){return Math.pow(2,10*(a-1))*a+a*a*a*a*a*a*(1-a)});ua("Circ",function(a){return-(wp(1-a*a)-1)});ua("Sine",function(a){return a===1?1:-Cf(a*Ef)+1});ua("Back",Zn("in"),Zn("out"),Zn());ce.SteppedEase=ce.steps=_t.SteppedEase={config:function(e,t){e===void 0&&(e=1);var r=1/e,o=e+(t?0:1),i=t?1:0,s=1-fe;return function(c){return((o*Ko(0,s,c)|0)+i)*r}}};Ma.ease=ce["quad.out"];mt("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",function(a){return Hs+=a+","+a+"Params,"});var dh=function(e,t){this.id=_f++,e._gsap=this,this.target=e,this.harness=t,this.get=t?t.get:Gp,this.set=t?t.getSetter:Ks},Mo=(function(){function a(t){this.vars=t,this._delay=+t.delay||0,(this._repeat=t.repeat===1/0?-2:t.repeat||0)&&(this._rDelay=t.repeatDelay||0,this._yoyo=!!t.yoyo||!!t.yoyoEase),this._ts=1,Ga(this,+t.duration,1,1),this.data=t.data,Pe&&(this._ctx=Pe,Pe.data.push(this)),Uo||Pt.wake()}var e=a.prototype;return e.delay=function(r){return r||r===0?(this.parent&&this.parent.smoothChildTiming&&this.startTime(this._start+r-this._delay),this._delay=r,this):this._delay},e.duration=function(r){return arguments.length?this.totalDuration(this._repeat>0?r+(r+this._rDelay)*this._repeat:r):this.totalDuration()&&this._dur},e.totalDuration=function(r){return arguments.length?(this._dirty=0,Ga(this,this._repeat<0?r:(r-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},e.totalTime=function(r,o){if(za(),!arguments.length)return this._tTime;var i=this._dp;if(i&&i.smoothChildTiming&&this._ts){for(on(this,r),!i._dp||i.parent||Xp(i,this);i&&i.parent;)i.parent._time!==i._start+(i._ts>=0?i._tTime/i._ts:(i.totalDuration()-i._tTime)/-i._ts)&&i.totalTime(i._tTime,!0),i=i.parent;!this.parent&&this._dp.autoRemoveChildren&&(this._ts>0&&r<this._tDur||this._ts<0&&r>0||!this._tDur&&!r)&&qt(this._dp,this,this._start-this._delay)}return(this._tTime!==r||!this._dur&&!o||this._initted&&Math.abs(this._zTime)===fe||!this._initted&&this._dur&&r||!r&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=r),zp(this,r,o)),this},e.time=function(r,o){return arguments.length?this.totalTime(Math.min(this.totalDuration(),r+Nc(this))%(this._dur+this._rDelay)||(r?this._dur:0),o):this._time},e.totalProgress=function(r,o){return arguments.length?this.totalTime(this.totalDuration()*r,o):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.rawTime()>=0&&this._initted?1:0},e.progress=function(r,o){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&!(this.iteration()&1)?1-r:r)+Nc(this),o):this.duration()?Math.min(1,this._time/this._dur):this.rawTime()>0?1:0},e.iteration=function(r,o){var i=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(r-1)*i,o):this._repeat?Wa(this._tTime,i)+1:1},e.timeScale=function(r,o){if(!arguments.length)return this._rts===-fe?0:this._rts;if(this._rts===r)return this;var i=this.parent&&this._ts?Bi(this.parent._time,this):this._tTime;return this._rts=+r||0,this._ts=this._ps||r===-fe?0:this._rts,this.totalTime(Ko(-Math.abs(this._delay),this.totalDuration(),i),o!==!1),an(this),Nf(this)},e.paused=function(r){return arguments.length?(this._ps!==r&&(this._ps=r,r?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(za(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,this.progress()===1&&Math.abs(this._zTime)!==fe&&(this._tTime-=fe)))),this):this._ps},e.startTime=function(r){if(arguments.length){this._start=Ae(r);var o=this.parent||this._dp;return o&&(o._sort||!this.parent)&&qt(o,this,this._start-this._delay),this}return this._start},e.endTime=function(r){return this._start+(ut(r)?this.totalDuration():this.duration())/Math.abs(this._ts||1)},e.rawTime=function(r){var o=this.parent||this._dp;return o?r&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?Bi(o.rawTime(r),this):this._tTime:this._tTime},e.revert=function(r){r===void 0&&(r=Ff);var o=$e;return $e=r,Zs(this)&&(this.timeline&&this.timeline.revert(r),this.totalTime(-.01,r.suppressEvents)),this.data!=="nested"&&r.kill!==!1&&this.kill(),$e=o,this},e.globalTime=function(r){for(var o=this,i=arguments.length?r:o.rawTime();o;)i=o._start+i/(Math.abs(o._ts)||1),o=o._dp;return!this.parent&&this._sat?this._sat.globalTime(r):i},e.repeat=function(r){return arguments.length?(this._repeat=r===1/0?-2:r,Wc(this)):this._repeat===-2?1/0:this._repeat},e.repeatDelay=function(r){if(arguments.length){var o=this._time;return this._rDelay=r,Wc(this),o?this.time(o):this}return this._rDelay},e.yoyo=function(r){return arguments.length?(this._yoyo=r,this):this._yoyo},e.seek=function(r,o){return this.totalTime(Tt(this,r),ut(o))},e.restart=function(r,o){return this.play().totalTime(r?-this._delay:0,ut(o)),this._dur||(this._zTime=-fe),this},e.play=function(r,o){return r!=null&&this.seek(r,o),this.reversed(!1).paused(!1)},e.reverse=function(r,o){return r!=null&&this.seek(r||this.totalDuration(),o),this.reversed(!0).paused(!1)},e.pause=function(r,o){return r!=null&&this.seek(r,o),this.paused(!0)},e.resume=function(){return this.paused(!1)},e.reversed=function(r){return arguments.length?(!!r!==this.reversed()&&this.timeScale(-this._rts||(r?-fe:0)),this):this._rts<0},e.invalidate=function(){return this._initted=this._act=0,this._zTime=-fe,this},e.isActive=function(){var r=this.parent||this._dp,o=this._start,i;return!!(!r||this._ts&&this._initted&&r.isActive()&&(i=r.rawTime(!0))>=o&&i<this.endTime(!0)-fe)},e.eventCallback=function(r,o,i){var s=this.vars;return arguments.length>1?(o?(s[r]=o,i&&(s[r+"Params"]=i),r==="onUpdate"&&(this._onUpdate=o)):delete s[r],this):s[r]},e.then=function(r){var o=this,i=o._prom;return new Promise(function(s){var c=Re(r)?r:Lp,d=function(){var h=o.then;o.then=null,i&&i(),Re(c)&&(c=c(o))&&(c.then||c===o)&&(o.then=h),s(c),o.then=h};o._initted&&o.totalProgress()===1&&o._ts>=0||!o._tTime&&o._ts<0?d():o._prom=d})},e.kill=function(){xo(this)},a})();Ct(Mo.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-fe,_prom:0,_ps:!1,_rts:1});var lt=(function(a){Vp(e,a);function e(r,o){var i;return r===void 0&&(r={}),i=a.call(this,r)||this,i.labels={},i.smoothChildTiming=!!r.smoothChildTiming,i.autoRemoveChildren=!!r.autoRemoveChildren,i._sort=ut(r.sortChildren),je&&qt(r.parent||je,or(i),o),r.reversed&&i.reverse(),r.paused&&i.paused(!0),r.scrollTrigger&&Zp(or(i),r.scrollTrigger),i}var t=e.prototype;return t.to=function(o,i,s){return Co(0,arguments,this),this},t.from=function(o,i,s){return Co(1,arguments,this),this},t.fromTo=function(o,i,s,c){return Co(2,arguments,this),this},t.set=function(o,i,s){return i.duration=0,i.parent=this,_o(i).repeatDelay||(i.repeat=0),i.immediateRender=!!i.immediateRender,new Ue(o,i,Tt(this,s),1),this},t.call=function(o,i,s){return qt(this,Ue.delayedCall(0,o,i),s)},t.staggerTo=function(o,i,s,c,d,p,h){return s.duration=i,s.stagger=s.stagger||c,s.onComplete=p,s.onCompleteParams=h,s.parent=this,new Ue(o,s,Tt(this,d)),this},t.staggerFrom=function(o,i,s,c,d,p,h){return s.runBackwards=1,_o(s).immediateRender=ut(s.immediateRender),this.staggerTo(o,i,s,c,d,p,h)},t.staggerFromTo=function(o,i,s,c,d,p,h,m){return c.startAt=s,_o(c).immediateRender=ut(c.immediateRender),this.staggerTo(o,i,c,d,p,h,m)},t.render=function(o,i,s){var c=this._time,d=this._dirty?this.totalDuration():this._tDur,p=this._dur,h=o<=0?0:Ae(o),m=this._zTime<0!=o<0&&(this._initted||!p),f,v,P,y,A,V,I,E,w,k,U,D;if(this!==je&&h>d&&o>=0&&(h=d),h!==this._tTime||s||m){if(c!==this._time&&p&&(h+=this._time-c,o+=this._time-c),f=h,w=this._start,E=this._ts,V=!E,m&&(p||(c=this._zTime),(o||!i)&&(this._zTime=o)),this._repeat){if(U=this._yoyo,A=p+this._rDelay,this._repeat<-1&&o<0)return this.totalTime(A*100+o,i,s);if(f=Ae(h%A),h===d?(y=this._repeat,f=p):(k=Ae(h/A),y=~~k,y&&y===k&&(f=p,y--),f>p&&(f=p)),k=Wa(this._tTime,A),!c&&this._tTime&&k!==y&&this._tTime-k*A-this._dur<=0&&(k=y),U&&y&1&&(f=p-f,D=1),y!==k&&!this._lock){var S=U&&k&1,x=S===(U&&y&1);if(y<k&&(S=!S),c=S?0:h%p?p:h,this._lock=1,this.render(c||(D?0:Ae(y*A)),i,!p)._lock=0,this._tTime=h,!i&&this.parent&&Dt(this,"onRepeat"),this.vars.repeatRefresh&&!D&&(this.invalidate()._lock=1,k=y),c&&c!==this._time||V!==!this._ts||this.vars.onRepeat&&!this.parent&&!this._act)return this;if(p=this._dur,d=this._tDur,x&&(this._lock=2,c=S?p:-1e-4,this.render(c,!0),this.vars.repeatRefresh&&!D&&this.invalidate()),this._lock=0,!this._ts&&!V)return this;lh(this,D)}}if(this._hasPause&&!this._forcing&&this._lock<2&&(I=Of(this,Ae(c),Ae(f)),I&&(h-=f-(f=I._start))),this._tTime=h,this._time=f,this._act=!E,this._initted||(this._onUpdate=this.vars.onUpdate,this._initted=1,this._zTime=o,c=0),!c&&h&&p&&!i&&!k&&(Dt(this,"onStart"),this._tTime!==h))return this;if(f>=c&&o>=0)for(v=this._first;v;){if(P=v._next,(v._act||f>=v._start)&&v._ts&&I!==v){if(v.parent!==this)return this.render(o,i,s);if(v.render(v._ts>0?(f-v._start)*v._ts:(v._dirty?v.totalDuration():v._tDur)+(f-v._start)*v._ts,i,s),f!==this._time||!this._ts&&!V){I=0,P&&(h+=this._zTime=-fe);break}}v=P}else{v=this._last;for(var C=o<0?o:f;v;){if(P=v._prev,(v._act||C<=v._end)&&v._ts&&I!==v){if(v.parent!==this)return this.render(o,i,s);if(v.render(v._ts>0?(C-v._start)*v._ts:(v._dirty?v.totalDuration():v._tDur)+(C-v._start)*v._ts,i,s||$e&&Zs(v)),f!==this._time||!this._ts&&!V){I=0,P&&(h+=this._zTime=C?-fe:fe);break}}v=P}}if(I&&!i&&(this.pause(),I.render(f>=c?0:-fe)._zTime=f>=c?1:-1,this._ts))return this._start=w,an(this),this.render(o,i,s);this._onUpdate&&!i&&Dt(this,"onUpdate",!0),(h===d&&this._tTime>=this.totalDuration()||!h&&c)&&(w===this._start||Math.abs(E)!==Math.abs(this._ts))&&(this._lock||((o||!p)&&(h===d&&this._ts>0||!h&&this._ts<0)&&kr(this,1),!i&&!(o<0&&!c)&&(h||c||!d)&&(Dt(this,h===d&&o>=0?"onComplete":"onReverseComplete",!0),this._prom&&!(h<d&&this.timeScale()>0)&&this._prom())))}return this},t.add=function(o,i){var s=this;if(sr(i)||(i=Tt(this,i,o)),!(o instanceof Mo)){if(rt(o))return o.forEach(function(c){return s.add(c,i)}),this;if(Xe(o))return this.addLabel(o,i);if(Re(o))o=Ue.delayedCall(0,o);else return this}return this!==o?qt(this,o,i):this},t.getChildren=function(o,i,s,c){o===void 0&&(o=!0),i===void 0&&(i=!0),s===void 0&&(s=!0),c===void 0&&(c=-wt);for(var d=[],p=this._first;p;)p._start>=c&&(p instanceof Ue?i&&d.push(p):(s&&d.push(p),o&&d.push.apply(d,p.getChildren(!0,i,s)))),p=p._next;return d},t.getById=function(o){for(var i=this.getChildren(1,1,1),s=i.length;s--;)if(i[s].vars.id===o)return i[s]},t.remove=function(o){return Xe(o)?this.removeLabel(o):Re(o)?this.killTweensOf(o):(o.parent===this&&rn(this,o),o===this._recent&&(this._recent=this._last),oa(this))},t.totalTime=function(o,i){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=Ae(Pt.time-(this._ts>0?o/this._ts:(this.totalDuration()-o)/-this._ts))),a.prototype.totalTime.call(this,o,i),this._forcing=0,this):this._tTime},t.addLabel=function(o,i){return this.labels[o]=Tt(this,i),this},t.removeLabel=function(o){return delete this.labels[o],this},t.addPause=function(o,i,s){var c=Ue.delayedCall(0,i||Fo,s);return c.data="isPause",this._hasPause=1,qt(this,c,Tt(this,o))},t.removePause=function(o){var i=this._first;for(o=Tt(this,o);i;)i._start===o&&i.data==="isPause"&&kr(i),i=i._next},t.killTweensOf=function(o,i,s){for(var c=this.getTweensOf(o,s),d=c.length;d--;)xr!==c[d]&&c[d].kill(o,i);return this},t.getTweensOf=function(o,i){for(var s=[],c=It(o),d=this._first,p=sr(i),h;d;)d instanceof Ue?Bf(d._targets,c)&&(p?(!xr||d._initted&&d._ts)&&d.globalTime(0)<=i&&d.globalTime(d.totalDuration())>i:!i||d.isActive())&&s.push(d):(h=d.getTweensOf(c,i)).length&&s.push.apply(s,h),d=d._next;return s},t.tweenTo=function(o,i){i=i||{};var s=this,c=Tt(s,o),d=i,p=d.startAt,h=d.onStart,m=d.onStartParams,f=d.immediateRender,v,P=Ue.to(s,Ct({ease:i.ease||"none",lazy:!1,immediateRender:!1,time:c,overwrite:"auto",duration:i.duration||Math.abs((c-(p&&"time"in p?p.time:s._time))/s.timeScale())||fe,onStart:function(){if(s.pause(),!v){var A=i.duration||Math.abs((c-(p&&"time"in p?p.time:s._time))/s.timeScale());P._dur!==A&&Ga(P,A,0,1).render(P._time,!0,!0),v=1}h&&h.apply(P,m||[])}},i));return f?P.render(0):P},t.tweenFromTo=function(o,i,s){return this.tweenTo(i,Ct({startAt:{time:Tt(this,o)}},s))},t.recent=function(){return this._recent},t.nextLabel=function(o){return o===void 0&&(o=this._time),Gc(this,Tt(this,o))},t.previousLabel=function(o){return o===void 0&&(o=this._time),Gc(this,Tt(this,o),1)},t.currentLabel=function(o){return arguments.length?this.seek(o,!0):this.previousLabel(this._time+fe)},t.shiftChildren=function(o,i,s){s===void 0&&(s=0);var c=this._first,d=this.labels,p;for(o=Ae(o);c;)c._start>=s&&(c._start+=o,c._end+=o),c=c._next;if(i)for(p in d)d[p]>=s&&(d[p]+=o);return oa(this)},t.invalidate=function(o){var i=this._first;for(this._lock=0;i;)i.invalidate(o),i=i._next;return a.prototype.invalidate.call(this,o)},t.clear=function(o){o===void 0&&(o=!0);for(var i=this._first,s;i;)s=i._next,this.remove(i),i=s;return this._dp&&(this._time=this._tTime=this._pTime=0),o&&(this.labels={}),oa(this)},t.totalDuration=function(o){var i=0,s=this,c=s._last,d=wt,p,h,m;if(arguments.length)return s.timeScale((s._repeat<0?s.duration():s.totalDuration())/(s.reversed()?-o:o));if(s._dirty){for(m=s.parent;c;)p=c._prev,c._dirty&&c.totalDuration(),h=c._start,h>d&&s._sort&&c._ts&&!s._lock?(s._lock=1,qt(s,c,h-c._delay,1)._lock=0):d=h,h<0&&c._ts&&(i-=h,(!m&&!s._dp||m&&m.smoothChildTiming)&&(s._start+=Ae(h/s._ts),s._time-=h,s._tTime-=h),s.shiftChildren(-h,!1,-1/0),d=0),c._end>i&&c._ts&&(i=c._end),c=p;Ga(s,s===je&&s._time>i?s._time:i,1,1),s._dirty=0}return s._tDur},e.updateRoot=function(o){if(je._ts&&(zp(je,Bi(o,je)),Wp=Pt.frame),Pt.frame>=Uc){Uc+=Et.autoSleep||120;var i=je._first;if((!i||!i._ts)&&Et.autoSleep&&Pt._listeners.length<2){for(;i&&!i._ts;)i=i._next;i||Pt.sleep()}}},e})(Mo);Ct(lt.prototype,{_lock:0,_hasPause:0,_forcing:0});var i0=function(e,t,r,o,i,s,c){var d=new gt(this._pt,e,t,0,1,fh,null,i),p=0,h=0,m,f,v,P,y,A,V,I;for(d.b=r,d.e=o,r+="",o+="",(V=~o.indexOf("random("))&&(o=Bo(o)),s&&(I=[r,o],s(I,e,t),r=I[0],o=I[1]),f=r.match(On)||[];m=On.exec(o);)P=m[0],y=o.substring(p,m.index),v?v=(v+1)%5:y.substr(-5)==="rgba("&&(v=1),P!==f[h++]&&(A=parseFloat(f[h-1])||0,d._pt={_next:d._pt,p:y||h===1?y:",",s:A,c:P.charAt(1)==="="?Ia(A,P)-A:parseFloat(P)-A,m:v&&v<4?Math.round:0},p=On.lastIndex);return d.c=p<o.length?o.substring(p,o.length):"",d.fp=c,(Bp.test(o)||V)&&(d.e=0),this._pt=d,d},qs=function(e,t,r,o,i,s,c,d,p,h){Re(o)&&(o=o(i||0,e,s));var m=e[t],f=r!=="get"?r:Re(m)?p?e[t.indexOf("set")||!Re(e["get"+t.substr(3)])?t:"get"+t.substr(3)](p):e[t]():m,v=Re(m)?p?d0:mh:Qs,P;if(Xe(o)&&(~o.indexOf("random(")&&(o=Bo(o)),o.charAt(1)==="="&&(P=Ia(f,o)+(tt(f)||0),(P||P===0)&&(o=P))),!h||f!==o||us)return!isNaN(f*o)&&o!==""?(P=new gt(this._pt,e,t,+f||0,o-(f||0),typeof m=="boolean"?h0:gh,0,v),p&&(P.fp=p),c&&P.modifier(c,this,e),this._pt=P):(!m&&!(t in e)&&Os(t,o),i0.call(this,e,t,f,o,v,d||Et.stringFilter,p))},n0=function(e,t,r,o,i){if(Re(e)&&(e=ko(e,i,t,r,o)),!tr(e)||e.style&&e.nodeType||rt(e)||Ip(e))return Xe(e)?ko(e,i,t,r,o):e;var s={},c;for(c in e)s[c]=ko(e[c],i,t,r,o);return s},ph=function(e,t,r,o,i,s){var c,d,p,h;if(bt[e]&&(c=new bt[e]).init(i,c.rawVars?t[e]:n0(t[e],o,i,s,r),r,o,s)!==!1&&(r._pt=d=new gt(r._pt,i,e,0,1,c.render,c,0,c.priority),r!==wa))for(p=r._ptLookup[r._targets.indexOf(i)],h=c._props.length;h--;)p[c._props[h]]=d;return c},xr,us,$s=function a(e,t,r){var o=e.vars,i=o.ease,s=o.startAt,c=o.immediateRender,d=o.lazy,p=o.onUpdate,h=o.runBackwards,m=o.yoyoEase,f=o.keyframes,v=o.autoRevert,P=e._dur,y=e._startAt,A=e._targets,V=e.parent,I=V&&V.data==="nested"?V.vars.targets:A,E=e._overwrite==="auto"&&!Ns,w=e.timeline,k,U,D,S,x,C,_,R,j,W,H,ee,ne;if(w&&(!f||!i)&&(i="none"),e._ease=ia(i,Ma.ease),e._yEase=m?sh(ia(m===!0?i:m,Ma.ease)):0,m&&e._yoyo&&!e._repeat&&(m=e._yEase,e._yEase=e._ease,e._ease=m),e._from=!w&&!!o.runBackwards,!w||f&&!o.stagger){if(R=A[0]?aa(A[0]).harness:0,ee=R&&o[R.prop],k=Fi(o,Ls),y&&(y._zTime<0&&y.progress(1),t<0&&h&&c&&!v?y.render(-1,!0):y.revert(h&&P?Di:If),y._lazy=0),s){if(kr(e._startAt=Ue.set(A,Ct({data:"isStart",overwrite:!1,parent:V,immediateRender:!0,lazy:!y&&ut(d),startAt:null,delay:0,onUpdate:p&&function(){return Dt(e,"onUpdate")},stagger:0},s))),e._startAt._dp=0,e._startAt._sat=e,t<0&&($e||!c&&!v)&&e._startAt.revert(Di),c&&P&&t<=0&&r<=0){t&&(e._zTime=t);return}}else if(h&&P&&!y){if(t&&(c=!1),D=Ct({overwrite:!1,data:"isFromStart",lazy:c&&!y&&ut(d),immediateRender:c,stagger:0,parent:V},k),ee&&(D[R.prop]=ee),kr(e._startAt=Ue.set(A,D)),e._startAt._dp=0,e._startAt._sat=e,t<0&&($e?e._startAt.revert(Di):e._startAt.render(-1,!0)),e._zTime=t,!c)a(e._startAt,fe,fe);else if(!t)return}for(e._pt=e._ptCache=0,d=P&&ut(d)||d&&!P,U=0;U<A.length;U++){if(x=A[U],_=x._gsap||Xs(A)[U]._gsap,e._ptLookup[U]=W={},ss[_.id]&&Ar.length&&Ii(),H=I===A?U:I.indexOf(x),R&&(j=new R).init(x,ee||k,e,H,I)!==!1&&(e._pt=S=new gt(e._pt,x,j.name,0,1,j.render,j,0,j.priority),j._props.forEach(function(ye){W[ye]=S}),j.priority&&(C=1)),!R||ee)for(D in k)bt[D]&&(j=ph(D,k,e,H,x,I))?j.priority&&(C=1):W[D]=S=qs.call(e,x,D,"get",k[D],H,I,0,o.stringFilter);e._op&&e._op[U]&&e.kill(x,e._op[U]),E&&e._pt&&(xr=e,je.killTweensOf(x,W,e.globalTime(t)),ne=!e.parent,xr=0),e._pt&&d&&(ss[_.id]=1)}C&&yh(e),e._onInit&&e._onInit(e)}e._onUpdate=p,e._initted=(!e._op||e._pt)&&!ne,f&&t<=0&&w.render(wt,!0,!0)},s0=function(e,t,r,o,i,s,c,d){var p=(e._pt&&e._ptCache||(e._ptCache={}))[t],h,m,f,v;if(!p)for(p=e._ptCache[t]=[],f=e._ptLookup,v=e._targets.length;v--;){if(h=f[v][t],h&&h.d&&h.d._pt)for(h=h.d._pt;h&&h.p!==t&&h.fp!==t;)h=h._next;if(!h)return us=1,e.vars[t]="+=0",$s(e,c),us=0,d?Io(t+" not eligible for reset"):1;p.push(h)}for(v=p.length;v--;)m=p[v],h=m._pt||m,h.s=(o||o===0)&&!i?o:h.s+(o||0)+s*h.c,h.c=r-h.s,m.e&&(m.e=we(r)+tt(m.e)),m.b&&(m.b=h.s+tt(m.b))},l0=function(e,t){var r=e[0]?aa(e[0]).harness:0,o=r&&r.aliases,i,s,c,d;if(!o)return t;i=Na({},t);for(s in o)if(s in i)for(d=o[s].split(","),c=d.length;c--;)i[d[c]]=i[s];return i},c0=function(e,t,r,o){var i=t.ease||o||"power1.inOut",s,c;if(rt(t))c=r[e]||(r[e]=[]),t.forEach(function(d,p){return c.push({t:p/(t.length-1)*100,v:d,e:i})});else for(s in t)c=r[s]||(r[s]=[]),s==="ease"||c.push({t:parseFloat(e),v:t[s],e:i})},ko=function(e,t,r,o,i){return Re(e)?e.call(t,r,o,i):Xe(e)&&~e.indexOf("random(")?Bo(e):e},hh=Hs+"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert",uh={};mt(hh+",id,stagger,delay,duration,paused,scrollTrigger",function(a){return uh[a]=1});var Ue=(function(a){Vp(e,a);function e(r,o,i,s){var c;typeof o=="number"&&(i.duration=o,o=i,i=null),c=a.call(this,s?o:_o(o))||this;var d=c.vars,p=d.duration,h=d.delay,m=d.immediateRender,f=d.stagger,v=d.overwrite,P=d.keyframes,y=d.defaults,A=d.scrollTrigger,V=d.yoyoEase,I=o.parent||je,E=(rt(r)||Ip(r)?sr(r[0]):"length"in o)?[r]:It(r),w,k,U,D,S,x,C,_;if(c._targets=E.length?Xs(E):Io("GSAP target "+r+" not found. https://gsap.com",!Et.nullTargetWarn)||[],c._ptLookup=[],c._overwrite=v,P||f||fi(p)||fi(h)){if(o=c.vars,w=c.timeline=new lt({data:"nested",defaults:y||{},targets:I&&I.data==="nested"?I.vars.targets:E}),w.kill(),w.parent=w._dp=or(c),w._start=0,f||fi(p)||fi(h)){if(D=E.length,C=f&&Kp(f),tr(f))for(S in f)~hh.indexOf(S)&&(_||(_={}),_[S]=f[S]);for(k=0;k<D;k++)U=Fi(o,uh),U.stagger=0,V&&(U.yoyoEase=V),_&&Na(U,_),x=E[k],U.duration=+ko(p,or(c),k,x,E),U.delay=(+ko(h,or(c),k,x,E)||0)-c._delay,!f&&D===1&&U.delay&&(c._delay=h=U.delay,c._start+=h,U.delay=0),w.to(x,U,C?C(k,x,E):0),w._ease=ce.none;w.duration()?p=h=0:c.timeline=0}else if(P){_o(Ct(w.vars.defaults,{ease:"none"})),w._ease=ia(P.ease||o.ease||"none");var R=0,j,W,H;if(rt(P))P.forEach(function(ee){return w.to(E,ee,">")}),w.duration();else{U={};for(S in P)S==="ease"||S==="easeEach"||c0(S,P[S],U,P.easeEach);for(S in U)for(j=U[S].sort(function(ee,ne){return ee.t-ne.t}),R=0,k=0;k<j.length;k++)W=j[k],H={ease:W.e,duration:(W.t-(k?j[k-1].t:0))/100*p},H[S]=W.v,w.to(E,H,R),R+=H.duration;w.duration()<p&&w.to({},{duration:p-w.duration()})}}p||c.duration(p=w.duration())}else c.timeline=0;return v===!0&&!Ns&&(xr=or(c),je.killTweensOf(E),xr=0),qt(I,or(c),i),o.reversed&&c.reverse(),o.paused&&c.paused(!0),(m||!p&&!P&&c._start===Ae(I._time)&&ut(m)&&Wf(or(c))&&I.data!=="nested")&&(c._tTime=-fe,c.render(Math.max(0,-h)||0)),A&&Zp(or(c),A),c}var t=e.prototype;return t.render=function(o,i,s){var c=this._time,d=this._tDur,p=this._dur,h=o<0,m=o>d-fe&&!h?d:o<fe?0:o,f,v,P,y,A,V,I,E,w;if(!p)zf(this,o,i,s);else if(m!==this._tTime||!o||s||!this._initted&&this._tTime||this._startAt&&this._zTime<0!==h||this._lazy){if(f=m,E=this.timeline,this._repeat){if(y=p+this._rDelay,this._repeat<-1&&h)return this.totalTime(y*100+o,i,s);if(f=Ae(m%y),m===d?(P=this._repeat,f=p):(A=Ae(m/y),P=~~A,P&&P===A?(f=p,P--):f>p&&(f=p)),V=this._yoyo&&P&1,V&&(w=this._yEase,f=p-f),A=Wa(this._tTime,y),f===c&&!s&&this._initted&&P===A)return this._tTime=m,this;P!==A&&(E&&this._yEase&&lh(E,V),this.vars.repeatRefresh&&!V&&!this._lock&&f!==y&&this._initted&&(this._lock=s=1,this.render(Ae(y*P),!0).invalidate()._lock=0))}if(!this._initted){if(qp(this,h?o:f,s,i,m))return this._tTime=0,this;if(c!==this._time&&!(s&&this.vars.repeatRefresh&&P!==A))return this;if(p!==this._dur)return this.render(o,i,s)}if(this._tTime=m,this._time=f,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=I=(w||this._ease)(f/p),this._from&&(this.ratio=I=1-I),!c&&m&&!i&&!A&&(Dt(this,"onStart"),this._tTime!==m))return this;for(v=this._pt;v;)v.r(I,v.d),v=v._next;E&&E.render(o<0?o:E._dur*E._ease(f/this._dur),i,s)||this._startAt&&(this._zTime=o),this._onUpdate&&!i&&(h&&ls(this,o,i,s),Dt(this,"onUpdate")),this._repeat&&P!==A&&this.vars.onRepeat&&!i&&this.parent&&Dt(this,"onRepeat"),(m===this._tDur||!m)&&this._tTime===m&&(h&&!this._onUpdate&&ls(this,o,!0,!0),(o||!p)&&(m===this._tDur&&this._ts>0||!m&&this._ts<0)&&kr(this,1),!i&&!(h&&!c)&&(m||c||V)&&(Dt(this,m===d?"onComplete":"onReverseComplete",!0),this._prom&&!(m<d&&this.timeScale()>0)&&this._prom()))}return this},t.targets=function(){return this._targets},t.invalidate=function(o){return(!o||!this.vars.runBackwards)&&(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(o),a.prototype.invalidate.call(this,o)},t.resetTo=function(o,i,s,c,d){Uo||Pt.wake(),this._ts||this.play();var p=Math.min(this._dur,(this._dp._time-this._start)*this._ts),h;return this._initted||$s(this,p),h=this._ease(p/this._dur),s0(this,o,i,s,c,h,p,d)?this.resetTo(o,i,s,c,1):(on(this,0),this.parent||Hp(this._dp,this,"_first","_last",this._dp._sort?"_start":0),this.render(0))},t.kill=function(o,i){if(i===void 0&&(i="all"),!o&&(!i||i==="all"))return this._lazy=this._pt=0,this.parent?xo(this):this.scrollTrigger&&this.scrollTrigger.kill(!!$e),this;if(this.timeline){var s=this.timeline.totalDuration();return this.timeline.killTweensOf(o,i,xr&&xr.vars.overwrite!==!0)._first||xo(this),this.parent&&s!==this.timeline.totalDuration()&&Ga(this,this._dur*this.timeline._tDur/s,0,1),this}var c=this._targets,d=o?It(o):c,p=this._ptLookup,h=this._pt,m,f,v,P,y,A,V;if((!i||i==="all")&&Mf(c,d))return i==="all"&&(this._pt=0),xo(this);for(m=this._op=this._op||[],i!=="all"&&(Xe(i)&&(y={},mt(i,function(I){return y[I]=1}),i=y),i=l0(c,i)),V=c.length;V--;)if(~d.indexOf(c[V])){f=p[V],i==="all"?(m[V]=i,P=f,v={}):(v=m[V]=m[V]||{},P=i);for(y in P)A=f&&f[y],A&&((!("kill"in A.d)||A.d.kill(y)===!0)&&rn(this,A,"_pt"),delete f[y]),v!=="all"&&(v[y]=1)}return this._initted&&!this._pt&&h&&xo(this),this},e.to=function(o,i){return new e(o,i,arguments[2])},e.from=function(o,i){return Co(1,arguments)},e.delayedCall=function(o,i,s,c){return new e(i,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:o,onComplete:i,onReverseComplete:i,onCompleteParams:s,onReverseCompleteParams:s,callbackScope:c})},e.fromTo=function(o,i,s){return Co(2,arguments)},e.set=function(o,i){return i.duration=0,i.repeatDelay||(i.repeat=0),new e(o,i)},e.killTweensOf=function(o,i,s){return je.killTweensOf(o,i,s)},e})(Mo);Ct(Ue.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0});mt("staggerTo,staggerFrom,staggerFromTo",function(a){Ue[a]=function(){var e=new lt,t=ds.call(arguments,0);return t.splice(a==="staggerFromTo"?5:4,0,0),e[a].apply(e,t)}});var Qs=function(e,t,r){return e[t]=r},mh=function(e,t,r){return e[t](r)},d0=function(e,t,r,o){return e[t](o.fp,r)},p0=function(e,t,r){return e.setAttribute(t,r)},Ks=function(e,t){return Re(e[t])?mh:Ws(e[t])&&e.setAttribute?p0:Qs},gh=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e6)/1e6,t)},h0=function(e,t){return t.set(t.t,t.p,!!(t.s+t.c*e),t)},fh=function(e,t){var r=t._pt,o="";if(!e&&t.b)o=t.b;else if(e===1&&t.e)o=t.e;else{for(;r;)o=r.p+(r.m?r.m(r.s+r.c*e):Math.round((r.s+r.c*e)*1e4)/1e4)+o,r=r._next;o+=t.c}t.set(t.t,t.p,o,t)},Ys=function(e,t){for(var r=t._pt;r;)r.r(e,r.d),r=r._next},u0=function(e,t,r,o){for(var i=this._pt,s;i;)s=i._next,i.p===o&&i.modifier(e,t,r),i=s},m0=function(e){for(var t=this._pt,r,o;t;)o=t._next,t.p===e&&!t.op||t.op===e?rn(this,t,"_pt"):t.dep||(r=1),t=o;return!r},g0=function(e,t,r,o){o.mSet(e,t,o.m.call(o.tween,r,o.mt),o)},yh=function(e){for(var t=e._pt,r,o,i,s;t;){for(r=t._next,o=i;o&&o.pr>t.pr;)o=o._next;(t._prev=o?o._prev:s)?t._prev._next=t:i=t,(t._next=o)?o._prev=t:s=t,t=r}e._pt=i},gt=(function(){function a(t,r,o,i,s,c,d,p,h){this.t=r,this.s=i,this.c=s,this.p=o,this.r=c||gh,this.d=d||this,this.set=p||Qs,this.pr=h||0,this._next=t,t&&(t._prev=this)}var e=a.prototype;return e.modifier=function(r,o,i){this.mSet=this.mSet||this.set,this.set=g0,this.m=r,this.mt=i,this.tween=o},a})();mt(Hs+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",function(a){return Ls[a]=1});_t.TweenMax=_t.TweenLite=Ue;_t.TimelineLite=_t.TimelineMax=lt;je=new lt({sortChildren:!1,defaults:Ma,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0});Et.stringFilter=nh;var na=[],ji={},f0=[],Oc=0,y0=0,qn=function(e){return(ji[e]||f0).map(function(t){return t()})},ms=function(){var e=Date.now(),t=[];e-Oc>2&&(qn("matchMediaInit"),na.forEach(function(r){var o=r.queries,i=r.conditions,s,c,d,p;for(c in o)s=Xt.matchMedia(o[c]).matches,s&&(d=1),s!==i[c]&&(i[c]=s,p=1);p&&(r.revert(),d&&t.push(r))}),qn("matchMediaRevert"),t.forEach(function(r){return r.onMatch(r,function(o){return r.add(null,o)})}),Oc=e,qn("matchMedia"))},vh=(function(){function a(t,r){this.selector=r&&ps(r),this.data=[],this._r=[],this.isReverted=!1,this.id=y0++,t&&this.add(t)}var e=a.prototype;return e.add=function(r,o,i){Re(r)&&(i=o,o=r,r=Re);var s=this,c=function(){var p=Pe,h=s.selector,m;return p&&p!==s&&p.data.push(s),i&&(s.selector=ps(i)),Pe=s,m=o.apply(s,arguments),Re(m)&&s._r.push(m),Pe=p,s.selector=h,s.isReverted=!1,m};return s.last=c,r===Re?c(s,function(d){return s.add(null,d)}):r?s[r]=c:c},e.ignore=function(r){var o=Pe;Pe=null,r(this),Pe=o},e.getTweens=function(){var r=[];return this.data.forEach(function(o){return o instanceof a?r.push.apply(r,o.getTweens()):o instanceof Ue&&!(o.parent&&o.parent.data==="nested")&&r.push(o)}),r},e.clear=function(){this._r.length=this.data.length=0},e.kill=function(r,o){var i=this;if(r?(function(){for(var c=i.getTweens(),d=i.data.length,p;d--;)p=i.data[d],p.data==="isFlip"&&(p.revert(),p.getChildren(!0,!0,!1).forEach(function(h){return c.splice(c.indexOf(h),1)}));for(c.map(function(h){return{g:h._dur||h._delay||h._sat&&!h._sat.vars.immediateRender?h.globalTime(0):-1/0,t:h}}).sort(function(h,m){return m.g-h.g||-1/0}).forEach(function(h){return h.t.revert(r)}),d=i.data.length;d--;)p=i.data[d],p instanceof lt?p.data!=="nested"&&(p.scrollTrigger&&p.scrollTrigger.revert(),p.kill()):!(p instanceof Ue)&&p.revert&&p.revert(r);i._r.forEach(function(h){return h(r,i)}),i.isReverted=!0})():this.data.forEach(function(c){return c.kill&&c.kill()}),this.clear(),o)for(var s=na.length;s--;)na[s].id===this.id&&na.splice(s,1)},e.revert=function(r){this.kill(r||{})},a})(),v0=(function(){function a(t){this.contexts=[],this.scope=t,Pe&&Pe.data.push(this)}var e=a.prototype;return e.add=function(r,o,i){tr(r)||(r={matches:r});var s=new vh(0,i||this.scope),c=s.conditions={},d,p,h;Pe&&!s.selector&&(s.selector=Pe.selector),this.contexts.push(s),o=s.add("onMatch",o),s.queries=r;for(p in r)p==="all"?h=1:(d=Xt.matchMedia(r[p]),d&&(na.indexOf(s)<0&&na.push(s),(c[p]=d.matches)&&(h=1),d.addListener?d.addListener(ms):d.addEventListener("change",ms)));return h&&o(s,function(m){return s.add(null,m)}),this},e.revert=function(r){this.kill(r||{})},e.kill=function(r){this.contexts.forEach(function(o){return o.kill(r,!0)})},a})(),Ui={registerPlugin:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.forEach(function(o){return ah(o)})},timeline:function(e){return new lt(e)},getTweensOf:function(e,t){return je.getTweensOf(e,t)},getProperty:function(e,t,r,o){Xe(e)&&(e=It(e)[0]);var i=aa(e||{}).get,s=r?Lp:Op;return r==="native"&&(r=""),e&&(t?s((bt[t]&&bt[t].get||i)(e,t,r,o)):function(c,d,p){return s((bt[c]&&bt[c].get||i)(e,c,d,p))})},quickSetter:function(e,t,r){if(e=It(e),e.length>1){var o=e.map(function(h){return yt.quickSetter(h,t,r)}),i=o.length;return function(h){for(var m=i;m--;)o[m](h)}}e=e[0]||{};var s=bt[t],c=aa(e),d=c.harness&&(c.harness.aliases||{})[t]||t,p=s?function(h){var m=new s;wa._pt=0,m.init(e,r?h+r:h,wa,0,[e]),m.render(1,m),wa._pt&&Ys(1,wa)}:c.set(e,d);return s?p:function(h){return p(e,d,r?h+r:h,c,1)}},quickTo:function(e,t,r){var o,i=yt.to(e,Ct((o={},o[t]="+=0.1",o.paused=!0,o.stagger=0,o),r||{})),s=function(d,p,h){return i.resetTo(t,d,p,h)};return s.tween=i,s},isTweening:function(e){return je.getTweensOf(e,!0).length>0},defaults:function(e){return e&&e.ease&&(e.ease=ia(e.ease,Ma.ease)),Mc(Ma,e||{})},config:function(e){return Mc(Et,e||{})},registerEffect:function(e){var t=e.name,r=e.effect,o=e.plugins,i=e.defaults,s=e.extendTimeline;(o||"").split(",").forEach(function(c){return c&&!bt[c]&&!_t[c]&&Io(t+" effect requires "+c+" plugin.")}),Ln[t]=function(c,d,p){return r(It(c),Ct(d||{},i),p)},s&&(lt.prototype[t]=function(c,d,p){return this.add(Ln[t](c,tr(d)?d:(p=d)&&{},this),p)})},registerEase:function(e,t){ce[e]=ia(t)},parseEase:function(e,t){return arguments.length?ia(e,t):ce},getById:function(e){return je.getById(e)},exportRoot:function(e,t){e===void 0&&(e={});var r=new lt(e),o,i;for(r.smoothChildTiming=ut(e.smoothChildTiming),je.remove(r),r._dp=0,r._time=r._tTime=je._time,o=je._first;o;)i=o._next,(t||!(!o._dur&&o instanceof Ue&&o.vars.onComplete===o._targets[0]))&&qt(r,o,o._start-o._delay),o=i;return qt(je,r,0),r},context:function(e,t){return e?new vh(e,t):Pe},matchMedia:function(e){return new v0(e)},matchMediaRefresh:function(){return na.forEach(function(e){var t=e.conditions,r,o;for(o in t)t[o]&&(t[o]=!1,r=1);r&&e.revert()})||ms()},addEventListener:function(e,t){var r=ji[e]||(ji[e]=[]);~r.indexOf(t)||r.push(t)},removeEventListener:function(e,t){var r=ji[e],o=r&&r.indexOf(t);o>=0&&r.splice(o,1)},utils:{wrap:Qf,wrapYoyo:Kf,distribute:Kp,random:Jp,snap:Yp,normalize:$f,getUnit:tt,clamp:Hf,splitColor:oh,toArray:It,selector:ps,mapRange:th,pipe:Zf,unitize:qf,interpolate:Yf,shuffle:Qp},install:Mp,effects:Ln,ticker:Pt,updateRoot:lt.updateRoot,plugins:bt,globalTimeline:je,core:{PropTween:gt,globals:Np,Tween:Ue,Timeline:lt,Animation:Mo,getCache:aa,_removeLinkedListItem:rn,reverting:function(){return $e},context:function(e){return e&&Pe&&(Pe.data.push(e),e._ctx=Pe),Pe},suppressOverwrites:function(e){return Ns=e}}};mt("to,from,fromTo,delayedCall,set,killTweensOf",function(a){return Ui[a]=Ue[a]});Pt.add(lt.updateRoot);wa=Ui.to({},{duration:0});var S0=function(e,t){for(var r=e._pt;r&&r.p!==t&&r.op!==t&&r.fp!==t;)r=r._next;return r},x0=function(e,t){var r=e._targets,o,i,s;for(o in t)for(i=r.length;i--;)s=e._ptLookup[i][o],s&&(s=s.d)&&(s._pt&&(s=S0(s,o)),s&&s.modifier&&s.modifier(t[o],e,r[i],o))},$n=function(e,t){return{name:e,headless:1,rawVars:1,init:function(o,i,s){s._onInit=function(c){var d,p;if(Xe(i)&&(d={},mt(i,function(h){return d[h]=1}),i=d),t){d={};for(p in i)d[p]=t(i[p]);i=d}x0(c,i)}}}},yt=Ui.registerPlugin({name:"attr",init:function(e,t,r,o,i){var s,c,d;this.tween=r;for(s in t)d=e.getAttribute(s)||"",c=this.add(e,"setAttribute",(d||0)+"",t[s],o,i,0,0,s),c.op=s,c.b=d,this._props.push(s)},render:function(e,t){for(var r=t._pt;r;)$e?r.set(r.t,r.p,r.b,r):r.r(e,r.d),r=r._next}},{name:"endArray",headless:1,init:function(e,t){for(var r=t.length;r--;)this.add(e,r,e[r]||0,t[r],0,0,0,0,0,1)}},$n("roundProps",hs),$n("modifiers"),$n("snap",Yp))||Ui;Ue.version=lt.version=yt.version="3.14.2";Up=1;Gs()&&za();ce.Power0;ce.Power1;ce.Power2;ce.Power3;ce.Power4;ce.Linear;ce.Quad;ce.Cubic;ce.Quart;ce.Quint;ce.Strong;ce.Elastic;ce.Back;ce.SteppedEase;ce.Bounce;ce.Sine;ce.Expo;ce.Circ;var Lc,br,Fa,Js,ta,Hc,el,b0=function(){return typeof window<"u"},lr={},ea=180/Math.PI,Ba=Math.PI/180,Ea=Math.atan2,Xc=1e8,tl=/([A-Z])/g,P0=/(left|right|width|margin|padding|x)/i,D0=/[\s,\(]\S/,$t={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},gs=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},A0=function(e,t){return t.set(t.t,t.p,e===1?t.e:Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},j0=function(e,t){return t.set(t.t,t.p,e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},E0=function(e,t){return t.set(t.t,t.p,e===1?t.e:e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},_0=function(e,t){var r=t.s+t.c*e;t.set(t.t,t.p,~~(r+(r<0?-.5:.5))+t.u,t)},Sh=function(e,t){return t.set(t.t,t.p,e?t.e:t.b,t)},xh=function(e,t){return t.set(t.t,t.p,e!==1?t.b:t.e,t)},C0=function(e,t,r){return e.style[t]=r},k0=function(e,t,r){return e.style.setProperty(t,r)},R0=function(e,t,r){return e._gsap[t]=r},T0=function(e,t,r){return e._gsap.scaleX=e._gsap.scaleY=r},V0=function(e,t,r,o,i){var s=e._gsap;s.scaleX=s.scaleY=r,s.renderTransform(i,s)},w0=function(e,t,r,o,i){var s=e._gsap;s[t]=r,s.renderTransform(i,s)},Ee="transform",ft=Ee+"Origin",I0=function a(e,t){var r=this,o=this.target,i=o.style,s=o._gsap;if(e in lr&&i){if(this.tfm=this.tfm||{},e!=="transform")e=$t[e]||e,~e.indexOf(",")?e.split(",").forEach(function(c){return r.tfm[c]=ir(o,c)}):this.tfm[e]=s.x?s[e]:ir(o,e),e===ft&&(this.tfm.zOrigin=s.zOrigin);else return $t.transform.split(",").forEach(function(c){return a.call(r,c,t)});if(this.props.indexOf(Ee)>=0)return;s.svg&&(this.svgo=o.getAttribute("data-svg-origin"),this.props.push(ft,t,"")),e=Ee}(i||t)&&this.props.push(e,t,i[e])},bh=function(e){e.translate&&(e.removeProperty("translate"),e.removeProperty("scale"),e.removeProperty("rotate"))},F0=function(){var e=this.props,t=this.target,r=t.style,o=t._gsap,i,s;for(i=0;i<e.length;i+=3)e[i+1]?e[i+1]===2?t[e[i]](e[i+2]):t[e[i]]=e[i+2]:e[i+2]?r[e[i]]=e[i+2]:r.removeProperty(e[i].substr(0,2)==="--"?e[i]:e[i].replace(tl,"-$1").toLowerCase());if(this.tfm){for(s in this.tfm)o[s]=this.tfm[s];o.svg&&(o.renderTransform(),t.setAttribute("data-svg-origin",this.svgo||"")),i=el(),(!i||!i.isStart)&&!r[Ee]&&(bh(r),o.zOrigin&&r[ft]&&(r[ft]+=" "+o.zOrigin+"px",o.zOrigin=0,o.renderTransform()),o.uncache=1)}},Ph=function(e,t){var r={target:e,props:[],revert:F0,save:I0};return e._gsap||yt.core.getCache(e),t&&e.style&&e.nodeType&&t.split(",").forEach(function(o){return r.save(o)}),r},Dh,fs=function(e,t){var r=br.createElementNS?br.createElementNS((t||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),e):br.createElement(e);return r&&r.style?r:br.createElement(e)},At=function a(e,t,r){var o=getComputedStyle(e);return o[t]||o.getPropertyValue(t.replace(tl,"-$1").toLowerCase())||o.getPropertyValue(t)||!r&&a(e,Oa(t)||t,1)||""},Zc="O,Moz,ms,Ms,Webkit".split(","),Oa=function(e,t,r){var o=t||ta,i=o.style,s=5;if(e in i&&!r)return e;for(e=e.charAt(0).toUpperCase()+e.substr(1);s--&&!(Zc[s]+e in i););return s<0?null:(s===3?"ms":s>=0?Zc[s]:"")+e},ys=function(){b0()&&window.document&&(Lc=window,br=Lc.document,Fa=br.documentElement,ta=fs("div")||{style:{}},fs("div"),Ee=Oa(Ee),ft=Ee+"Origin",ta.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",Dh=!!Oa("perspective"),el=yt.core.reverting,Js=1)},qc=function(e){var t=e.ownerSVGElement,r=fs("svg",t&&t.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),o=e.cloneNode(!0),i;o.style.display="block",r.appendChild(o),Fa.appendChild(r);try{i=o.getBBox()}catch{}return r.removeChild(o),Fa.removeChild(r),i},$c=function(e,t){for(var r=t.length;r--;)if(e.hasAttribute(t[r]))return e.getAttribute(t[r])},Ah=function(e){var t,r;try{t=e.getBBox()}catch{t=qc(e),r=1}return t&&(t.width||t.height)||r||(t=qc(e)),t&&!t.width&&!t.x&&!t.y?{x:+$c(e,["x","cx","x1"])||0,y:+$c(e,["y","cy","y1"])||0,width:0,height:0}:t},jh=function(e){return!!(e.getCTM&&(!e.parentNode||e.ownerSVGElement)&&Ah(e))},Rr=function(e,t){if(t){var r=e.style,o;t in lr&&t!==ft&&(t=Ee),r.removeProperty?(o=t.substr(0,2),(o==="ms"||t.substr(0,6)==="webkit")&&(t="-"+t),r.removeProperty(o==="--"?t:t.replace(tl,"-$1").toLowerCase())):r.removeAttribute(t)}},Pr=function(e,t,r,o,i,s){var c=new gt(e._pt,t,r,0,1,s?xh:Sh);return e._pt=c,c.b=o,c.e=i,e._props.push(r),c},Qc={deg:1,rad:1,turn:1},B0={grid:1,flex:1},Tr=function a(e,t,r,o){var i=parseFloat(r)||0,s=(r+"").trim().substr((i+"").length)||"px",c=ta.style,d=P0.test(t),p=e.tagName.toLowerCase()==="svg",h=(p?"client":"offset")+(d?"Width":"Height"),m=100,f=o==="px",v=o==="%",P,y,A,V;if(o===s||!i||Qc[o]||Qc[s])return i;if(s!=="px"&&!f&&(i=a(e,t,r,"px")),V=e.getCTM&&jh(e),(v||s==="%")&&(lr[t]||~t.indexOf("adius")))return P=V?e.getBBox()[d?"width":"height"]:e[h],we(v?i/P*m:i/100*P);if(c[d?"width":"height"]=m+(f?s:o),y=o!=="rem"&&~t.indexOf("adius")||o==="em"&&e.appendChild&&!p?e:e.parentNode,V&&(y=(e.ownerSVGElement||{}).parentNode),(!y||y===br||!y.appendChild)&&(y=br.body),A=y._gsap,A&&v&&A.width&&d&&A.time===Pt.time&&!A.uncache)return we(i/A.width*m);if(v&&(t==="height"||t==="width")){var I=e.style[t];e.style[t]=m+o,P=e[h],I?e.style[t]=I:Rr(e,t)}else(v||s==="%")&&!B0[At(y,"display")]&&(c.position=At(e,"position")),y===e&&(c.position="static"),y.appendChild(ta),P=ta[h],y.removeChild(ta),c.position="absolute";return d&&v&&(A=aa(y),A.time=Pt.time,A.width=y[h]),we(f?P*i/m:P&&i?m/P*i:0)},ir=function(e,t,r,o){var i;return Js||ys(),t in $t&&t!=="transform"&&(t=$t[t],~t.indexOf(",")&&(t=t.split(",")[0])),lr[t]&&t!=="transform"?(i=Wo(e,o),i=t!=="transformOrigin"?i[t]:i.svg?i.origin:Ni(At(e,ft))+" "+i.zOrigin+"px"):(i=e.style[t],(!i||i==="auto"||o||~(i+"").indexOf("calc("))&&(i=Mi[t]&&Mi[t](e,t,r)||At(e,t)||Gp(e,t)||(t==="opacity"?1:0))),r&&!~(i+"").trim().indexOf(" ")?Tr(e,t,i,r)+r:i},U0=function(e,t,r,o){if(!r||r==="none"){var i=Oa(t,e,1),s=i&&At(e,i,1);s&&s!==r?(t=i,r=s):t==="borderColor"&&(r=At(e,"borderTopColor"))}var c=new gt(this._pt,e.style,t,0,1,fh),d=0,p=0,h,m,f,v,P,y,A,V,I,E,w,k;if(c.b=r,c.e=o,r+="",o+="",o.substring(0,6)==="var(--"&&(o=At(e,o.substring(4,o.indexOf(")")))),o==="auto"&&(y=e.style[t],e.style[t]=o,o=At(e,t)||o,y?e.style[t]=y:Rr(e,t)),h=[r,o],nh(h),r=h[0],o=h[1],f=r.match(Va)||[],k=o.match(Va)||[],k.length){for(;m=Va.exec(o);)A=m[0],I=o.substring(d,m.index),P?P=(P+1)%5:(I.substr(-5)==="rgba("||I.substr(-5)==="hsla(")&&(P=1),A!==(y=f[p++]||"")&&(v=parseFloat(y)||0,w=y.substr((v+"").length),A.charAt(1)==="="&&(A=Ia(v,A)+w),V=parseFloat(A),E=A.substr((V+"").length),d=Va.lastIndex-E.length,E||(E=E||Et.units[t]||w,d===o.length&&(o+=E,c.e+=E)),w!==E&&(v=Tr(e,t,y,E)||0),c._pt={_next:c._pt,p:I||p===1?I:",",s:v,c:V-v,m:P&&P<4||t==="zIndex"?Math.round:0});c.c=d<o.length?o.substring(d,o.length):""}else c.r=t==="display"&&o==="none"?xh:Sh;return Bp.test(o)&&(c.e=0),this._pt=c,c},Kc={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},M0=function(e){var t=e.split(" "),r=t[0],o=t[1]||"50%";return(r==="top"||r==="bottom"||o==="left"||o==="right")&&(e=r,r=o,o=e),t[0]=Kc[r]||r,t[1]=Kc[o]||o,t.join(" ")},N0=function(e,t){if(t.tween&&t.tween._time===t.tween._dur){var r=t.t,o=r.style,i=t.u,s=r._gsap,c,d,p;if(i==="all"||i===!0)o.cssText="",d=1;else for(i=i.split(","),p=i.length;--p>-1;)c=i[p],lr[c]&&(d=1,c=c==="transformOrigin"?ft:Ee),Rr(r,c);d&&(Rr(r,Ee),s&&(s.svg&&r.removeAttribute("transform"),o.scale=o.rotate=o.translate="none",Wo(r,1),s.uncache=1,bh(o)))}},Mi={clearProps:function(e,t,r,o,i){if(i.data!=="isFromStart"){var s=e._pt=new gt(e._pt,t,r,0,0,N0);return s.u=o,s.pr=-10,s.tween=i,e._props.push(r),1}}},No=[1,0,0,1,0,0],Eh={},_h=function(e){return e==="matrix(1, 0, 0, 1, 0, 0)"||e==="none"||!e},Yc=function(e){var t=At(e,Ee);return _h(t)?No:t.substr(7).match(Fp).map(we)},rl=function(e,t){var r=e._gsap||aa(e),o=e.style,i=Yc(e),s,c,d,p;return r.svg&&e.getAttribute("transform")?(d=e.transform.baseVal.consolidate().matrix,i=[d.a,d.b,d.c,d.d,d.e,d.f],i.join(",")==="1,0,0,1,0,0"?No:i):(i===No&&!e.offsetParent&&e!==Fa&&!r.svg&&(d=o.display,o.display="block",s=e.parentNode,(!s||!e.offsetParent&&!e.getBoundingClientRect().width)&&(p=1,c=e.nextElementSibling,Fa.appendChild(e)),i=Yc(e),d?o.display=d:Rr(e,"display"),p&&(c?s.insertBefore(e,c):s?s.appendChild(e):Fa.removeChild(e))),t&&i.length>6?[i[0],i[1],i[4],i[5],i[12],i[13]]:i)},vs=function(e,t,r,o,i,s){var c=e._gsap,d=i||rl(e,!0),p=c.xOrigin||0,h=c.yOrigin||0,m=c.xOffset||0,f=c.yOffset||0,v=d[0],P=d[1],y=d[2],A=d[3],V=d[4],I=d[5],E=t.split(" "),w=parseFloat(E[0])||0,k=parseFloat(E[1])||0,U,D,S,x;r?d!==No&&(D=v*A-P*y)&&(S=w*(A/D)+k*(-y/D)+(y*I-A*V)/D,x=w*(-P/D)+k*(v/D)-(v*I-P*V)/D,w=S,k=x):(U=Ah(e),w=U.x+(~E[0].indexOf("%")?w/100*U.width:w),k=U.y+(~(E[1]||E[0]).indexOf("%")?k/100*U.height:k)),o||o!==!1&&c.smooth?(V=w-p,I=k-h,c.xOffset=m+(V*v+I*y)-V,c.yOffset=f+(V*P+I*A)-I):c.xOffset=c.yOffset=0,c.xOrigin=w,c.yOrigin=k,c.smooth=!!o,c.origin=t,c.originIsAbsolute=!!r,e.style[ft]="0px 0px",s&&(Pr(s,c,"xOrigin",p,w),Pr(s,c,"yOrigin",h,k),Pr(s,c,"xOffset",m,c.xOffset),Pr(s,c,"yOffset",f,c.yOffset)),e.setAttribute("data-svg-origin",w+" "+k)},Wo=function(e,t){var r=e._gsap||new dh(e);if("x"in r&&!t&&!r.uncache)return r;var o=e.style,i=r.scaleX<0,s="px",c="deg",d=getComputedStyle(e),p=At(e,ft)||"0",h,m,f,v,P,y,A,V,I,E,w,k,U,D,S,x,C,_,R,j,W,H,ee,ne,ye,Ce,vt,Oe,at,ct,Te,ot;return h=m=f=y=A=V=I=E=w=0,v=P=1,r.svg=!!(e.getCTM&&jh(e)),d.translate&&((d.translate!=="none"||d.scale!=="none"||d.rotate!=="none")&&(o[Ee]=(d.translate!=="none"?"translate3d("+(d.translate+" 0 0").split(" ").slice(0,3).join(", ")+") ":"")+(d.rotate!=="none"?"rotate("+d.rotate+") ":"")+(d.scale!=="none"?"scale("+d.scale.split(" ").join(",")+") ":"")+(d[Ee]!=="none"?d[Ee]:"")),o.scale=o.rotate=o.translate="none"),D=rl(e,r.svg),r.svg&&(r.uncache?(ye=e.getBBox(),p=r.xOrigin-ye.x+"px "+(r.yOrigin-ye.y)+"px",ne=""):ne=!t&&e.getAttribute("data-svg-origin"),vs(e,ne||p,!!ne||r.originIsAbsolute,r.smooth!==!1,D)),k=r.xOrigin||0,U=r.yOrigin||0,D!==No&&(_=D[0],R=D[1],j=D[2],W=D[3],h=H=D[4],m=ee=D[5],D.length===6?(v=Math.sqrt(_*_+R*R),P=Math.sqrt(W*W+j*j),y=_||R?Ea(R,_)*ea:0,I=j||W?Ea(j,W)*ea+y:0,I&&(P*=Math.abs(Math.cos(I*Ba))),r.svg&&(h-=k-(k*_+U*j),m-=U-(k*R+U*W))):(ot=D[6],ct=D[7],vt=D[8],Oe=D[9],at=D[10],Te=D[11],h=D[12],m=D[13],f=D[14],S=Ea(ot,at),A=S*ea,S&&(x=Math.cos(-S),C=Math.sin(-S),ne=H*x+vt*C,ye=ee*x+Oe*C,Ce=ot*x+at*C,vt=H*-C+vt*x,Oe=ee*-C+Oe*x,at=ot*-C+at*x,Te=ct*-C+Te*x,H=ne,ee=ye,ot=Ce),S=Ea(-j,at),V=S*ea,S&&(x=Math.cos(-S),C=Math.sin(-S),ne=_*x-vt*C,ye=R*x-Oe*C,Ce=j*x-at*C,Te=W*C+Te*x,_=ne,R=ye,j=Ce),S=Ea(R,_),y=S*ea,S&&(x=Math.cos(S),C=Math.sin(S),ne=_*x+R*C,ye=H*x+ee*C,R=R*x-_*C,ee=ee*x-H*C,_=ne,H=ye),A&&Math.abs(A)+Math.abs(y)>359.9&&(A=y=0,V=180-V),v=we(Math.sqrt(_*_+R*R+j*j)),P=we(Math.sqrt(ee*ee+ot*ot)),S=Ea(H,ee),I=Math.abs(S)>2e-4?S*ea:0,w=Te?1/(Te<0?-Te:Te):0),r.svg&&(ne=e.getAttribute("transform"),r.forceCSS=e.setAttribute("transform","")||!_h(At(e,Ee)),ne&&e.setAttribute("transform",ne))),Math.abs(I)>90&&Math.abs(I)<270&&(i?(v*=-1,I+=y<=0?180:-180,y+=y<=0?180:-180):(P*=-1,I+=I<=0?180:-180)),t=t||r.uncache,r.x=h-((r.xPercent=h&&(!t&&r.xPercent||(Math.round(e.offsetWidth/2)===Math.round(-h)?-50:0)))?e.offsetWidth*r.xPercent/100:0)+s,r.y=m-((r.yPercent=m&&(!t&&r.yPercent||(Math.round(e.offsetHeight/2)===Math.round(-m)?-50:0)))?e.offsetHeight*r.yPercent/100:0)+s,r.z=f+s,r.scaleX=we(v),r.scaleY=we(P),r.rotation=we(y)+c,r.rotationX=we(A)+c,r.rotationY=we(V)+c,r.skewX=I+c,r.skewY=E+c,r.transformPerspective=w+s,(r.zOrigin=parseFloat(p.split(" ")[2])||!t&&r.zOrigin||0)&&(o[ft]=Ni(p)),r.xOffset=r.yOffset=0,r.force3D=Et.force3D,r.renderTransform=r.svg?G0:Dh?Ch:W0,r.uncache=0,r},Ni=function(e){return(e=e.split(" "))[0]+" "+e[1]},Qn=function(e,t,r){var o=tt(t);return we(parseFloat(t)+parseFloat(Tr(e,"x",r+"px",o)))+o},W0=function(e,t){t.z="0px",t.rotationY=t.rotationX="0deg",t.force3D=0,Ch(e,t)},Yr="0deg",So="0px",Jr=") ",Ch=function(e,t){var r=t||this,o=r.xPercent,i=r.yPercent,s=r.x,c=r.y,d=r.z,p=r.rotation,h=r.rotationY,m=r.rotationX,f=r.skewX,v=r.skewY,P=r.scaleX,y=r.scaleY,A=r.transformPerspective,V=r.force3D,I=r.target,E=r.zOrigin,w="",k=V==="auto"&&e&&e!==1||V===!0;if(E&&(m!==Yr||h!==Yr)){var U=parseFloat(h)*Ba,D=Math.sin(U),S=Math.cos(U),x;U=parseFloat(m)*Ba,x=Math.cos(U),s=Qn(I,s,D*x*-E),c=Qn(I,c,-Math.sin(U)*-E),d=Qn(I,d,S*x*-E+E)}A!==So&&(w+="perspective("+A+Jr),(o||i)&&(w+="translate("+o+"%, "+i+"%) "),(k||s!==So||c!==So||d!==So)&&(w+=d!==So||k?"translate3d("+s+", "+c+", "+d+") ":"translate("+s+", "+c+Jr),p!==Yr&&(w+="rotate("+p+Jr),h!==Yr&&(w+="rotateY("+h+Jr),m!==Yr&&(w+="rotateX("+m+Jr),(f!==Yr||v!==Yr)&&(w+="skew("+f+", "+v+Jr),(P!==1||y!==1)&&(w+="scale("+P+", "+y+Jr),I.style[Ee]=w||"translate(0, 0)"},G0=function(e,t){var r=t||this,o=r.xPercent,i=r.yPercent,s=r.x,c=r.y,d=r.rotation,p=r.skewX,h=r.skewY,m=r.scaleX,f=r.scaleY,v=r.target,P=r.xOrigin,y=r.yOrigin,A=r.xOffset,V=r.yOffset,I=r.forceCSS,E=parseFloat(s),w=parseFloat(c),k,U,D,S,x;d=parseFloat(d),p=parseFloat(p),h=parseFloat(h),h&&(h=parseFloat(h),p+=h,d+=h),d||p?(d*=Ba,p*=Ba,k=Math.cos(d)*m,U=Math.sin(d)*m,D=Math.sin(d-p)*-f,S=Math.cos(d-p)*f,p&&(h*=Ba,x=Math.tan(p-h),x=Math.sqrt(1+x*x),D*=x,S*=x,h&&(x=Math.tan(h),x=Math.sqrt(1+x*x),k*=x,U*=x)),k=we(k),U=we(U),D=we(D),S=we(S)):(k=m,S=f,U=D=0),(E&&!~(s+"").indexOf("px")||w&&!~(c+"").indexOf("px"))&&(E=Tr(v,"x",s,"px"),w=Tr(v,"y",c,"px")),(P||y||A||V)&&(E=we(E+P-(P*k+y*D)+A),w=we(w+y-(P*U+y*S)+V)),(o||i)&&(x=v.getBBox(),E=we(E+o/100*x.width),w=we(w+i/100*x.height)),x="matrix("+k+","+U+","+D+","+S+","+E+","+w+")",v.setAttribute("transform",x),I&&(v.style[Ee]=x)},z0=function(e,t,r,o,i){var s=360,c=Xe(i),d=parseFloat(i)*(c&&~i.indexOf("rad")?ea:1),p=d-o,h=o+p+"deg",m,f;return c&&(m=i.split("_")[1],m==="short"&&(p%=s,p!==p%(s/2)&&(p+=p<0?s:-s)),m==="cw"&&p<0?p=(p+s*Xc)%s-~~(p/s)*s:m==="ccw"&&p>0&&(p=(p-s*Xc)%s-~~(p/s)*s)),e._pt=f=new gt(e._pt,t,r,o,p,A0),f.e=h,f.u="deg",e._props.push(r),f},Jc=function(e,t){for(var r in t)e[r]=t[r];return e},O0=function(e,t,r){var o=Jc({},r._gsap),i="perspective,force3D,transformOrigin,svgOrigin",s=r.style,c,d,p,h,m,f,v,P;o.svg?(p=r.getAttribute("transform"),r.setAttribute("transform",""),s[Ee]=t,c=Wo(r,1),Rr(r,Ee),r.setAttribute("transform",p)):(p=getComputedStyle(r)[Ee],s[Ee]=t,c=Wo(r,1),s[Ee]=p);for(d in lr)p=o[d],h=c[d],p!==h&&i.indexOf(d)<0&&(v=tt(p),P=tt(h),m=v!==P?Tr(r,d,p,P):parseFloat(p),f=parseFloat(h),e._pt=new gt(e._pt,c,d,m,f-m,gs),e._pt.u=P||0,e._props.push(d));Jc(c,o)};mt("padding,margin,Width,Radius",function(a,e){var t="Top",r="Right",o="Bottom",i="Left",s=(e<3?[t,r,o,i]:[t+i,t+r,o+r,o+i]).map(function(c){return e<2?a+c:"border"+c+a});Mi[e>1?"border"+a:a]=function(c,d,p,h,m){var f,v;if(arguments.length<4)return f=s.map(function(P){return ir(c,P,p)}),v=f.join(" "),v.split(f[0]).length===5?f[0]:v;f=(h+"").split(" "),v={},s.forEach(function(P,y){return v[P]=f[y]=f[y]||f[(y-1)/2|0]}),c.init(d,v,m)}});var kh={name:"css",register:ys,targetTest:function(e){return e.style&&e.nodeType},init:function(e,t,r,o,i){var s=this._props,c=e.style,d=r.vars.startAt,p,h,m,f,v,P,y,A,V,I,E,w,k,U,D,S,x;Js||ys(),this.styles=this.styles||Ph(e),S=this.styles.props,this.tween=r;for(y in t)if(y!=="autoRound"&&(h=t[y],!(bt[y]&&ph(y,t,r,o,e,i)))){if(v=typeof h,P=Mi[y],v==="function"&&(h=h.call(r,o,e,i),v=typeof h),v==="string"&&~h.indexOf("random(")&&(h=Bo(h)),P)P(this,e,y,h,r)&&(D=1);else if(y.substr(0,2)==="--")p=(getComputedStyle(e).getPropertyValue(y)+"").trim(),h+="",jr.lastIndex=0,jr.test(p)||(A=tt(p),V=tt(h),V?A!==V&&(p=Tr(e,y,p,V)+V):A&&(h+=A)),this.add(c,"setProperty",p,h,o,i,0,0,y),s.push(y),S.push(y,0,c[y]);else if(v!=="undefined"){if(d&&y in d?(p=typeof d[y]=="function"?d[y].call(r,o,e,i):d[y],Xe(p)&&~p.indexOf("random(")&&(p=Bo(p)),tt(p+"")||p==="auto"||(p+=Et.units[y]||tt(ir(e,y))||""),(p+"").charAt(1)==="="&&(p=ir(e,y))):p=ir(e,y),f=parseFloat(p),I=v==="string"&&h.charAt(1)==="="&&h.substr(0,2),I&&(h=h.substr(2)),m=parseFloat(h),y in $t&&(y==="autoAlpha"&&(f===1&&ir(e,"visibility")==="hidden"&&m&&(f=0),S.push("visibility",0,c.visibility),Pr(this,c,"visibility",f?"inherit":"hidden",m?"inherit":"hidden",!m)),y!=="scale"&&y!=="transform"&&(y=$t[y],~y.indexOf(",")&&(y=y.split(",")[0]))),E=y in lr,E){if(this.styles.save(y),x=h,v==="string"&&h.substring(0,6)==="var(--"){if(h=At(e,h.substring(4,h.indexOf(")"))),h.substring(0,5)==="calc("){var C=e.style.perspective;e.style.perspective=h,h=At(e,"perspective"),C?e.style.perspective=C:Rr(e,"perspective")}m=parseFloat(h)}if(w||(k=e._gsap,k.renderTransform&&!t.parseTransform||Wo(e,t.parseTransform),U=t.smoothOrigin!==!1&&k.smooth,w=this._pt=new gt(this._pt,c,Ee,0,1,k.renderTransform,k,0,-1),w.dep=1),y==="scale")this._pt=new gt(this._pt,k,"scaleY",k.scaleY,(I?Ia(k.scaleY,I+m):m)-k.scaleY||0,gs),this._pt.u=0,s.push("scaleY",y),y+="X";else if(y==="transformOrigin"){S.push(ft,0,c[ft]),h=M0(h),k.svg?vs(e,h,0,U,0,this):(V=parseFloat(h.split(" ")[2])||0,V!==k.zOrigin&&Pr(this,k,"zOrigin",k.zOrigin,V),Pr(this,c,y,Ni(p),Ni(h)));continue}else if(y==="svgOrigin"){vs(e,h,1,U,0,this);continue}else if(y in Eh){z0(this,k,y,f,I?Ia(f,I+h):h);continue}else if(y==="smoothOrigin"){Pr(this,k,"smooth",k.smooth,h);continue}else if(y==="force3D"){k[y]=h;continue}else if(y==="transform"){O0(this,h,e);continue}}else y in c||(y=Oa(y)||y);if(E||(m||m===0)&&(f||f===0)&&!D0.test(h)&&y in c)A=(p+"").substr((f+"").length),m||(m=0),V=tt(h)||(y in Et.units?Et.units[y]:A),A!==V&&(f=Tr(e,y,p,V)),this._pt=new gt(this._pt,E?k:c,y,f,(I?Ia(f,I+m):m)-f,!E&&(V==="px"||y==="zIndex")&&t.autoRound!==!1?_0:gs),this._pt.u=V||0,E&&x!==h?(this._pt.b=p,this._pt.e=x,this._pt.r=E0):A!==V&&V!=="%"&&(this._pt.b=p,this._pt.r=j0);else if(y in c)U0.call(this,e,y,p,I?I+h:h);else if(y in e)this.add(e,y,p||e[y],I?I+h:h,o,i);else if(y!=="parseTransform"){Os(y,h);continue}E||(y in c?S.push(y,0,c[y]):typeof e[y]=="function"?S.push(y,2,e[y]()):S.push(y,1,p||e[y])),s.push(y)}}D&&yh(this)},render:function(e,t){if(t.tween._time||!el())for(var r=t._pt;r;)r.r(e,r.d),r=r._next;else t.styles.revert()},get:ir,aliases:$t,getSetter:function(e,t,r){var o=$t[t];return o&&o.indexOf(",")<0&&(t=o),t in lr&&t!==ft&&(e._gsap.x||ir(e,"x"))?r&&Hc===r?t==="scale"?T0:R0:(Hc=r||{})&&(t==="scale"?V0:w0):e.style&&!Ws(e.style[t])?C0:~t.indexOf("-")?k0:Ks(e,t)},core:{_removeProperty:Rr,_getMatrix:rl}};yt.utils.checkPrefix=Oa;yt.core.getStyleSaver=Ph;(function(a,e,t,r){var o=mt(a+","+e+","+t,function(i){lr[i]=1});mt(e,function(i){Et.units[i]="deg",Eh[i]=1}),$t[o[13]]=a+","+e,mt(r,function(i){var s=i.split(":");$t[s[1]]=o[s[0]]})})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent","rotation,rotationX,rotationY,skewX,skewY","transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective","0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY");mt("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(a){Et.units[a]="px"});yt.registerPlugin(kh);var _a=yt.registerPlugin(kh)||yt;_a.core.Tween;const L0={id:"drive_a",name:"DRIVE (A:)",type:"drive",items:[{id:"folder_mktdalpd",name:"Tushar",type:"folder",items:[{id:"file_mktok9mnxtzu2",name:"which_cloud_cert.max-2000x2000.jpg",type:"file",url:"/assets/explorer/drive_a/1769342032320_which_cloud_cert.max-2000x2000.jpg",mime:"image/jpeg",size:1870902,timestamp:"2026-01-25T11:53:52.350Z"},{id:"file_mlj3mp5u304zm",name:"download.png",type:"file",url:"/assets/explorer/drive_a/1770878994402_download.png",mime:"image/png",size:7351194,timestamp:"2026-02-12T06:49:54.429Z"},{id:"file_mlewv0u2if0l7",name:"timetable.jpeg",type:"file",url:"/assets/explorer/drive_a/1770625760784_timetable.jpeg",mime:"image/jpeg",size:161697,timestamp:"2026-02-09T08:29:20.802Z"}],timestamp:"2026-01-25T06:38:25.634Z"}],icon:"d:ssd"},H0=JSON.parse(`[{"id":"folder_mlv79xny","name":"DIPLOMA 2023","type":"folder","items":[{"id":"folder_mlv7jngn","name":"SEM-1","type":"folder","items":[{"id":"folder_mlv92hvm","name":"Diagrams ","type":"folder","items":[{"id":"file_mlv9gviknqg1x","name":"707c4f68-74de-4e21-9df5-ad89599cdcea.jpg","type":"file","url":"/assets/explorer/thispc/1771614394508_707c4f68-74de-4e21-9df5-ad89599cdcea.jpg","mime":"image/jpeg","size":186314,"timestamp":"2026-02-20T19:06:34.514Z"},{"id":"file_mlv9gvmbu0n4b","name":"a93edac9-a0ea-40f6-93bc-e2d83e892001.jpg","type":"file","url":"/assets/explorer/thispc/1771614394644_a93edac9-a0ea-40f6-93bc-e2d83e892001.jpg","mime":"image/jpeg","size":45938,"timestamp":"2026-02-20T19:06:34.660Z"},{"id":"file_mlv9gvseil0aw","name":"governanceStructure.png","type":"file","url":"/assets/explorer/thispc/1771614394863_governanceStructure.png","mime":"image/png","size":52805,"timestamp":"2026-02-20T19:06:34.892Z"},{"id":"file_mlv9gvvfkks1y","name":"WhatsApp Image 2023-09-28 at 00.02.54_64eb758f.jpg","type":"file","url":"/assets/explorer/thispc/1771614394971_WhatsApp_Image_2023-09-28_at_00.02.54_64eb758f.jpg","mime":"image/jpeg","size":26838,"timestamp":"2026-02-20T19:06:34.978Z"},{"id":"file_mlv9gvy1jcxq9","name":"WhatsApp Image 2023-09-28 at 00.05.28_b009c228.jpg","type":"file","url":"/assets/explorer/thispc/1771614395066_WhatsApp_Image_2023-09-28_at_00.05.28_b009c228.jpg","mime":"image/jpeg","size":31180,"timestamp":"2026-02-20T19:06:35.070Z"},{"id":"file_mlv9gw146x2x6","name":"WhatsApp Image 2023-09-28 at 00.09.28_593111ad.jpg","type":"file","url":"/assets/explorer/thispc/1771614395180_WhatsApp_Image_2023-09-28_at_00.09.28_593111ad.jpg","mime":"image/jpeg","size":48034,"timestamp":"2026-02-20T19:06:35.207Z"},{"id":"file_mlv9gw3z65ggq","name":"WhatsApp Image 2023-09-28 at 00.42.08_18065723.jpg","type":"file","url":"/assets/explorer/thispc/1771614395279_WhatsApp_Image_2023-09-28_at_00.42.08_18065723.jpg","mime":"image/jpeg","size":26960,"timestamp":"2026-02-20T19:06:35.283Z"},{"id":"file_mlv9gw6nmt243","name":"WhatsApp Image 2023-09-28 at 00.42.08_e45a89f4.jpg","type":"file","url":"/assets/explorer/thispc/1771614395375_WhatsApp_Image_2023-09-28_at_00.42.08_e45a89f4.jpg","mime":"image/jpeg","size":26960,"timestamp":"2026-02-20T19:06:35.379Z"},{"id":"file_mlv9gw9nhlhbk","name":"WhatsApp Image 2023-09-28 at 00.42.19_809c17fb.jpg","type":"file","url":"/assets/explorer/thispc/1771614395496_WhatsApp_Image_2023-09-28_at_00.42.19_809c17fb.jpg","mime":"image/jpeg","size":86026,"timestamp":"2026-02-20T19:06:35.508Z"},{"id":"file_mlv9gwd6wnlg8","name":"WhatsApp Image 2023-09-28 at 00.47.40_81c579f0.jpg","type":"file","url":"/assets/explorer/thispc/1771614395627_WhatsApp_Image_2023-09-28_at_00.47.40_81c579f0.jpg","mime":"image/jpeg","size":44606,"timestamp":"2026-02-20T19:06:35.634Z"}],"timestamp":"2026-02-20T18:55:23.652Z","icon":"f:blue"},{"id":"file_mlv93c09fx8vx","name":"tarish view.jpg","type":"file","url":"/assets/explorer/thispc/1771613762702_tarish_view.jpg","mime":"image/jpeg","size":97346,"timestamp":"2026-02-20T18:56:02.721Z"},{"id":"file_mlv93jrx6u7ah","name":"diplomaitmorbi.png (First time starting making webiste)","type":"file","url":"/assets/explorer/thispc/1771613772770_diplomaitmorbi.png","mime":"image/png","size":1728724,"timestamp":"2026-02-20T18:56:12.802Z"},{"id":"folder_mlv97a6j","name":"English","type":"folder","items":[{"id":"file_mlv9dyd5szgou","name":"5. Modal Auxiliary_Practice.pdf","type":"file","url":"/assets/explorer/thispc/1771614258263_5._Modal_Auxiliary_Practice.pdf","mime":"application/pdf","size":158645,"timestamp":"2026-02-20T19:04:18.366Z"},{"id":"file_mlv9dz7cnqjnh","name":"4300002_syllabus-text-1.pdf","type":"file","url":"/assets/explorer/thispc/1771614259320_4300002_syllabus-text-1.pdf","mime":"application/pdf","size":4588067,"timestamp":"2026-02-20T19:04:19.348Z"},{"id":"file_mlv9dzfat8gkc","name":"after-twenty-years.pdf","type":"file","url":"/assets/explorer/thispc/1771614259636_after-twenty-years.pdf","mime":"application/pdf","size":68421,"timestamp":"2026-02-20T19:04:19.644Z"},{"id":"file_mlv9dzobfkgc8","name":"after-twenty-years_notes.pdf","type":"file","url":"/assets/explorer/thispc/1771614259933_after-twenty-years_notes.pdf","mime":"application/pdf","size":321997,"timestamp":"2026-02-20T19:04:19.939Z"},{"id":"file_mlv9dzsb63n8k","name":"answer-key_SUMMER 2022.pdf","type":"file","url":"/assets/explorer/thispc/1771614260082_answer-key_SUMMER_2022.pdf","mime":"application/pdf","size":282861,"timestamp":"2026-02-20T19:04:20.085Z"},{"id":"file_mlv9dzvlmy0fz","name":"answer-key_WINTER 2022.pdf","type":"file","url":"/assets/explorer/thispc/1771614260193_answer-key_WINTER_2022.pdf","mime":"application/pdf","size":249241,"timestamp":"2026-02-20T19:04:20.203Z"},{"id":"file_mlv9e0bed4185","name":"ENGLISH manual.pdf","type":"file","url":"/assets/explorer/thispc/1771614260763_ENGLISH_manual.pdf","mime":"application/pdf","size":7279676,"timestamp":"2026-02-20T19:04:20.787Z"},{"id":"file_mlv9e0e7yxqeg","name":"English micro project (4300002).pdf","type":"file","url":"/assets/explorer/thispc/1771614260863_English_micro_project__4300002_.pdf","mime":"application/pdf","size":422545,"timestamp":"2026-02-20T19:04:20.866Z"},{"id":"file_mlv9e70axqk5m","name":"ENGLISH_ diplomaitmorbi.netlify.app.pdf","type":"file","url":"/assets/explorer/thispc/1771614269438_ENGLISH__diplomaitmorbi.netlify.app.pdf","mime":"application/pdf","size":103325793,"timestamp":"2026-02-20T19:04:30.317Z"},{"id":"file_mlv9e83xzg9jx","name":"mcqs_letter-email 50- mcq.pdf","type":"file","url":"/assets/explorer/thispc/1771614270864_mcqs_letter-email_50-_mcq.pdf","mime":"application/pdf","size":314609,"timestamp":"2026-02-20T19:04:30.894Z"},{"id":"file_mlv9e87vpsumu","name":"modal-auxiliary-1.pdf","type":"file","url":"/assets/explorer/thispc/1771614271023_modal-auxiliary-1.pdf","mime":"application/pdf","size":163016,"timestamp":"2026-02-20T19:04:31.059Z"},{"id":"file_mlv9e8bmqwhpg","name":"Stopping by Woods on a Snowy Evening by Robert… _ Poetry Foundation.pdf","type":"file","url":"/assets/explorer/thispc/1771614271138_Stopping_by_Woods_on_a_Snowy_Evening_by_Robert____Poetry_Foundation.pdf","mime":"application/pdf","size":74455,"timestamp":"2026-02-20T19:04:31.154Z"},{"id":"file_mlv9e8emtyf3x","name":"stopping-by-woods...pdf","type":"file","url":"/assets/explorer/thispc/1771614271247_stopping-by-woods...pdf","mime":"application/pdf","size":231164,"timestamp":"2026-02-20T19:04:31.286Z"},{"id":"file_mlv9e8i4r8mkj","name":"SUMMER 2022.pdf","type":"file","url":"/assets/explorer/thispc/1771614271372_SUMMER_2022.pdf","mime":"application/pdf","size":240009,"timestamp":"2026-02-20T19:04:31.424Z"},{"id":"file_mlv9e8pjkzmem","name":"the-leopard.pdf","type":"file","url":"/assets/explorer/thispc/1771614271639_the-leopard.pdf","mime":"application/pdf","size":227594,"timestamp":"2026-02-20T19:04:31.658Z"},{"id":"file_mlv9e8u50ix3i","name":"where-the-mind-is-without-fear.pdf","type":"file","url":"/assets/explorer/thispc/1771614271805_where-the-mind-is-without-fear.pdf","mime":"application/pdf","size":252675,"timestamp":"2026-02-20T19:04:31.837Z"},{"id":"file_mlv9e8x2cwlso","name":"WINTER 2021.pdf","type":"file","url":"/assets/explorer/thispc/1771614271910_WINTER_2021.pdf","mime":"application/pdf","size":228166,"timestamp":"2026-02-20T19:04:31.916Z"},{"id":"file_mlv9e8zy74ei2","name":"WINTER 2022.pdf","type":"file","url":"/assets/explorer/thispc/1771614272014_WINTER_2022.pdf","mime":"application/pdf","size":231797,"timestamp":"2026-02-20T19:04:32.020Z"}],"timestamp":"2026-02-20T18:59:06.956Z"},{"id":"folder_mlv97h2l","name":"EXAM-papers","type":"folder","items":[{"id":"folder_mlv9ervt","name":"GTU","type":"folder","items":[{"id":"file_mlv9f98kjzwuh","name":"4300001 maths.pdf","type":"file","url":"/assets/explorer/thispc/1771614318986_4300001__maths.pdf","mime":"application/pdf","size":471456,"timestamp":"2026-02-20T19:05:19.006Z"},{"id":"file_mlv9f9bzoh0kt","name":"4300002.pdf","type":"file","url":"/assets/explorer/thispc/1771614319104_4300002.pdf","mime":"application/pdf","size":231797,"timestamp":"2026-02-20T19:05:19.108Z"},{"id":"file_mlv9f9glfhfso","name":"4311601.pdf","type":"file","url":"/assets/explorer/thispc/1771614319269_4311601.pdf","mime":"application/pdf","size":646637,"timestamp":"2026-02-20T19:05:19.273Z"},{"id":"file_mlv9f9jvbwi9h","name":"4311602 (1).pdf","type":"file","url":"/assets/explorer/thispc/1771614319387_4311602__1_.pdf","mime":"application/pdf","size":377420,"timestamp":"2026-02-20T19:05:19.396Z"}],"timestamp":"2026-02-20T19:04:56.490Z"},{"id":"folder_mlv9eygl","name":"mid-1","type":"folder","items":[{"id":"file_mlv9fivytvex5","name":"communication skills in English -Tushar.pdf","type":"file","url":"/assets/explorer/thispc/1771614331498_communication_skills_in_English_-Tushar.pdf","mime":"application/pdf","size":318346,"timestamp":"2026-02-20T19:05:31.529Z"},{"id":"file_mlv9fj4b46ype","name":"IITS - Tushar.pdf","type":"file","url":"/assets/explorer/thispc/1771614331787_IITS_-_Tushar.pdf","mime":"application/pdf","size":334628,"timestamp":"2026-02-20T19:05:31.793Z"},{"id":"file_mlv9fj7mno5sa","name":"python - tushar.pdf","type":"file","url":"/assets/explorer/thispc/1771614331906_python_-_tushar.pdf","mime":"application/pdf","size":572370,"timestamp":"2026-02-20T19:05:31.910Z"}],"timestamp":"2026-02-20T19:05:05.013Z"},{"id":"folder_mlv9f11c","name":"mid-2","type":"folder","items":[{"id":"file_mlv9fq4qh7gsg","name":"English mid-2.pdf","type":"file","url":"/assets/explorer/thispc/1771614340876_English_mid-2.pdf","mime":"application/pdf","size":365331,"timestamp":"2026-02-20T19:05:40.893Z"},{"id":"file_mlv9fq8pni42v","name":"IITS MID -2.pdf","type":"file","url":"/assets/explorer/thispc/1771614341017_IITS_MID_-2.pdf","mime":"application/pdf","size":416156,"timestamp":"2026-02-20T19:05:41.020Z"},{"id":"file_mlv9fqc5igp9h","name":"maths. mid -2.pdf","type":"file","url":"/assets/explorer/thispc/1771614341141_maths.__mid_-2.pdf","mime":"application/pdf","size":341191,"timestamp":"2026-02-20T19:05:41.143Z"},{"id":"file_mlv9fqhpvi6et","name":"Python , mid -2.pdf","type":"file","url":"/assets/explorer/thispc/1771614341345_Python___mid_-2.pdf","mime":"application/pdf","size":854528,"timestamp":"2026-02-20T19:05:41.367Z"}],"timestamp":"2026-02-20T19:05:08.352Z"}],"timestamp":"2026-02-20T18:59:15.885Z"},{"id":"folder_mlv97n7b","name":"IITS","type":"folder","items":[{"id":"file_mlv9ha5trx6pr","name":"iits assignment.pdf","type":"file","url":"/assets/explorer/thispc/1771614413491_iits_assignment.pdf","mime":"application/pdf","size":675947,"timestamp":"2026-02-20T19:06:53.525Z"},{"id":"file_mlv9hafwr1ial","name":"iits labmanual.pdf","type":"file","url":"/assets/explorer/thispc/1771614413852_iits_labmanual.pdf","mime":"application/pdf","size":2300741,"timestamp":"2026-02-20T19:06:53.857Z"},{"id":"file_mlv9hbg5n8sn3","name":"IITS_Diplomaitmorbi.netlify.app.pdf","type":"file","url":"/assets/explorer/thispc/1771614415157_IITS_Diplomaitmorbi.netlify.app.pdf","mime":"application/pdf","size":48222817,"timestamp":"2026-02-20T19:06:55.801Z"},{"id":"file_mlv9hc6w4a4ql","name":"IITS=2023=MICRO PROJECT.pdf","type":"file","url":"/assets/explorer/thispc/1771614416120_IITS_2023_MICRO_PROJECT.pdf","mime":"application/pdf","size":467692,"timestamp":"2026-02-20T19:06:56.125Z"},{"id":"file_mlv9hcdny7q93","name":"iits=ch5=ppt.pdf","type":"file","url":"/assets/explorer/thispc/1771614416363_iits_ch5_ppt.pdf","mime":"application/pdf","size":5418019,"timestamp":"2026-02-20T19:06:56.372Z"},{"id":"file_mlv9hchihaoyb","name":"IITS-Unit=1.pdf","type":"file","url":"/assets/explorer/thispc/1771614416502_IITS-Unit_1.pdf","mime":"application/pdf","size":2117604,"timestamp":"2026-02-20T19:06:56.506Z"},{"id":"file_mlv9hck3w2s9g","name":"IITS-Unit=3=ENGLISH.docx","type":"file","url":"/assets/explorer/thispc/1771614416595_IITS-Unit_3_ENGLISH.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":886687,"timestamp":"2026-02-20T19:06:56.598Z"},{"id":"file_mlv9hcmm0ar68","name":"IITS-Unit=3=GUJARATI Final.docx","type":"file","url":"/assets/explorer/thispc/1771614416686_IITS-Unit_3_GUJARATI_Final.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":898848,"timestamp":"2026-02-20T19:06:56.690Z"},{"id":"file_mlv9hcvg3g8yt","name":"IITS-Unit=4=English.pdf","type":"file","url":"/assets/explorer/thispc/1771614417004_IITS-Unit_4_English.pdf","mime":"application/pdf","size":5964041,"timestamp":"2026-02-20T19:06:57.022Z"},{"id":"file_mlv9hd4mpy9rk","name":"IITS-Unit=4=GUJARATI=.pdf","type":"file","url":"/assets/explorer/thispc/1771614417334_IITS-Unit_4_GUJARATI_.pdf","mime":"application/pdf","size":5898650,"timestamp":"2026-02-20T19:06:57.344Z"},{"id":"file_mlv9hd7rmq9rh","name":"IITS-Unit=6=English.pdf","type":"file","url":"/assets/explorer/thispc/1771614417447_IITS-Unit_6_English.pdf","mime":"application/pdf","size":922163,"timestamp":"2026-02-20T19:06:57.450Z"}],"timestamp":"2026-02-20T18:59:23.831Z"},{"id":"folder_mlv97yxt","name":"Math's","type":"folder","items":[{"id":"file_mlv9hpmpxgt9p","name":"Maths_Diplomaitmorbi.netlify.app.pdf","type":"file","url":"/assets/explorer/thispc/1771614433537_Maths_Diplomaitmorbi.netlify.app.pdf","mime":"application/pdf","size":65253338,"timestamp":"2026-02-20T19:07:13.665Z"},{"id":"file_mlv9hpx5yqj1h","name":"Projects of Mathematics (4300001).pdf","type":"file","url":"/assets/explorer/thispc/1771614433914_Projects_of_Mathematics__4300001_.pdf","mime":"application/pdf","size":149671,"timestamp":"2026-02-20T19:07:13.915Z"},{"id":"file_mlv9hpyukdlif","name":"Tutorail 10-11-12 Coordinate Geometry.pdf","type":"file","url":"/assets/explorer/thispc/1771614433974_Tutorail_10-11-12_Coordinate_Geometry.pdf","mime":"application/pdf","size":244578,"timestamp":"2026-02-20T19:07:13.976Z"},{"id":"file_mlv9hq0oc9uxp","name":"Tutorial 1,2,3.pdf","type":"file","url":"/assets/explorer/thispc/1771614434040_Tutorial_1_2_3.pdf","mime":"application/pdf","size":528956,"timestamp":"2026-02-20T19:07:14.050Z"},{"id":"file_mlv9hq28m1l22","name":"Tutorial 13,14.pdf","type":"file","url":"/assets/explorer/thispc/1771614434096_Tutorial_13_14.pdf","mime":"application/pdf","size":148859,"timestamp":"2026-02-20T19:07:14.098Z"},{"id":"file_mlv9hq6502wae","name":"Tutorial-2 23-11-22.pdf","type":"file","url":"/assets/explorer/thispc/1771614434237_Tutorial-2_23-11-22.pdf","mime":"application/pdf","size":2401690,"timestamp":"2026-02-20T19:07:14.243Z"}],"timestamp":"2026-02-20T18:59:39.041Z"},{"id":"folder_mlv9892j","name":"Python","type":"folder","items":[{"id":"folder_mlv9ia3s","name":"PPT","type":"folder","items":[{"id":"file_mlv9j039pnb6n","name":"ch--2.pdf","type":"file","url":"/assets/explorer/thispc/1771614493749_ch--2.pdf","mime":"application/pdf","size":2535923,"timestamp":"2026-02-20T19:08:13.764Z"},{"id":"file_mlv9j08oc2xhl","name":"ch--3.pdf","type":"file","url":"/assets/explorer/thispc/1771614493945_ch--3.pdf","mime":"application/pdf","size":984976,"timestamp":"2026-02-20T19:08:13.953Z"},{"id":"file_mlv9j0dvvfsxu","name":"ch--4.pdf","type":"file","url":"/assets/explorer/thispc/1771614494131_ch--4.pdf","mime":"application/pdf","size":759935,"timestamp":"2026-02-20T19:08:14.135Z"},{"id":"file_mlv9j0h8u31v0","name":"ch--5.pdf","type":"file","url":"/assets/explorer/thispc/1771614494252_ch--5.pdf","mime":"application/pdf","size":726727,"timestamp":"2026-02-20T19:08:14.255Z"},{"id":"file_mlv9j0l93ghls","name":"ch--1.pdf","type":"file","url":"/assets/explorer/thispc/1771614494397_ch--1.pdf","mime":"application/pdf","size":1889550,"timestamp":"2026-02-20T19:08:14.416Z"}],"timestamp":"2026-02-20T19:07:40.072Z"},{"id":"folder_mlv9iezh","name":"Practicals","type":"folder","items":[{"id":"file_mlv9isadpd39i","name":"prectical-12.py","type":"file","url":"/assets/explorer/thispc/1771614483641_prectical-12.py","mime":"text/x-python","size":352,"timestamp":"2026-02-20T19:08:03.679Z"},{"id":"file_mlv9ismmdbhq2","name":"prectical-13.py","type":"file","url":"/assets/explorer/thispc/1771614484078_prectical-13.py","mime":"text/x-python","size":303,"timestamp":"2026-02-20T19:08:04.121Z"},{"id":"file_mlv9isrnge2z2","name":"prectical-14.py","type":"file","url":"/assets/explorer/thispc/1771614484259_prectical-14.py","mime":"text/x-python","size":578,"timestamp":"2026-02-20T19:08:04.266Z"},{"id":"file_mlv9isx5y6mjt","name":"prectical-16.py","type":"file","url":"/assets/explorer/thispc/1771614484459_prectical-16.py","mime":"text/x-python","size":274,"timestamp":"2026-02-20T19:08:04.461Z"},{"id":"file_mlv9iszw8o34j","name":"prectical-17.py","type":"file","url":"/assets/explorer/thispc/1771614484556_prectical-17.py","mime":"text/x-python","size":299,"timestamp":"2026-02-20T19:08:04.558Z"},{"id":"file_mlv9it1x1rh24","name":"prectical-18.py","type":"file","url":"/assets/explorer/thispc/1771614484630_prectical-18.py","mime":"text/x-python","size":1039,"timestamp":"2026-02-20T19:08:04.632Z"},{"id":"file_mlv9it41g2wk9","name":"prectical-19.py","type":"file","url":"/assets/explorer/thispc/1771614484705_prectical-19.py","mime":"text/x-python","size":185,"timestamp":"2026-02-20T19:08:04.708Z"},{"id":"file_mlv9it8a6vhdm","name":"prectical-20.py","type":"file","url":"/assets/explorer/thispc/1771614484858_prectical-20.py","mime":"text/x-python","size":175,"timestamp":"2026-02-20T19:08:04.860Z"},{"id":"file_mlv9itakf61bl","name":"prectical-21.py","type":"file","url":"/assets/explorer/thispc/1771614484941_prectical-21.py","mime":"text/x-python","size":276,"timestamp":"2026-02-20T19:08:04.942Z"},{"id":"file_mlv9itcozvwur","name":"prectical-22.py","type":"file","url":"/assets/explorer/thispc/1771614485016_prectical-22.py","mime":"text/x-python","size":698,"timestamp":"2026-02-20T19:08:05.018Z"},{"id":"file_mlv9itf2adq1n","name":"prectical-23.py","type":"file","url":"/assets/explorer/thispc/1771614485102_prectical-23.py","mime":"text/x-python","size":784,"timestamp":"2026-02-20T19:08:05.108Z"},{"id":"file_mlv9iti1n9y2v","name":"prectical-24.py","type":"file","url":"/assets/explorer/thispc/1771614485209_prectical-24.py","mime":"text/x-python","size":1055,"timestamp":"2026-02-20T19:08:05.211Z"},{"id":"file_mlv9itka0wyod","name":"prectical-25.py","type":"file","url":"/assets/explorer/thispc/1771614485291_prectical-25.py","mime":"text/x-python","size":1437,"timestamp":"2026-02-20T19:08:05.292Z"},{"id":"file_mlv9itmiceeew","name":"precttical-15.py","type":"file","url":"/assets/explorer/thispc/1771614485370_precttical-15.py","mime":"text/x-python","size":620,"timestamp":"2026-02-20T19:08:05.372Z"},{"id":"file_mlv9itoy8jb2v","name":"prectical-3.py","type":"file","url":"/assets/explorer/thispc/1771614485459_prectical-3.py","mime":"text/x-python","size":78,"timestamp":"2026-02-20T19:08:05.462Z"},{"id":"file_mlv9itr91rqen","name":"prectical-4.py","type":"file","url":"/assets/explorer/thispc/1771614485542_prectical-4.py","mime":"text/x-python","size":342,"timestamp":"2026-02-20T19:08:05.543Z"},{"id":"file_mlv9ittlfklxq","name":"prectical-5.py","type":"file","url":"/assets/explorer/thispc/1771614485626_prectical-5.py","mime":"text/x-python","size":569,"timestamp":"2026-02-20T19:08:05.627Z"},{"id":"file_mlv9itvwa1qie","name":"prectical-6.py","type":"file","url":"/assets/explorer/thispc/1771614485708_prectical-6.py","mime":"text/x-python","size":394,"timestamp":"2026-02-20T19:08:05.710Z"},{"id":"file_mlv9itydngdvd","name":"prectical-7.py","type":"file","url":"/assets/explorer/thispc/1771614485805_prectical-7.py","mime":"text/x-python","size":329,"timestamp":"2026-02-20T19:08:05.810Z"},{"id":"file_mlv9iu0ytysoc","name":"prectical-8.py","type":"file","url":"/assets/explorer/thispc/1771614485891_prectical-8.py","mime":"text/x-python","size":408,"timestamp":"2026-02-20T19:08:05.893Z"},{"id":"file_mlv9iu35iaekl","name":"prectical-9.py","type":"file","url":"/assets/explorer/thispc/1771614485969_prectical-9.py","mime":"text/x-python","size":376,"timestamp":"2026-02-20T19:08:05.970Z"},{"id":"file_mlv9iu5zg0bjn","name":"prectical-10.py","type":"file","url":"/assets/explorer/thispc/1771614486072_prectical-10.py","mime":"text/x-python","size":826,"timestamp":"2026-02-20T19:08:06.074Z"},{"id":"file_mlv9iu7ztoyhr","name":"prectical-11.py","type":"file","url":"/assets/explorer/thispc/1771614486143_prectical-11.py","mime":"text/x-python","size":119,"timestamp":"2026-02-20T19:08:06.150Z"}],"timestamp":"2026-02-20T19:07:46.397Z"},{"id":"folder_mlv9jd07","name":"Quiz","type":"folder","items":[{"id":"file_mlv9joiowbjfd","name":"Prectical 3 python.pdf","type":"file","url":"/assets/explorer/thispc/1771614525408_Prectical_3_python.pdf","mime":"application/pdf","size":393038,"timestamp":"2026-02-20T19:08:45.418Z"},{"id":"file_mlv9jompwql48","name":"prectical 4 quiz.pdf","type":"file","url":"/assets/explorer/thispc/1771614525554_prectical_4_quiz.pdf","mime":"application/pdf","size":253232,"timestamp":"2026-02-20T19:08:45.566Z"},{"id":"file_mlv9joqroh6tz","name":"prectical 5 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614525699_prectical_5_quiz_python.pdf","mime":"application/pdf","size":532768,"timestamp":"2026-02-20T19:08:45.703Z"},{"id":"file_mlv9jovyb4s98","name":"prectical 6 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614525889_prectical_6_quiz_python.pdf","mime":"application/pdf","size":610812,"timestamp":"2026-02-20T19:08:45.893Z"},{"id":"file_mlv9joz95gtju","name":"prectical 7 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526007_prectical_7_quiz_python.pdf","mime":"application/pdf","size":665063,"timestamp":"2026-02-20T19:08:46.026Z"},{"id":"file_mlv9jp21qxcia","name":"prectical 8 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526105_prectical_8_quiz_python.pdf","mime":"application/pdf","size":248048,"timestamp":"2026-02-20T19:08:46.109Z"},{"id":"file_mlv9jp4zbm5xs","name":"prectical 9 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526215_prectical_9_quiz_python.pdf","mime":"application/pdf","size":164190,"timestamp":"2026-02-20T19:08:46.222Z"},{"id":"file_mlv9jp7m5itfk","name":"prectical 10 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526306_prectical_10_quiz_python.pdf","mime":"application/pdf","size":98505,"timestamp":"2026-02-20T19:08:46.307Z"},{"id":"file_mlv9jpa012fpv","name":"prectical 11 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526392_prectical_11_quiz_python.pdf","mime":"application/pdf","size":143045,"timestamp":"2026-02-20T19:08:46.394Z"},{"id":"file_mlv9jpblnjl5n","name":"prectical 12 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526449_prectical_12_quiz_python.pdf","mime":"application/pdf","size":99245,"timestamp":"2026-02-20T19:08:46.452Z"},{"id":"file_mlv9jpef7qbpj","name":"prectical 13 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526551_prectical_13_quiz_python.pdf","mime":"application/pdf","size":264661,"timestamp":"2026-02-20T19:08:46.556Z"},{"id":"file_mlv9jpgrw7443","name":"prectical 14 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526635_prectical_14_quiz_python.pdf","mime":"application/pdf","size":60380,"timestamp":"2026-02-20T19:08:46.637Z"},{"id":"file_mlv9jpj5iswbz","name":"prectical 16 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526721_prectical_16_quiz_python.pdf","mime":"application/pdf","size":230392,"timestamp":"2026-02-20T19:08:46.726Z"},{"id":"file_mlv9jpllh4m9j","name":"prectical 17 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526809_prectical_17_quiz_python.pdf","mime":"application/pdf","size":200477,"timestamp":"2026-02-20T19:08:46.812Z"},{"id":"file_mlv9jponxkksm","name":"prectical 18 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614526919_prectical_18_quiz_python.pdf","mime":"application/pdf","size":291995,"timestamp":"2026-02-20T19:08:46.940Z"},{"id":"file_mlv9jprbqgfu8","name":"prectical 19 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614527016_prectical_19_quiz_python.pdf","mime":"application/pdf","size":107213,"timestamp":"2026-02-20T19:08:47.018Z"},{"id":"file_mlv9jptlu8nvf","name":"prectical 20 python quiz.pdf","type":"file","url":"/assets/explorer/thispc/1771614527097_prectical_20_python_quiz.pdf","mime":"application/pdf","size":137273,"timestamp":"2026-02-20T19:08:47.100Z"},{"id":"file_mlv9jpvzzbia4","name":"prectical 21 python.pdf","type":"file","url":"/assets/explorer/thispc/1771614527184_prectical_21_python.pdf","mime":"application/pdf","size":125701,"timestamp":"2026-02-20T19:08:47.188Z"},{"id":"file_mlv9jpzdvulze","name":"prectical 22 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614527305_prectical_22_quiz_python.pdf","mime":"application/pdf","size":218074,"timestamp":"2026-02-20T19:08:47.356Z"},{"id":"file_mlv9jq4jznlhn","name":"prectical 23 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614527491_prectical_23_quiz_python.pdf","mime":"application/pdf","size":159014,"timestamp":"2026-02-20T19:08:47.497Z"},{"id":"file_mlv9jq81fnurh","name":"prectical 24 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614527617_prectical_24_quiz_python.pdf","mime":"application/pdf","size":244264,"timestamp":"2026-02-20T19:08:47.627Z"},{"id":"file_mlv9jqc1cpmjo","name":"prectical 25 quiz python.pdf","type":"file","url":"/assets/explorer/thispc/1771614527762_prectical_25_quiz_python.pdf","mime":"application/pdf","size":314226,"timestamp":"2026-02-20T19:08:47.794Z"},{"id":"file_mlv9jqg059qgr","name":"ch1-Quiz.pdf","type":"file","url":"/assets/explorer/thispc/1771614527911_ch1-Quiz.pdf","mime":"application/pdf","size":747099,"timestamp":"2026-02-20T19:08:47.931Z"}],"timestamp":"2026-02-20T19:08:30.487Z"},{"id":"file_mlv9j6nmj72ut","name":"python CO Wise Assignments.pdf","type":"file","url":"/assets/explorer/thispc/1771614502261_python_CO_Wise_Assignments.pdf","mime":"application/pdf","size":807199,"timestamp":"2026-02-20T19:08:22.290Z"},{"id":"file_mlv9j6xxajax7","name":"python manual.pdf","type":"file","url":"/assets/explorer/thispc/1771614502630_python_manual.pdf","mime":"application/pdf","size":2359784,"timestamp":"2026-02-20T19:08:22.656Z"},{"id":"file_mlv9j92i9y628","name":"Python_diplomaitmorbi.netlify.app.pdf","type":"file","url":"/assets/explorer/thispc/1771614505386_Python_diplomaitmorbi.netlify.app.pdf","mime":"application/pdf","size":61241028,"timestamp":"2026-02-20T19:08:25.525Z"}],"timestamp":"2026-02-20T18:59:52.171Z"},{"id":"folder_mlv98ega","name":"SWD","type":"folder","items":[{"id":"folder_mlv9lcaz","name":"Practicals ","type":"folder","items":[{"id":"file_mlv9lg39mkc87","name":"Prectical-1.html","type":"file","url":"/assets/explorer/thispc/1771614607798_Prectical-1.html","mime":"text/html","size":1271,"timestamp":"2026-02-20T19:10:07.917Z"},{"id":"file_mlv9lgdxt2fc1","name":"Prectical-2.html","type":"file","url":"/assets/explorer/thispc/1771614608182_Prectical-2.html","mime":"text/html","size":313,"timestamp":"2026-02-20T19:10:08.183Z"},{"id":"file_mlv9lgfmbk58j","name":"Prectical-3.html","type":"file","url":"/assets/explorer/thispc/1771614608243_Prectical-3.html","mime":"text/html","size":293,"timestamp":"2026-02-20T19:10:08.244Z"},{"id":"file_mlv9lgney3r5j","name":"Prectical-4.html","type":"file","url":"/assets/explorer/thispc/1771614608522_Prectical-4.html","mime":"text/html","size":824,"timestamp":"2026-02-20T19:10:08.524Z"},{"id":"file_mlv9lgrqw74w7","name":"Prectical-5.html","type":"file","url":"/assets/explorer/thispc/1771614608678_Prectical-5.html","mime":"text/html","size":396,"timestamp":"2026-02-20T19:10:08.681Z"},{"id":"file_mlv9lgtc1hxl2","name":"PRectical-6.html","type":"file","url":"/assets/explorer/thispc/1771614608736_PRectical-6.html","mime":"text/html","size":411,"timestamp":"2026-02-20T19:10:08.737Z"},{"id":"file_mlv9lguwmryx8","name":"Prectical-7.html","type":"file","url":"/assets/explorer/thispc/1771614608792_Prectical-7.html","mime":"text/html","size":531,"timestamp":"2026-02-20T19:10:08.793Z"},{"id":"file_mlv9lgwiitaen","name":"Prectical-8.html","type":"file","url":"/assets/explorer/thispc/1771614608851_Prectical-8.html","mime":"text/html","size":727,"timestamp":"2026-02-20T19:10:08.852Z"},{"id":"file_mlv9lgxzg8m0m","name":"Prectical-9.html","type":"file","url":"/assets/explorer/thispc/1771614608903_Prectical-9.html","mime":"text/html","size":3575,"timestamp":"2026-02-20T19:10:08.904Z"},{"id":"file_mlv9lgzu4l650","name":"prectical-10.pdf","type":"file","url":"/assets/explorer/thispc/1771614608970_prectical-10.pdf","mime":"application/pdf","size":442917,"timestamp":"2026-02-20T19:10:08.977Z"},{"id":"file_mlv9lh1pr4fbs","name":"Prectical-11.html","type":"file","url":"/assets/explorer/thispc/1771614609037_Prectical-11.html","mime":"text/html","size":1133,"timestamp":"2026-02-20T19:10:09.040Z"},{"id":"file_mlv9lh3d4mr7p","name":"Prectical-12.html","type":"file","url":"/assets/explorer/thispc/1771614609097_Prectical-12.html","mime":"text/html","size":865,"timestamp":"2026-02-20T19:10:09.098Z"},{"id":"file_mlv9lh538z5fq","name":"Prectical-13.html","type":"file","url":"/assets/explorer/thispc/1771614609159_Prectical-13.html","mime":"text/html","size":1212,"timestamp":"2026-02-20T19:10:09.160Z"},{"id":"file_mlv9lh79mn826","name":"Prectical-14.html","type":"file","url":"/assets/explorer/thispc/1771614609237_Prectical-14.html","mime":"text/html","size":1291,"timestamp":"2026-02-20T19:10:09.239Z"},{"id":"file_mlv9lh99jtz59","name":"Prectical-15.html","type":"file","url":"/assets/explorer/thispc/1771614609310_Prectical-15.html","mime":"text/html","size":1174,"timestamp":"2026-02-20T19:10:09.313Z"},{"id":"file_mlv9lhb9qnpsc","name":"Prectical-16.html","type":"file","url":"/assets/explorer/thispc/1771614609381_Prectical-16.html","mime":"text/html","size":1116,"timestamp":"2026-02-20T19:10:09.393Z"},{"id":"file_mlv9lheauf5is","name":"Prectical-17.html","type":"file","url":"/assets/explorer/thispc/1771614609491_Prectical-17.html","mime":"text/html","size":947,"timestamp":"2026-02-20T19:10:09.492Z"},{"id":"file_mlv9lhga8v6t1","name":"Prectical-18.html","type":"file","url":"/assets/explorer/thispc/1771614609562_Prectical-18.html","mime":"text/html","size":522,"timestamp":"2026-02-20T19:10:09.565Z"},{"id":"file_mlv9lhijkf4tg","name":"Prectical-19.html","type":"file","url":"/assets/explorer/thispc/1771614609643_Prectical-19.html","mime":"text/html","size":2082,"timestamp":"2026-02-20T19:10:09.648Z"},{"id":"file_mlv9lhkli4vxz","name":"Prectical-20.html","type":"file","url":"/assets/explorer/thispc/1771614609717_Prectical-20.html","mime":"text/html","size":2037,"timestamp":"2026-02-20T19:10:09.718Z"},{"id":"file_mlv9lhnkuhvly","name":"Prectical-21.html","type":"file","url":"/assets/explorer/thispc/1771614609825_Prectical-21.html","mime":"text/html","size":2188,"timestamp":"2026-02-20T19:10:09.826Z"},{"id":"folder_mlv9lvwy","name":"text formats file","type":"folder","items":[{"id":"file_mlv9m2juf923e","name":"!--Practical No.5 Use sorted (order.txt","type":"file","url":"/assets/explorer/thispc/1771614636907__--Practical_No.5_Use_sorted__order.txt","mime":"text/plain","size":396,"timestamp":"2026-02-20T19:10:36.925Z"},{"id":"file_mlv9m2mxftayx","name":"!--Practical No.6 Use unsorted (uno.txt","type":"file","url":"/assets/explorer/thispc/1771614637017__--Practical_No.6_Use_unsorted__uno.txt","mime":"text/plain","size":411,"timestamp":"2026-02-20T19:10:37.025Z"},{"id":"file_mlv9m2q15h0tu","name":"!--Practical No.7 Use definition (d.txt","type":"file","url":"/assets/explorer/thispc/1771614637136__--Practical_No.7_Use_definition__d.txt","mime":"text/plain","size":531,"timestamp":"2026-02-20T19:10:37.182Z"},{"id":"file_mlv9m2to7oozq","name":"!--Practical No.8 Use semantic tags.txt","type":"file","url":"/assets/explorer/thispc/1771614637260__--Practical_No.8_Use_semantic_tags.txt","mime":"text/plain","size":727,"timestamp":"2026-02-20T19:10:37.264Z"},{"id":"file_mlv9m2wkweieb","name":"!--Practical No.9--.txt","type":"file","url":"/assets/explorer/thispc/1771614637365__--Practical_No.9--.txt","mime":"text/plain","size":3575,"timestamp":"2026-02-20T19:10:37.384Z"},{"id":"file_mlv9m2zyuzq0w","name":"!--Practical No.11-htmlUse inline, inte.txt","type":"file","url":"/assets/explorer/thispc/1771614637486__--Practical_No.11-htmlUse_inline__inte.txt","mime":"text/plain","size":1133,"timestamp":"2026-02-20T19:10:37.490Z"},{"id":"file_mlv9m32ynoqm6","name":"!--Practical No.12--.txt","type":"file","url":"/assets/explorer/thispc/1771614637595__--Practical_No.12--.txt","mime":"text/plain","size":865,"timestamp":"2026-02-20T19:10:37.598Z"},{"id":"file_mlv9m35hprh39","name":"!--Practical No.13--.txt","type":"file","url":"/assets/explorer/thispc/1771614637686__--Practical_No.13--.txt","mime":"text/plain","size":1212,"timestamp":"2026-02-20T19:10:37.688Z"},{"id":"file_mlv9m389poqef","name":"!--Practical No.14- Use JavaScript .txt","type":"file","url":"/assets/explorer/thispc/1771614637786__--Practical_No.14-_Use_JavaScript_.txt","mime":"text/plain","size":1291,"timestamp":"2026-02-20T19:10:37.790Z"},{"id":"file_mlv9m3eei6xo8","name":"!--Practical No.15 To use JavaScrip.txt","type":"file","url":"/assets/explorer/thispc/1771614638006__--Practical_No.15_To_use_JavaScrip.txt","mime":"text/plain","size":1174,"timestamp":"2026-02-20T19:10:38.049Z"},{"id":"file_mlv9m3j76xmco","name":"!--Practical No.17 To use JavaScrip.txt","type":"file","url":"/assets/explorer/thispc/1771614638179__--Practical_No.17_To_use_JavaScrip.txt","mime":"text/plain","size":947,"timestamp":"2026-02-20T19:10:38.186Z"},{"id":"file_mlv9m3njlvyh7","name":"!--Practical No.18 To use JavaScrip.txt","type":"file","url":"/assets/explorer/thispc/1771614638335__--Practical_No.18_To_use_JavaScrip.txt","mime":"text/plain","size":522,"timestamp":"2026-02-20T19:10:38.338Z"},{"id":"file_mlv9m3r9ioef3","name":"!--Practical No.19 Use JavaScript u.txt","type":"file","url":"/assets/explorer/thispc/1771614638470__--Practical_No.19_Use_JavaScript_u.txt","mime":"text/plain","size":2082,"timestamp":"2026-02-20T19:10:38.473Z"},{"id":"file_mlv9m3ujz46o2","name":"!--Practical No.20 Use JavaScript t.txt","type":"file","url":"/assets/explorer/thispc/1771614638587__--Practical_No.20_Use_JavaScript_t.txt","mime":"text/plain","size":2037,"timestamp":"2026-02-20T19:10:38.601Z"},{"id":"file_mlv9m3xhynyio","name":"!--Practical No.21 Use JavaScript t.txt","type":"file","url":"/assets/explorer/thispc/1771614638694__--Practical_No.21_Use_JavaScript_t.txt","mime":"text/plain","size":2188,"timestamp":"2026-02-20T19:10:38.700Z"},{"id":"file_mlv9m403op3pj","name":"Practical No.11-css.txt","type":"file","url":"/assets/explorer/thispc/1771614638787_Practical_No.11-css.txt","mime":"text/plain","size":96,"timestamp":"2026-02-20T19:10:38.788Z"},{"id":"file_mlv9m42qj7je0","name":"Practical No.12-css.txt","type":"file","url":"/assets/explorer/thispc/1771614638883_Practical_No.12-css.txt","mime":"text/plain","size":459,"timestamp":"2026-02-20T19:10:38.884Z"},{"id":"file_mlv9m458vh4hb","name":"prectical-16html.txt","type":"file","url":"/assets/explorer/thispc/1771614638972_prectical-16html.txt","mime":"text/plain","size":1116,"timestamp":"2026-02-20T19:10:38.979Z"},{"id":"file_mlv9m47ztdeax","name":"!-- Practical No.1 Use HTML text fo.txt","type":"file","url":"/assets/explorer/thispc/1771614639072__--_Practical_No.1_Use_HTML_text_fo.txt","mime":"text/plain","size":1271,"timestamp":"2026-02-20T19:10:39.073Z"},{"id":"file_mlv9m4byt7izz","name":"!-- Practical No.3 Use image tags t.txt","type":"file","url":"/assets/explorer/thispc/1771614639214__--_Practical_No.3_Use_image_tags_t.txt","mime":"text/plain","size":293,"timestamp":"2026-02-20T19:10:39.215Z"},{"id":"file_mlv9m4exaa3y2","name":"!--Practical No.2 Use hyper link ta.txt","type":"file","url":"/assets/explorer/thispc/1771614639321__--Practical_No.2_Use_hyper_link_ta.txt","mime":"text/plain","size":313,"timestamp":"2026-02-20T19:10:39.323Z"},{"id":"file_mlv9m4heotcrh","name":"!--Practical No.4 Use HTML table ta.txt","type":"file","url":"/assets/explorer/thispc/1771614639410__--Practical_No.4_Use_HTML_table_ta.txt","mime":"text/plain","size":824,"timestamp":"2026-02-20T19:10:39.414Z"}],"timestamp":"2026-02-20T19:10:28.306Z","icon":"f:purple"}],"timestamp":"2026-02-20T19:10:02.891Z"},{"id":"file_mlv9mfnbeix3w","name":"HTML- Learn.pdf","type":"file","url":"/assets/explorer/thispc/1771614653879_HTML-_Learn.pdf","mime":"application/pdf","size":19692941,"timestamp":"2026-02-20T19:10:53.904Z"}],"timestamp":"2026-02-20T18:59:59.146Z"}],"timestamp":"2026-02-20T18:12:44.807Z"},{"id":"folder_mlv7omg6","name":"SEM-2","type":"folder","items":[{"id":"folder_mlv9vby8","name":"ISA","type":"folder","items":[{"id":"file_mlv9wtqsw0a9d","name":"Lab Manual 4321603.pdf","type":"file","url":"/assets/explorer/thispc/1771615138710_Lab_Manual_4321603.pdf","mime":"application/pdf","size":2248697,"timestamp":"2026-02-20T19:18:58.724Z"}],"timestamp":"2026-02-20T19:17:48.992Z"},{"id":"folder_mlv9w0ph","name":"Python advanced ","type":"folder","items":[{"id":"file_mlv9ybwh80v64","name":"APP_assignment CO Wise.pdf","type":"file","url":"/assets/explorer/thispc/1771615208898_APP_assignment_CO_Wise.pdf","mime":"application/pdf","size":905219,"timestamp":"2026-02-20T19:20:08.923Z"},{"id":"file_mlv9yc5zhr5ky","name":"LABMANUAL.pdf","type":"file","url":"/assets/explorer/thispc/1771615209239_LABMANUAL.pdf","mime":"application/pdf","size":2699468,"timestamp":"2026-02-20T19:20:09.244Z"},{"id":"folder_mlv9z09j","name":"Practicals","type":"folder","items":[{"id":"file_mlv9z98s3qkyz","name":"prectical13new.html","type":"file","url":"/assets/explorer/thispc/1771615252109_prectical13new.html","mime":"text/html","size":4844,"timestamp":"2026-02-20T19:20:52.198Z"},{"id":"file_mlv9z9m8fjei3","name":"prectical14.html","type":"file","url":"/assets/explorer/thispc/1771615252617_prectical14.html","mime":"text/html","size":5056,"timestamp":"2026-02-20T19:20:52.644Z"},{"id":"file_mlv9z9r6vk6nb","name":"prectical15.html","type":"file","url":"/assets/explorer/thispc/1771615252771_prectical15.html","mime":"text/html","size":5136,"timestamp":"2026-02-20T19:20:52.778Z"},{"id":"file_mlv9z9u7ex67d","name":"prectical16.html","type":"file","url":"/assets/explorer/thispc/1771615252880_prectical16.html","mime":"text/html","size":5400,"timestamp":"2026-02-20T19:20:52.887Z"},{"id":"file_mlv9z9xnjjlr2","name":"prectical17.html","type":"file","url":"/assets/explorer/thispc/1771615253003_prectical17.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.019Z"},{"id":"file_mlv9za1tz0gxa","name":"prectical18.html","type":"file","url":"/assets/explorer/thispc/1771615253153_prectical18.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.172Z"},{"id":"file_mlv9za5xf557v","name":"prectical19.html","type":"file","url":"/assets/explorer/thispc/1771615253301_prectical19.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.303Z"},{"id":"file_mlv9za9s21xw0","name":"prectical20.html","type":"file","url":"/assets/explorer/thispc/1771615253440_prectical20.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.451Z"},{"id":"file_mlv9zad3pnr08","name":"prectical21.html","type":"file","url":"/assets/explorer/thispc/1771615253559_prectical21.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.561Z"},{"id":"file_mlv9zafr3ps52","name":"prectical22.html","type":"file","url":"/assets/explorer/thispc/1771615253655_prectical22.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.675Z"},{"id":"file_mlv9zaj008cdq","name":"prectical23.html","type":"file","url":"/assets/explorer/thispc/1771615253773_prectical23.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.777Z"},{"id":"file_mlv9zao9a1vv1","name":"prectical24.html","type":"file","url":"/assets/explorer/thispc/1771615253961_prectical24.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:53.973Z"},{"id":"file_mlv9zarlmzn9d","name":"prectical25.html","type":"file","url":"/assets/explorer/thispc/1771615254081_prectical25.html","mime":"text/html","size":4482,"timestamp":"2026-02-20T19:20:54.082Z"},{"id":"file_mlv9zauhdft0c","name":"prectical1.html","type":"file","url":"/assets/explorer/thispc/1771615254185_prectical1.html","mime":"text/html","size":6586,"timestamp":"2026-02-20T19:20:54.189Z"},{"id":"file_mlv9zaxg85qlx","name":"prectical2.html","type":"file","url":"/assets/explorer/thispc/1771615254292_prectical2.html","mime":"text/html","size":5141,"timestamp":"2026-02-20T19:20:54.293Z"},{"id":"file_mlv9zb19d4eed","name":"prectical3.html","type":"file","url":"/assets/explorer/thispc/1771615254429_prectical3.html","mime":"text/html","size":4908,"timestamp":"2026-02-20T19:20:54.468Z"},{"id":"file_mlv9zb7nl19zx","name":"prectical4.html","type":"file","url":"/assets/explorer/thispc/1771615254659_prectical4.html","mime":"text/html","size":5065,"timestamp":"2026-02-20T19:20:54.665Z"},{"id":"file_mlv9zbg1q66j3","name":"prectical5.html","type":"file","url":"/assets/explorer/thispc/1771615254962_prectical5.html","mime":"text/html","size":8030,"timestamp":"2026-02-20T19:20:55.032Z"},{"id":"file_mlv9zbmxgqnlz","name":"prectical6.html","type":"file","url":"/assets/explorer/thispc/1771615255210_prectical6.html","mime":"text/html","size":5481,"timestamp":"2026-02-20T19:20:55.224Z"},{"id":"file_mlv9zbstx509h","name":"prectical7.html","type":"file","url":"/assets/explorer/thispc/1771615255422_prectical7.html","mime":"text/html","size":5306,"timestamp":"2026-02-20T19:20:55.424Z"},{"id":"file_mlv9zbxcmptn3","name":"prectical8.html","type":"file","url":"/assets/explorer/thispc/1771615255585_prectical8.html","mime":"text/html","size":5427,"timestamp":"2026-02-20T19:20:55.592Z"},{"id":"file_mlv9zc313az1s","name":"prectical9.html","type":"file","url":"/assets/explorer/thispc/1771615255789_prectical9.html","mime":"text/html","size":4957,"timestamp":"2026-02-20T19:20:55.792Z"},{"id":"file_mlv9zc8p6rqdz","name":"prectical10.html","type":"file","url":"/assets/explorer/thispc/1771615255993_prectical10.html","mime":"text/html","size":6396,"timestamp":"2026-02-20T19:20:56.010Z"},{"id":"file_mlv9zcgik0imb","name":"prectical11.html","type":"file","url":"/assets/explorer/thispc/1771615256276_prectical11.html","mime":"text/html","size":5990,"timestamp":"2026-02-20T19:20:56.322Z"},{"id":"file_mlv9zclsp9fsr","name":"prectical12.html","type":"file","url":"/assets/explorer/thispc/1771615256486_prectical12.html","mime":"text/html","size":5012,"timestamp":"2026-02-20T19:20:56.581Z"},{"id":"file_mlv9zp36iheis","name":"pre12-2.png","type":"file","url":"/assets/explorer/thispc/1771615272643_pre12-2.png","mime":"image/png","size":115456,"timestamp":"2026-02-20T19:21:12.646Z"},{"id":"file_mlv9zp625j9cv","name":"pre12-3.png","type":"file","url":"/assets/explorer/thispc/1771615272747_pre12-3.png","mime":"image/png","size":62319,"timestamp":"2026-02-20T19:21:12.765Z"},{"id":"file_mlv9zp9mt384u","name":"pre13.png","type":"file","url":"/assets/explorer/thispc/1771615272874_pre13.png","mime":"image/png","size":37300,"timestamp":"2026-02-20T19:21:12.877Z"},{"id":"file_mlv9zpdyr3bf2","name":"pre12.png","type":"file","url":"/assets/explorer/thispc/1771615273030_pre12.png","mime":"image/png","size":462522,"timestamp":"2026-02-20T19:21:13.034Z"}],"timestamp":"2026-02-20T19:20:40.471Z"}],"timestamp":"2026-02-20T19:18:21.077Z"},{"id":"folder_mlv9wb29","name":"Exam papers","type":"folder","items":[{"id":"folder_mlv9wewu","name":"Mid 1","type":"folder","items":[{"id":"file_mlv9xggn2ffsq","name":"maths_sem 2_mid 1 _ CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615168151_maths_sem_2_mid_1___CWT.pdf","mime":"application/pdf","size":283063,"timestamp":"2026-02-20T19:19:28.182Z"},{"id":"file_mlv9xglnfkdl1","name":"Physics_sem 2_mid 1 _ CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615168331_Physics_sem_2_mid_1___CWT.pdf","mime":"application/pdf","size":315227,"timestamp":"2026-02-20T19:19:28.337Z"},{"id":"file_mlv9xgqgwx4fn","name":"python_sem 2_mid 1 _ CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615168504_python_sem_2_mid_1___CWT.pdf","mime":"application/pdf","size":546928,"timestamp":"2026-02-20T19:19:28.507Z"},{"id":"file_mlv9xgtqz6vwc","name":"E.S_sem 2_mid 1 _ CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615168622_E.S_sem_2_mid_1___CWT.pdf","mime":"application/pdf","size":356014,"timestamp":"2026-02-20T19:19:28.626Z"}],"timestamp":"2026-02-20T19:18:39.486Z"},{"id":"folder_mlv9wh9l","name":"Mid 2","type":"folder","items":[{"id":"file_mlv9xoimxjbbk","name":"e.s. sem -2 , mid-2 - CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615178590_e.s._sem_-2___mid-2_-_CWT.pdf","mime":"application/pdf","size":500688,"timestamp":"2026-02-20T19:19:38.616Z"},{"id":"file_mlv9xoopf7r3c","name":"maths mid-2 ,IT sem-2 -CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615178810_maths_mid-2__IT_sem-2_-CWT.pdf","mime":"application/pdf","size":342993,"timestamp":"2026-02-20T19:19:38.820Z"},{"id":"file_mlv9xou4766cx","name":"phisics sem-2, mid -2 -CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615179004_phisics_sem-2__mid_-2_-CWT.pdf","mime":"application/pdf","size":472614,"timestamp":"2026-02-20T19:19:39.018Z"},{"id":"file_mlv9xoz27c5ej","name":"python sem-2, mid-2 -CWT.pdf","type":"file","url":"/assets/explorer/thispc/1771615179183_python_sem-2__mid-2_-CWT.pdf","mime":"application/pdf","size":463669,"timestamp":"2026-02-20T19:19:39.189Z"}],"timestamp":"2026-02-20T19:18:42.537Z"}],"timestamp":"2026-02-20T19:18:34.497Z"}],"timestamp":"2026-02-20T18:16:36.775Z"},{"id":"folder_mlv7opyh","name":"SEM-3","type":"folder","items":[{"id":"folder_mlva1xhv","name":"Data Structure with Python","type":"folder","items":[{"id":"folder_mlva46va","name":"PPT","type":"folder","items":[{"id":"file_mlva4f9vuzhs7","name":"DS_unit1_by_PKChavda.pdf","type":"file","url":"/assets/explorer/thispc/1771615493204_DS_unit1_by_PKChavda.pdf","mime":"application/pdf","size":691833,"timestamp":"2026-02-20T19:24:53.259Z"},{"id":"file_mlva4fj3k99qz","name":"DS_unit2_OOP_by_PKC.pdf","type":"file","url":"/assets/explorer/thispc/1771615493535_DS_unit2_OOP_by_PKC.pdf","mime":"application/pdf","size":960093,"timestamp":"2026-02-20T19:24:53.540Z"},{"id":"file_mlva4flfkygiz","name":"DS_unit3_by_pkc.pptx","type":"file","url":"/assets/explorer/thispc/1771615493622_DS_unit3_by_pkc.pptx","mime":"application/vnd.openxmlformats-officedocument.presentationml.presentation","size":337161,"timestamp":"2026-02-20T19:24:53.640Z"},{"id":"file_mlva5lhal2vh8","name":"unit5_pk_chavda.pptx","type":"file","url":"/assets/explorer/thispc/1771615547902_unit5_pk_chavda.pptx","mime":"application/vnd.openxmlformats-officedocument.presentationml.presentation","size":382091,"timestamp":"2026-02-20T19:25:47.907Z"}],"timestamp":"2026-02-20T19:24:42.310Z"},{"id":"folder_mlva4r30","name":"Practicals","type":"folder","items":[{"id":"file_mlva4z7g6rofu","name":"PRECTICAL-1.py","type":"file","url":"/assets/explorer/thispc/1771615519049_PRECTICAL-1.py","mime":"text/x-python","size":2414,"timestamp":"2026-02-20T19:25:19.081Z"},{"id":"file_mlva4zc6ncsle","name":"PRECTICAL-2.py","type":"file","url":"/assets/explorer/thispc/1771615519206_PRECTICAL-2.py","mime":"text/x-python","size":265,"timestamp":"2026-02-20T19:25:19.208Z"},{"id":"file_mlva4zefbm2so","name":"PRECTICAL-3.py","type":"file","url":"/assets/explorer/thispc/1771615519288_PRECTICAL-3.py","mime":"text/x-python","size":618,"timestamp":"2026-02-20T19:25:19.292Z"},{"id":"file_mlva4zhecp4iq","name":"PRECTICAL-4.py","type":"file","url":"/assets/explorer/thispc/1771615519394_PRECTICAL-4.py","mime":"text/x-python","size":61,"timestamp":"2026-02-20T19:25:19.400Z"},{"id":"file_mlva4zj9r88o7","name":"PRECTICAL-5.py","type":"file","url":"/assets/explorer/thispc/1771615519461_PRECTICAL-5.py","mime":"text/x-python","size":215,"timestamp":"2026-02-20T19:25:19.462Z"},{"id":"file_mlva4zlg1gc80","name":"PRECTICAL-6.py","type":"file","url":"/assets/explorer/thispc/1771615519540_PRECTICAL-6.py","mime":"text/x-python","size":122,"timestamp":"2026-02-20T19:25:19.541Z"}],"timestamp":"2026-02-20T19:25:08.508Z"},{"id":"file_mlva5hmmtldx4","name":"practical-1 - 9.pdf","type":"file","url":"/assets/explorer/thispc/1771615542912_practical-1_-_9.pdf","mime":"application/pdf","size":474503,"timestamp":"2026-02-20T19:25:42.945Z"},{"id":"file_mlva5hxjv1pls","name":"practical-14-18.pdf","type":"file","url":"/assets/explorer/thispc/1771615543303_practical-14-18.pdf","mime":"application/pdf","size":461872,"timestamp":"2026-02-20T19:25:43.306Z"},{"id":"file_mlva5i0rlgh49","name":"Data Structure with Python (LAB MANUAL).pdf","type":"file","url":"/assets/explorer/thispc/1771615543419_Data_Structure_with_Python___LAB_MANUAL_.pdf","mime":"application/pdf","size":2276915,"timestamp":"2026-02-20T19:25:43.423Z"},{"id":"file_mlva5wnlr09ic","name":"microproject-dswp.docx","type":"file","url":"/assets/explorer/thispc/1771615562404_microproject-dswp.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":14790,"timestamp":"2026-02-20T19:26:02.662Z"}],"timestamp":"2026-02-20T19:22:56.851Z"},{"id":"folder_mlva21um","name":"Database management","type":"folder","items":[{"id":"folder_mlva6gu9","name":"PPT","type":"folder","items":[{"id":"file_mlva6ob1m3riy","name":"DM_GTU_Study_Material_e-Notes_Unit-3.pdf","type":"file","url":"/assets/explorer/thispc/1771615598223_DM_GTU_Study_Material_e-Notes_Unit-3.pdf","mime":"application/pdf","size":10711652,"timestamp":"2026-02-20T19:26:38.276Z"},{"id":"file_mlva6p0qhab8o","name":"DM_GTU_Study_Material_e-Notes_Unit-1.pdf","type":"file","url":"/assets/explorer/thispc/1771615599147_DM_GTU_Study_Material_e-Notes_Unit-1.pdf","mime":"application/pdf","size":8632705,"timestamp":"2026-02-20T19:26:39.207Z"}],"timestamp":"2026-02-20T19:26:28.545Z"},{"id":"folder_mlva6yu2","name":"Practicals","type":"folder","items":[{"id":"file_mlva744um1pg2","name":"Practical-10.pdf","type":"file","url":"/assets/explorer/thispc/1771615618735_Practical-10.pdf","mime":"application/pdf","size":514236,"timestamp":"2026-02-20T19:26:58.759Z"},{"id":"file_mlva74b7v2f29","name":"Preactical-5.pdf","type":"file","url":"/assets/explorer/thispc/1771615618963_Preactical-5.pdf","mime":"application/pdf","size":467355,"timestamp":"2026-02-20T19:26:58.982Z"},{"id":"file_mlva74gjgpc7u","name":"Precatical-2.pdf","type":"file","url":"/assets/explorer/thispc/1771615619156_Precatical-2.pdf","mime":"application/pdf","size":680138,"timestamp":"2026-02-20T19:26:59.171Z"},{"id":"file_mlva74k5rd6qk","name":"Precatical-3.pdf","type":"file","url":"/assets/explorer/thispc/1771615619285_Precatical-3.pdf","mime":"application/pdf","size":508169,"timestamp":"2026-02-20T19:26:59.294Z"},{"id":"file_mlva74n39dyks","name":"Precatical-4.pdf","type":"file","url":"/assets/explorer/thispc/1771615619392_Precatical-4.pdf","mime":"application/pdf","size":480351,"timestamp":"2026-02-20T19:26:59.402Z"},{"id":"file_mlva74ppblq3r","name":"Precatical-8.pdf","type":"file","url":"/assets/explorer/thispc/1771615619488_Precatical-8.pdf","mime":"application/pdf","size":464502,"timestamp":"2026-02-20T19:26:59.500Z"},{"id":"file_mlva74s1spgke","name":"Prectical-1.pdf","type":"file","url":"/assets/explorer/thispc/1771615619569_Prectical-1.pdf","mime":"application/pdf","size":497979,"timestamp":"2026-02-20T19:26:59.573Z"},{"id":"file_mlva74u7s52ub","name":"Prectical-6.pdf","type":"file","url":"/assets/explorer/thispc/1771615619648_Prectical-6.pdf","mime":"application/pdf","size":462438,"timestamp":"2026-02-20T19:26:59.652Z"},{"id":"file_mlva74y7ih7dd","name":"prectical-7.pdf","type":"file","url":"/assets/explorer/thispc/1771615619791_prectical-7.pdf","mime":"application/pdf","size":520855,"timestamp":"2026-02-20T19:26:59.804Z"},{"id":"file_mlva751gvhxc5","name":"Practical-9.pdf","type":"file","url":"/assets/explorer/thispc/1771615619908_Practical-9.pdf","mime":"application/pdf","size":422168,"timestamp":"2026-02-20T19:26:59.934Z"}],"timestamp":"2026-02-20T19:26:51.866Z"},{"id":"file_mlva7qyokgri3","name":"4331603 - database management (labmanual).pdf","type":"file","url":"/assets/explorer/thispc/1771615648322_4331603_-_database_management__labmanual_.pdf","mime":"application/pdf","size":1830952,"timestamp":"2026-02-20T19:27:28.363Z"},{"id":"file_mlva7r3dibi46","name":"4631603-DM (ASSIEMENT).pdf","type":"file","url":"/assets/explorer/thispc/1771615648489_4631603-DM__ASSIEMENT_.pdf","mime":"application/pdf","size":609908,"timestamp":"2026-02-20T19:27:28.492Z"},{"id":"file_mlva7r5e7r29c","name":"micro project list sem 3.pdf","type":"file","url":"/assets/explorer/thispc/1771615648563_micro_project_list_sem_3.pdf","mime":"application/pdf","size":412623,"timestamp":"2026-02-20T19:27:28.565Z"}],"timestamp":"2026-02-20T19:23:02.494Z"},{"id":"folder_mlva28t4","name":"EXAM-papers","type":"folder","items":[{"id":"folder_mlva81mf","name":"GTU","type":"folder","items":[{"id":"file_mlva8bkstg41o","name":"4300002.pdf","type":"file","url":"/assets/explorer/thispc/1771615675037_4300002.pdf","mime":"application/pdf","size":231797,"timestamp":"2026-02-20T19:27:55.057Z"},{"id":"file_mlva8bqsi3tjg","name":"4311601.pdf","type":"file","url":"/assets/explorer/thispc/1771615675252_4311601.pdf","mime":"application/pdf","size":646637,"timestamp":"2026-02-20T19:27:55.283Z"},{"id":"file_mlva8bwapdwxv","name":"4311602 (1).pdf","type":"file","url":"/assets/explorer/thispc/1771615675450_4311602__1_.pdf","mime":"application/pdf","size":377420,"timestamp":"2026-02-20T19:27:55.478Z"},{"id":"file_mlva8bz8js5lq","name":"4300001 maths.pdf","type":"file","url":"/assets/explorer/thispc/1771615675557_4300001__maths.pdf","mime":"application/pdf","size":471456,"timestamp":"2026-02-20T19:27:55.580Z"}],"timestamp":"2026-02-20T19:27:42.135Z"},{"id":"folder_mlva84me","name":"Mid 1","type":"folder","items":[{"id":"file_mlva8io12nf2p","name":"data structure with python sem-3 , mid-1.pdf","type":"file","url":"/assets/explorer/thispc/1771615684225_data_structure_with_python_sem-3___mid-1.pdf","mime":"application/pdf","size":343481,"timestamp":"2026-02-20T19:28:04.253Z"},{"id":"file_mlva8iuaihnif","name":"database management sem 3 mid 1.pdf","type":"file","url":"/assets/explorer/thispc/1771615684451_database_management_sem_3_mid_1.pdf","mime":"application/pdf","size":497428,"timestamp":"2026-02-20T19:28:04.477Z"},{"id":"file_mlva8iytz55z7","name":"FOSD sem 3 mid 1.pdf","type":"file","url":"/assets/explorer/thispc/1771615684614_FOSD_sem_3_mid_1.pdf","mime":"application/pdf","size":411806,"timestamp":"2026-02-20T19:28:04.631Z"},{"id":"file_mlva8j2uyjlv4","name":"linux os sem-3, mid-1.pdf","type":"file","url":"/assets/explorer/thispc/1771615684759_linux_os_sem-3__mid-1.pdf","mime":"application/pdf","size":347474,"timestamp":"2026-02-20T19:28:04.784Z"}],"timestamp":"2026-02-20T19:27:46.022Z"},{"id":"folder_mlva875r","name":"Mid 2","type":"folder","items":[{"id":"file_mlva8v6srynt0","name":"DM sem 3 , mid 2 , diplomaitmorbi.pdf","type":"file","url":"/assets/explorer/thispc/1771615700452_DM_sem_3___mid_2___diplomaitmorbi.pdf","mime":"application/pdf","size":443272,"timestamp":"2026-02-20T19:28:20.458Z"},{"id":"file_mlva8vb2kubzw","name":"DSWP sem 3 , mid 2 , diplomaitmorbi.pdf","type":"file","url":"/assets/explorer/thispc/1771615700607_DSWP_sem_3___mid_2___diplomaitmorbi.pdf","mime":"application/pdf","size":421559,"timestamp":"2026-02-20T19:28:20.633Z"},{"id":"file_mlva8vf1tw4kb","name":"Sem 3 , mid 2 , FOSD -diplomaitmorbi.pdf","type":"file","url":"/assets/explorer/thispc/1771615700750_Sem_3___mid_2___FOSD__-diplomaitmorbi.pdf","mime":"application/pdf","size":269045,"timestamp":"2026-02-20T19:28:20.768Z"},{"id":"file_mlva8vk27k17q","name":"sem 3 , mid 2 Linux OD - diplomaitmorbi.pdf","type":"file","url":"/assets/explorer/thispc/1771615700931_sem_3___mid_2_Linux_OD_-_diplomaitmorbi.pdf","mime":"application/pdf","size":290612,"timestamp":"2026-02-20T19:28:20.933Z"}],"timestamp":"2026-02-20T19:27:49.311Z"}],"timestamp":"2026-02-20T19:23:11.512Z"},{"id":"folder_mlva2cwl","name":"FOSD","type":"folder","items":[{"id":"file_mlva9a8d2lb3d","name":"FOSD Lab Manual.pdf","type":"file","url":"/assets/explorer/thispc/1771615719950_FOSD_Lab_Manual.pdf","mime":"application/pdf","size":955457,"timestamp":"2026-02-20T19:28:39.977Z"},{"id":"file_mlva9ac20gy0e","name":"FOSD(4331604) MICRO PROJECT LIST.docx","type":"file","url":"/assets/explorer/thispc/1771615720082_FOSD_4331604__MICRO_PROJECT_LIST.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":22772,"timestamp":"2026-02-20T19:28:40.130Z"}],"timestamp":"2026-02-20T19:23:16.821Z"},{"id":"folder_mlva2i7t","name":"linux os","type":"folder","items":[{"id":"folder_mlva9knz","name":"PPT","type":"folder","items":[{"id":"file_mlva9ymylrfic","name":"4331602_OS_GTU_Chap-1.pdf","type":"file","url":"/assets/explorer/thispc/1771615751586_4331602_OS_GTU_Chap-1.pdf","mime":"application/pdf","size":794796,"timestamp":"2026-02-20T19:29:11.651Z"}],"timestamp":"2026-02-20T19:28:53.471Z"},{"id":"folder_mlva9q06","name":"Practicals","type":"folder","items":[{"id":"file_mlvaa5rcoaf6l","name":"Practical-1.pptx","type":"file","url":"/assets/explorer/thispc/1771615760809_Practical-1.pptx","mime":"application/vnd.openxmlformats-officedocument.presentationml.presentation","size":3639259,"timestamp":"2026-02-20T19:29:20.840Z"},{"id":"file_mlvaa5vk9v5t1","name":"Practical-4.pptx","type":"file","url":"/assets/explorer/thispc/1771615760986_Practical-4.pptx","mime":"application/vnd.openxmlformats-officedocument.presentationml.presentation","size":152467,"timestamp":"2026-02-20T19:29:20.992Z"},{"id":"file_mlvaa5znjun8w","name":"Practical-5.pptx","type":"file","url":"/assets/explorer/thispc/1771615761108_Practical-5.pptx","mime":"application/vnd.openxmlformats-officedocument.presentationml.presentation","size":220365,"timestamp":"2026-02-20T19:29:21.121Z"}],"timestamp":"2026-02-20T19:29:00.391Z"},{"id":"file_mlva9u8su2our","name":"4331602-LOS (lab manual).pdf","type":"file","url":"/assets/explorer/thispc/1771615745886_4331602-LOS__lab_manual_.pdf","mime":"application/pdf","size":1751271,"timestamp":"2026-02-20T19:29:05.901Z"},{"id":"file_mlva9uguge29u","name":"4331602-LOS-lab manual.pdf","type":"file","url":"/assets/explorer/thispc/1771615746174_4331602-LOS-lab_manual.pdf","mime":"application/pdf","size":1751271,"timestamp":"2026-02-20T19:29:06.211Z"},{"id":"file_mlva9ur00sd5l","name":"linuxcommands.pdf","type":"file","url":"/assets/explorer/thispc/1771615746541_linuxcommands.pdf","mime":"application/pdf","size":469423,"timestamp":"2026-02-20T19:29:06.549Z"}],"timestamp":"2026-02-20T19:23:23.705Z"},{"id":"folder_mlva2uk6","name":"othes shared ","type":"folder","items":[{"id":"file_mlva363biouc0","name":"Brochure IIT Bombay.pdf","type":"file","url":"/assets/explorer/thispc/1771615434649_Brochure_IIT_Bombay.pdf","mime":"application/pdf","size":1315446,"timestamp":"2026-02-20T19:23:54.661Z"},{"id":"file_mlva36spel6iw","name":"DSA Handwritten Notes Zero to Hero.pdf","type":"file","url":"/assets/explorer/thispc/1771615435561_DSA_Handwritten_Notes_Zero_to_Hero.pdf","mime":"application/pdf","size":14992817,"timestamp":"2026-02-20T19:23:55.582Z"},{"id":"file_mlva376sfm7w4","name":"linux-commands-handbook.pdf","type":"file","url":"/assets/explorer/thispc/1771615436069_linux-commands-handbook.pdf","mime":"application/pdf","size":14824851,"timestamp":"2026-02-20T19:23:56.094Z"},{"id":"file_mlva37cyoa286","name":"pamphlet (2).pdf","type":"file","url":"/assets/explorer/thispc/1771615436290_pamphlet__2_.pdf","mime":"application/pdf","size":3973836,"timestamp":"2026-02-20T19:23:56.297Z"}],"timestamp":"2026-02-20T19:23:39.702Z","icon":"f:green"},{"id":"file_mlva3iqrp28yb","name":"StudentLIST SEM-3.pdf","type":"file","url":"/assets/explorer/thispc/1771615451043_StudentLIST_SEM-3.pdf","mime":"application/pdf","size":67169,"timestamp":"2026-02-20T19:24:11.048Z"},{"id":"file_mlva3of1tnvu4","name":"CLASS COORDINATOR W24-1-3-5-Revised.pdf","type":"file","url":"/assets/explorer/thispc/1771615458398_CLASS_COORDINATOR_W24-1-3-5-Revised.pdf","mime":"application/pdf","size":509357,"timestamp":"2026-02-20T19:24:18.408Z"},{"id":"file_mlva3vlk6hdll","name":"LECP-IT-W24_3RD SEMESTER TENTATIVE TIMETABLE.pdf","type":"file","url":"/assets/explorer/thispc/1771615467705_LECP-IT-W24_3RD_SEMESTER_TENTATIVE_TIMETABLE.pdf","mime":"application/pdf","size":117736,"timestamp":"2026-02-20T19:24:27.710Z"},{"id":"file_mlva3yazqz35x","name":"MID-1time table.jpg","type":"file","url":"/assets/explorer/thispc/1771615471212_MID-1time_table.jpg","mime":"image/jpeg","size":330530,"timestamp":"2026-02-20T19:24:31.220Z"}],"timestamp":"2026-02-20T18:16:41.321Z"},{"id":"folder_mlv7otjg","name":"SEM-4","type":"folder","items":[{"id":"folder_mlvab8h1","name":"Machine learning","type":"folder","items":[{"id":"file_mlvabmnxr81tr","name":"FOML(4341603) -Lab manual.pdf","type":"file","url":"/assets/explorer/thispc/1771615829373_FOML_4341603__-Lab_manual.pdf","mime":"application/pdf","size":1034992,"timestamp":"2026-02-20T19:30:29.393Z"},{"id":"file_mlvabmr80tg0h","name":"FOML-Assignement-SEM-4.docx","type":"file","url":"/assets/explorer/thispc/1771615829493_FOML-Assignement-SEM-4.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":31322,"timestamp":"2026-02-20T19:30:29.497Z"}],"timestamp":"2026-02-20T19:30:10.981Z"},{"id":"folder_mlvabck1","name":"OOPJ","type":"folder","items":[{"id":"file_mlvabwnaj7gzl","name":"4341602-OOPJ-Assignments.docx","type":"file","url":"/assets/explorer/thispc/1771615842311_4341602-OOPJ-Assignments.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":31557,"timestamp":"2026-02-20T19:30:42.342Z"},{"id":"file_mlvabx1x182hp","name":"4341602-OOPJ-Lab Manual.pdf","type":"file","url":"/assets/explorer/thispc/1771615842837_4341602-OOPJ-Lab_Manual.pdf","mime":"application/pdf","size":4694977,"timestamp":"2026-02-20T19:30:42.843Z"},{"id":"file_mlvabx2qe4u65","name":"JAVA_Micro projectList.pdf","type":"file","url":"/assets/explorer/thispc/1771615842866_JAVA_Micro_projectList.pdf","mime":"application/pdf","size":35892,"timestamp":"2026-02-20T19:30:42.868Z"},{"id":"file_mlvabx4u1yuh8","name":"OOPJ(4341602)-IMP question bank-SEM-4.docx.pdf","type":"file","url":"/assets/explorer/thispc/1771615842942_OOPJ_4341602_-IMP_question_bank-SEM-4.docx.pdf","mime":"application/pdf","size":68617,"timestamp":"2026-02-20T19:30:42.944Z"},{"id":"file_mlvabx74et553","name":"OOPJ_4341602syllabus.pdf","type":"file","url":"/assets/explorer/thispc/1771615843027_OOPJ_4341602syllabus.pdf","mime":"application/pdf","size":705346,"timestamp":"2026-02-20T19:30:43.039Z"}],"timestamp":"2026-02-20T19:30:16.273Z"},{"id":"folder_mlvabgb4","name":"WDPHP","type":"folder","items":[{"id":"file_mlvact6qhs38g","name":"4341604-WDPHP-LM.pdf","type":"file","url":"/assets/explorer/thispc/1771615884484_4341604-WDPHP-LM.pdf","mime":"application/pdf","size":3034347,"timestamp":"2026-02-20T19:31:24.515Z"}],"timestamp":"2026-02-20T19:30:21.136Z"},{"id":"file_mlvad4bjzqxgx","name":"LECD-IT-Student List-SEM-4-S25.pdf","type":"file","url":"/assets/explorer/thispc/1771615898911_LECD-IT-Student_List-SEM-4-S25.pdf","mime":"application/pdf","size":71832,"timestamp":"2026-02-20T19:31:38.928Z"}],"timestamp":"2026-02-20T18:16:45.964Z"},{"id":"folder_mlv7ow5w","name":"SEM-5","type":"folder","items":[{"id":"file_mlvagt1i3w1et","name":"ops.png","type":"file","url":"/assets/explorer/thispc/1771616070919_ops.png","mime":"image/png","size":13641,"timestamp":"2026-02-20T19:34:30.954Z"}],"timestamp":"2026-02-20T18:16:49.364Z"},{"id":"folder_mlv7qa67","name":"SEM-6","type":"folder","items":[{"id":"folder_mlvaoyij","name":"FOB 4361603","type":"folder","items":[{"id":"folder_mlvart8h","name":"Practicals","type":"folder","items":[{"id":"file_mlw2n8t9jt4fe","name":"Practical-1.1.py","type":"file","url":"/assets/explorer/root/1771663400562_Practical-1.1.py","mime":"text/x-python","size":623,"timestamp":"2026-02-21T08:43:20.584Z"},{"id":"file_mlw2n8ycl5z80","name":"Practical-1.2.py","type":"file","url":"/assets/explorer/root/1771663400725_Practical-1.2.py","mime":"text/x-python","size":687,"timestamp":"2026-02-21T08:43:20.726Z"},{"id":"file_mlw2n8zxmpyrs","name":"Practical-1.3.py","type":"file","url":"/assets/explorer/root/1771663400782_Practical-1.3.py","mime":"text/x-python","size":484,"timestamp":"2026-02-21T08:43:20.783Z"},{"id":"file_mlw2n91mzyfpo","name":"Practical-2.1.py","type":"file","url":"/assets/explorer/root/1771663400842_Practical-2.1.py","mime":"text/x-python","size":816,"timestamp":"2026-02-21T08:43:20.843Z"},{"id":"file_mlw2n93zuoite","name":"Practical-2.2.py","type":"file","url":"/assets/explorer/root/1771663400928_Practical-2.2.py","mime":"text/x-python","size":819,"timestamp":"2026-02-21T08:43:20.928Z"},{"id":"file_mlw2n96lo945d","name":"Practical-2.3.py","type":"file","url":"/assets/explorer/root/1771663401022_Practical-2.3.py","mime":"text/x-python","size":1042,"timestamp":"2026-02-21T08:43:21.026Z"},{"id":"file_mlw2n9985esde","name":"Practical-2.4.py","type":"file","url":"/assets/explorer/root/1771663401116_Practical-2.4.py","mime":"text/x-python","size":783,"timestamp":"2026-02-21T08:43:21.117Z"},{"id":"file_mlw2n9bk9pkhc","name":"Practical-2.5.py","type":"file","url":"/assets/explorer/root/1771663401200_Practical-2.5.py","mime":"text/x-python","size":577,"timestamp":"2026-02-21T08:43:21.201Z"},{"id":"file_mlw2n9dwkpdcp","name":"Practical-3.txt","type":"file","url":"/assets/explorer/root/1771663401285_Practical-3.txt","mime":"text/plain","size":2235,"timestamp":"2026-02-21T08:43:21.285Z"}],"timestamp":"2026-02-20T19:43:04.385Z","icon":"f:green"},{"id":"file_mlvap5u8meqc8","name":"4361603-FBC-LM.pdf","type":"file","url":"/assets/explorer/thispc/1771616460753_4361603-FBC-LM.pdf","mime":"application/pdf","size":1039526,"timestamp":"2026-02-20T19:41:00.799Z"}],"timestamp":"2026-02-20T19:40:51.259Z","icon":"f:green"},{"id":"folder_mlvanur6","name":"CSDF (4361601)","type":"folder","items":[{"id":"file_mlvaob7ktuukz","name":"4361601_Sem 6 Lab Manual.pdf","type":"file","url":"/assets/explorer/thispc/1771616421057_4361601_Sem_6_Lab_Manual.pdf","mime":"application/pdf","size":5670046,"timestamp":"2026-02-20T19:40:21.074Z"},{"id":"file_mlvaobbcbs25s","name":"Cyber Security=4361601.pdf","type":"file","url":"/assets/explorer/thispc/1771616421192_Cyber_Security_4361601.pdf","mime":"application/pdf","size":941390,"timestamp":"2026-02-20T19:40:21.197Z"},{"id":"file_mlvaobcuu5npl","name":"436161=Cyber Security-Micro Project-SEM-6=Final.doc","type":"file","url":"/assets/explorer/thispc/1771616421247_436161_Cyber_Security-Micro_Project-SEM-6_Final.doc","mime":"application/msword","size":69632,"timestamp":"2026-02-20T19:40:21.249Z"}],"timestamp":"2026-02-20T19:39:59.731Z"},{"id":"folder_mlvap8qm","name":"SD","type":"folder","items":[{"id":"file_mlvapc4vxew88","name":"SD Report writing format.docx","type":"file","url":"/assets/explorer/thispc/1771616468911_SD_Report_writing_format.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":37119,"timestamp":"2026-02-20T19:41:08.929Z"}],"timestamp":"2026-02-20T19:41:04.510Z"},{"id":"file_mlvaphj3okpmd","name":"time table","type":"file","url":"/assets/explorer/thispc/1771616475903_WhatsApp_Image_2025-12-22_at_10.34.28_AM.jpeg","mime":"image/jpeg","size":161697,"timestamp":"2026-02-20T19:41:15.920Z"},{"id":"file_mlvaptxjhfuje","name":"YUVA WEEK-2026 REGISTRATION NOTICE & RULES.pdf","type":"file","url":"/assets/explorer/thispc/1771616491976_YUVA_WEEK-2026_REGISTRATION_NOTICE___RULES.pdf","mime":"application/pdf","size":641406,"timestamp":"2026-02-20T19:41:32.007Z"},{"id":"file_mlvapzul43ycf","name":"DDCET-2026 Key Dates.pdf","type":"file","url":"/assets/explorer/thispc/1771616499647_DDCET-2026_Key_Dates.pdf","mime":"application/pdf","size":685259,"timestamp":"2026-02-20T19:41:39.689Z"},{"id":"folder_mm05kp5j","name":"CDCT","type":"folder","items":[{"id":"file_mm05sc0yd4det","name":"4361602_CDCT Lab Manual.pdf","type":"file","url":"/assets/explorer/root/1771910541540_4361602_CLOUD_and_DATA_CENTER_TECHNOLOGIES_Lab_Manual.pdf","mime":"application/pdf","size":1446700,"timestamp":"2026-02-24T05:22:21.561Z"},{"id":"folder_mm1mup5u","name":"Practicals","type":"folder","items":[{"id":"file_mm1mv8pjahdhj","name":"Practical-1.pdf","type":"file","url":"/assets/explorer/root/1771999696874_Practical-1.pdf","mime":"application/pdf","size":230978,"timestamp":"2026-02-25T06:08:16.937Z"},{"id":"file_mm1mv8xsbaapp","name":"Practical-2.pdf","type":"file","url":"/assets/explorer/root/1771999697153_Practical-2.pdf","mime":"application/pdf","size":215782,"timestamp":"2026-02-25T06:08:17.154Z"},{"id":"file_mm1mv91b9201l","name":"Practical-3.pdf","type":"file","url":"/assets/explorer/root/1771999697280_Practical-3.pdf","mime":"application/pdf","size":252217,"timestamp":"2026-02-25T06:08:17.283Z"},{"id":"file_mm1mv934grvar","name":"Practical-4.pdf","type":"file","url":"/assets/explorer/root/1771999697344_Practical-4.pdf","mime":"application/pdf","size":215468,"timestamp":"2026-02-25T06:08:17.355Z"},{"id":"file_mm1mv9561wlii","name":"Practical-5.pdf","type":"file","url":"/assets/explorer/root/1771999697419_Practical-5.pdf","mime":"application/pdf","size":257567,"timestamp":"2026-02-25T06:08:17.420Z"},{"id":"file_mm1mv97ybdoov","name":"Practical-6.pdf","type":"file","url":"/assets/explorer/root/1771999697519_Practical-6.pdf","mime":"application/pdf","size":374156,"timestamp":"2026-02-25T06:08:17.521Z"},{"id":"file_mm1mv9a6z9mjd","name":"Practical-7.pdf","type":"file","url":"/assets/explorer/root/1771999697598_Practical-7.pdf","mime":"application/pdf","size":295145,"timestamp":"2026-02-25T06:08:17.599Z"},{"id":"file_mm1mv9cnhq0dy","name":"Practical-8.pdf","type":"file","url":"/assets/explorer/root/1771999697688_Practical-8.pdf","mime":"application/pdf","size":719650,"timestamp":"2026-02-25T06:08:17.697Z"},{"id":"file_mm1mv9f5w8431","name":"Practical-9.pdf","type":"file","url":"/assets/explorer/root/1771999697777_Practical-9.pdf","mime":"application/pdf","size":459947,"timestamp":"2026-02-25T06:08:17.781Z"},{"id":"file_mm1mv9hfoeagv","name":"Practical-10.pdf","type":"file","url":"/assets/explorer/root/1771999697859_Practical-10.pdf","mime":"application/pdf","size":267925,"timestamp":"2026-02-25T06:08:17.861Z"},{"id":"file_mm1mv9jilqiye","name":"Practical-11.pdf","type":"file","url":"/assets/explorer/root/1771999697934_Practical-11.pdf","mime":"application/pdf","size":371777,"timestamp":"2026-02-25T06:08:17.943Z"},{"id":"file_mm1mvjvphq5l9","name":"Practical-12.pdf","type":"file","url":"/assets/explorer/root/1771999711334_Practical-12.pdf","mime":"application/pdf","size":411285,"timestamp":"2026-02-25T06:08:31.347Z"},{"id":"file_mm1mvoc0nutam","name":"1 TO 12 merged.pdf","type":"file","url":"/assets/explorer/root/1771999717105_1_TO_12_merged.pdf","mime":"application/pdf","size":3980524,"timestamp":"2026-02-25T06:08:37.132Z"}],"timestamp":"2026-02-25T06:07:51.522Z"}],"timestamp":"2026-02-24T05:16:25.304Z"}],"timestamp":"2026-02-20T18:17:54.175Z","icon":"f:pink"}],"timestamp":"2026-02-20T18:05:11.482Z"},{"id":"file_mm82kgb2ncj8h","name":"Search.mp4","type":"file","url":"/assets/explorer/root/1772388864400_Search.mp4","mime":"video/mp4","size":2285249,"timestamp":"2026-03-01T18:14:24.405Z"}]`),X0=[{id:"folder_mlv79xny",name:"DIPLOMA 2023",type:"folder",path:["folder_mlv79xny"],displayPath:"/THIS-PC/.../DIPLOMA 2023",isPrivate:!1,icon:"f:yellow",timestamp:1772202378411},{id:"folder_mlvaoyij",name:"FOB 4361603",type:"folder",path:["folder_mlv79xny","folder_mlv7qa67","folder_mlvaoyij"],displayPath:"/THIS-PC/.../FOB 4361603",isPrivate:!1,icon:"f:green",timestamp:1772202386037},{id:"url_mm4zs44s",name:"Book",type:"url",url:"https://www.tusharbr.online/book"}],ed={drive_a:L0,private:JSON.parse('{"id":"private","name":"Private Drive (P:)","type":"drive","items":[{"id":"folder_mlvvonmj","name":"Documents","type":"folder","items":[{"id":"folder_mlv9bk88","name":"MICRO PROJECT","type":"folder","items":[{"id":"file_mlv9bx47fqz3e","name":"CSDF-236340316058.docx","type":"file","url":"/assets/explorer/private/1771614163305_CSDF-236340316058.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":3775415,"timestamp":"2026-02-20T19:02:43.328Z"},{"id":"file_mlv9bxjt88i4v","name":"CSDF-236340316058.pdf","type":"file","url":"/assets/explorer/private/1771614163865_CSDF-236340316058.pdf","mime":"application/pdf","size":1803316,"timestamp":"2026-02-20T19:02:43.872Z"},{"id":"file_mlv9by2jfsi40","name":"CDCT-236340316058.docx","type":"file","url":"/assets/explorer/private/1771614164539_CDCT-236340316058.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":9228898,"timestamp":"2026-02-20T19:02:44.567Z"},{"id":"file_mlv9by7fd3q5y","name":"CDCT-236340316058.pdf","type":"file","url":"/assets/explorer/private/1771614164716_CDCT-236340316058.pdf","mime":"application/pdf","size":1379382,"timestamp":"2026-02-20T19:02:44.724Z"},{"id":"file_mlv9bz8p6g76e","name":"FOB-236340316058.docx","type":"file","url":"/assets/explorer/private/1771614166058_FOB-236340316058.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":11904469,"timestamp":"2026-02-20T19:02:46.097Z"},{"id":"file_mlv9bzep6wamz","name":"FOB-236340316058.pdf","type":"file","url":"/assets/explorer/private/1771614166273_FOB-236340316058.pdf","mime":"application/pdf","size":1572220,"timestamp":"2026-02-20T19:02:46.312Z"},{"id":"file_mlv9c04ub9i4e","name":"SD-236340316058.docx","type":"file","url":"/assets/explorer/private/1771614167215_SD-236340316058.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":10088063,"timestamp":"2026-02-20T19:02:47.626Z"},{"id":"file_mlv9c0xavde47","name":"SD-236340316058.pdf","type":"file","url":"/assets/explorer/private/1771614168238_SD-236340316058.pdf","mime":"application/pdf","size":1147360,"timestamp":"2026-02-20T19:02:48.254Z"},{"id":"file_mlv9c0zx10mif","name":"15week-SD-report-236340316058.docx","type":"file","url":"/assets/explorer/private/1771614168333_15week-SD-report-236340316058.docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","size":24724,"timestamp":"2026-02-20T19:02:48.341Z"},{"id":"file_mlv9c13zpm82q","name":"15week-SD-report-236340316058.pdf","type":"file","url":"/assets/explorer/private/1771614168480_15week-SD-report-236340316058.pdf","mime":"application/pdf","size":269565,"timestamp":"2026-02-20T19:02:48.503Z"},{"id":"file_mlv9c1k1k4ig3","name":"infographic.png","type":"file","url":"/assets/explorer/private/1771614169057_infographic.png","mime":"image/png","size":2112527,"timestamp":"2026-02-20T19:02:49.067Z"}],"timestamp":"2026-02-20T19:02:26.601Z"},{"id":"folder_mktn4x72","name":"Images","type":"folder","items":[{"id":"file_mktn752jp5t23","name":"cover.jpg","type":"file","url":"/assets/explorer/private/1769339740267_cover.jpg","mime":"image/jpeg","size":75781,"timestamp":"2026-01-25T11:15:40.272Z"},{"id":"file_mktn7593r8e4c","name":"Gemini_Generated_Image_u3e6mnu3e6mnu3e6.png","type":"file","url":"/assets/explorer/private/1769339740505_Gemini_Generated_Image_u3e6mnu3e6mnu3e6.png","mime":"image/png","size":698398,"timestamp":"2026-01-25T11:15:40.538Z"},{"id":"file_mktn75ejsnjsl","name":"icard.png","type":"file","url":"/assets/explorer/private/1769339740700_icard.png","mime":"image/png","size":81701,"timestamp":"2026-01-25T11:15:40.702Z"},{"id":"file_mktn75fqbi9h0","name":"logoicon.png","type":"file","url":"/assets/explorer/private/1769339740742_logoicon.png","mime":"image/png","size":17716,"timestamp":"2026-01-25T11:15:40.767Z"},{"id":"file_mktn75pt663os","name":"word-image-244229-1.png","type":"file","url":"/assets/explorer/private/1769339741105_word-image-244229-1.png","mime":"image/png","size":607006,"timestamp":"2026-01-25T11:15:41.134Z"},{"id":"file_mktn7bofna8cn","name":"YT - AD.png","type":"file","url":"/assets/explorer/private/1769339748833_YT_-_AD.png","mime":"image/png","size":191180,"timestamp":"2026-01-25T11:15:48.871Z"},{"id":"file_mlvw0hbfr7ncf","name":"old oppo (19).jpg","type":"file","url":"/assets/explorer/private/1771652260780_old_oppo__19_.jpg","mime":"image/jpeg","size":3330583,"timestamp":"2026-02-21T05:37:40.783Z"},{"id":"file_mlvw0hkcl0yjl","name":"old oppo (20).jpg","type":"file","url":"/assets/explorer/private/1771652261100_old_oppo__20_.jpg","mime":"image/jpeg","size":3238724,"timestamp":"2026-02-21T05:37:41.106Z"},{"id":"file_mlvw0hroi9uqd","name":"old oppo (27).jpg","type":"file","url":"/assets/explorer/private/1771652261364_old_oppo__27_.jpg","mime":"image/jpeg","size":3743538,"timestamp":"2026-02-21T05:37:41.375Z"}],"timestamp":"2026-01-25T11:13:56.750Z"},{"id":"folder_mlvvriwv","name":"commands ","type":"folder","items":[{"id":"file_mlvvrs3iqkkwq","name":"CMD (2).png","type":"file","url":"/assets/explorer/private/1771651854849_CMD__2_.png","mime":"image/png","size":20217,"timestamp":"2026-02-21T05:30:54.867Z"},{"id":"file_mlvvrsbf5cbnr","name":"CMD (3).png","type":"file","url":"/assets/explorer/private/1771651855132_CMD__3_.png","mime":"image/png","size":25512,"timestamp":"2026-02-21T05:30:55.146Z"},{"id":"file_mlvvrsgzsr85h","name":"CMD (4).png","type":"file","url":"/assets/explorer/private/1771651855331_CMD__4_.png","mime":"image/png","size":93509,"timestamp":"2026-02-21T05:30:55.333Z"},{"id":"file_mlvvrsjg6dy8o","name":"CMD (5).png","type":"file","url":"/assets/explorer/private/1771651855420_CMD__5_.png","mime":"image/png","size":47140,"timestamp":"2026-02-21T05:30:55.422Z"},{"id":"file_mlvvrsltvbfcn","name":"CMD (6).png","type":"file","url":"/assets/explorer/private/1771651855505_CMD__6_.png","mime":"image/png","size":101901,"timestamp":"2026-02-21T05:30:55.507Z"},{"id":"file_mlvvrsqdeh664","name":"CMD (7).png","type":"file","url":"/assets/explorer/private/1771651855669_CMD__7_.png","mime":"image/png","size":108425,"timestamp":"2026-02-21T05:30:55.672Z"},{"id":"file_mlvvrsu7be3zu","name":"CMD (8).png","type":"file","url":"/assets/explorer/private/1771651855811_CMD__8_.png","mime":"image/png","size":60177,"timestamp":"2026-02-21T05:30:55.813Z"},{"id":"file_mlvvrsxar0fdt","name":"CMD (9).png","type":"file","url":"/assets/explorer/private/1771651855919_CMD__9_.png","mime":"image/png","size":26152,"timestamp":"2026-02-21T05:30:55.934Z"},{"id":"file_mlvvrt0bm43i3","name":"CMD (10).png","type":"file","url":"/assets/explorer/private/1771651856027_CMD__10_.png","mime":"image/png","size":25319,"timestamp":"2026-02-21T05:30:56.028Z"},{"id":"file_mlvvrt2u06gkb","name":"CMD (11).png","type":"file","url":"/assets/explorer/private/1771651856118_CMD__11_.png","mime":"image/png","size":155971,"timestamp":"2026-02-21T05:30:56.119Z"},{"id":"file_mlvvrt7xtm9f8","name":"CMD (12).png","type":"file","url":"/assets/explorer/private/1771651856301_CMD__12_.png","mime":"image/png","size":148938,"timestamp":"2026-02-21T05:30:56.303Z"},{"id":"file_mlvvrtcnjc32k","name":"CMD (13).png","type":"file","url":"/assets/explorer/private/1771651856471_CMD__13_.png","mime":"image/png","size":153784,"timestamp":"2026-02-21T05:30:56.476Z"},{"id":"file_mlvvrtfodlxel","name":"CMD (14).png","type":"file","url":"/assets/explorer/private/1771651856580_CMD__14_.png","mime":"image/png","size":24388,"timestamp":"2026-02-21T05:30:56.581Z"},{"id":"file_mlvvrthyhm6g4","name":"CMD (15).png","type":"file","url":"/assets/explorer/private/1771651856662_CMD__15_.png","mime":"image/png","size":219499,"timestamp":"2026-02-21T05:30:56.663Z"},{"id":"file_mlvvrtk33k554","name":"CMD (16).png","type":"file","url":"/assets/explorer/private/1771651856739_CMD__16_.png","mime":"image/png","size":39416,"timestamp":"2026-02-21T05:30:56.740Z"},{"id":"file_mlvvrtmif72w3","name":"CMD (17).png","type":"file","url":"/assets/explorer/private/1771651856826_CMD__17_.png","mime":"image/png","size":43013,"timestamp":"2026-02-21T05:30:56.829Z"},{"id":"file_mlvvrtoqm02lz","name":"CMD (18).png","type":"file","url":"/assets/explorer/private/1771651856906_CMD__18_.png","mime":"image/png","size":49023,"timestamp":"2026-02-21T05:30:56.908Z"},{"id":"file_mlvvrtr2txwhm","name":"CMD (19).png","type":"file","url":"/assets/explorer/private/1771651856990_CMD__19_.png","mime":"image/png","size":268991,"timestamp":"2026-02-21T05:30:56.992Z"},{"id":"file_mlvvrttimy8sb","name":"CMD (20).png","type":"file","url":"/assets/explorer/private/1771651857078_CMD__20_.png","mime":"image/png","size":59037,"timestamp":"2026-02-21T05:30:57.079Z"},{"id":"file_mlvvrtvue1719","name":"CMD (21).png","type":"file","url":"/assets/explorer/private/1771651857162_CMD__21_.png","mime":"image/png","size":45033,"timestamp":"2026-02-21T05:30:57.163Z"},{"id":"file_mlvvrty6wd7g1","name":"CMD (22).png","type":"file","url":"/assets/explorer/private/1771651857247_CMD__22_.png","mime":"image/png","size":44029,"timestamp":"2026-02-21T05:30:57.249Z"},{"id":"file_mlvvru0njnt2m","name":"CMD (23).png","type":"file","url":"/assets/explorer/private/1771651857335_CMD__23_.png","mime":"image/png","size":257705,"timestamp":"2026-02-21T05:30:57.341Z"},{"id":"file_mlvvru31un1uw","name":"CMD (24).png","type":"file","url":"/assets/explorer/private/1771651857422_CMD__24_.png","mime":"image/png","size":75601,"timestamp":"2026-02-21T05:30:57.423Z"},{"id":"file_mlvvru51or0fz","name":"CMD (25).png","type":"file","url":"/assets/explorer/private/1771651857496_CMD__25_.png","mime":"image/png","size":77626,"timestamp":"2026-02-21T05:30:57.507Z"},{"id":"file_mlvvru86mpmlb","name":"CMD (26).png","type":"file","url":"/assets/explorer/private/1771651857606_CMD__26_.png","mime":"image/png","size":277787,"timestamp":"2026-02-21T05:30:57.607Z"},{"id":"file_mlvvruajn0gyj","name":"CMD (27).png","type":"file","url":"/assets/explorer/private/1771651857691_CMD__27_.png","mime":"image/png","size":247879,"timestamp":"2026-02-21T05:30:57.692Z"},{"id":"file_mlvvrucxpycoi","name":"CMD (28).png","type":"file","url":"/assets/explorer/private/1771651857778_CMD__28_.png","mime":"image/png","size":168846,"timestamp":"2026-02-21T05:30:57.779Z"},{"id":"file_mlvvrufiar610","name":"CMD (29).png","type":"file","url":"/assets/explorer/private/1771651857871_CMD__29_.png","mime":"image/png","size":59605,"timestamp":"2026-02-21T05:30:57.878Z"},{"id":"file_mlvvrui1mscjz","name":"CMD (30).png","type":"file","url":"/assets/explorer/private/1771651857961_CMD__30_.png","mime":"image/png","size":74518,"timestamp":"2026-02-21T05:30:57.962Z"},{"id":"file_mlvvrukj1inzh","name":"CMD (31).png","type":"file","url":"/assets/explorer/private/1771651858054_CMD__31_.png","mime":"image/png","size":143695,"timestamp":"2026-02-21T05:30:58.055Z"},{"id":"file_mlvvrumxrzvqx","name":"CMD (32).png","type":"file","url":"/assets/explorer/private/1771651858137_CMD__32_.png","mime":"image/png","size":98092,"timestamp":"2026-02-21T05:30:58.139Z"},{"id":"file_mlvvrupidwig5","name":"CMD (33).png","type":"file","url":"/assets/explorer/private/1771651858237_CMD__33_.png","mime":"image/png","size":117355,"timestamp":"2026-02-21T05:30:58.238Z"},{"id":"file_mlvvrus7yink3","name":"CMD (34).png","type":"file","url":"/assets/explorer/private/1771651858327_CMD__34_.png","mime":"image/png","size":170408,"timestamp":"2026-02-21T05:30:58.329Z"},{"id":"file_mlvvruuc14uru","name":"CMD (35).png","type":"file","url":"/assets/explorer/private/1771651858409_CMD__35_.png","mime":"image/png","size":46725,"timestamp":"2026-02-21T05:30:58.425Z"},{"id":"file_mlvvruw9zj3op","name":"CMD (1).png","type":"file","url":"/assets/explorer/private/1771651858482_CMD__1_.png","mime":"image/png","size":34147,"timestamp":"2026-02-21T05:30:58.493Z"}],"timestamp":"2026-02-21T05:30:42.943Z"},{"id":"folder_mlvwa6fo","name":"kali linux tools icon","type":"folder","items":[{"id":"file_mlvwabt8o6b7p","name":"aircrack-ng.png","type":"file","url":"/assets/explorer/private/1771652720280_aircrack-ng.png","mime":"image/png","size":39335,"timestamp":"2026-02-21T05:45:20.312Z"},{"id":"file_mlvwac2f1wd1k","name":"amass.png","type":"file","url":"/assets/explorer/private/1771652720536_amass.png","mime":"image/png","size":10781,"timestamp":"2026-02-21T05:45:20.538Z"},{"id":"file_mlvwac5eag3m5","name":"APKTool.png","type":"file","url":"/assets/explorer/private/1771652720642_APKTool.png","mime":"image/png","size":13338,"timestamp":"2026-02-21T05:45:20.646Z"},{"id":"file_mlvwac82vzop6","name":"arping.png","type":"file","url":"/assets/explorer/private/1771652720738_arping.png","mime":"image/png","size":36818,"timestamp":"2026-02-21T05:45:20.742Z"},{"id":"file_mlvwacb75mrwp","name":"Arp-scan.png","type":"file","url":"/assets/explorer/private/1771652720851_Arp-scan.png","mime":"image/png","size":81608,"timestamp":"2026-02-21T05:45:20.852Z"},{"id":"file_mlvwace1kzzx4","name":"Autopsy.png","type":"file","url":"/assets/explorer/private/1771652720953_Autopsy.png","mime":"image/png","size":77073,"timestamp":"2026-02-21T05:45:20.954Z"},{"id":"file_mlvwacgug223x","name":"bed.png","type":"file","url":"/assets/explorer/private/1771652721054_bed.png","mime":"image/png","size":29640,"timestamp":"2026-02-21T05:45:21.055Z"},{"id":"file_mlvwacjif3pbg","name":"BeEF.png","type":"file","url":"/assets/explorer/private/1771652721150_BeEF.png","mime":"image/png","size":48825,"timestamp":"2026-02-21T05:45:21.151Z"},{"id":"file_mlvwacmc96k7n","name":"bettercap.png","type":"file","url":"/assets/explorer/private/1771652721252_bettercap.png","mime":"image/png","size":26459,"timestamp":"2026-02-21T05:45:21.253Z"},{"id":"file_mlvwacpatetsi","name":"Binwalk.png","type":"file","url":"/assets/explorer/private/1771652721358_Binwalk.png","mime":"image/png","size":72692,"timestamp":"2026-02-21T05:45:21.360Z"},{"id":"file_mlvwacspqigas","name":"BloodHound.png","type":"file","url":"/assets/explorer/private/1771652721481_BloodHound.png","mime":"image/png","size":48493,"timestamp":"2026-02-21T05:45:21.482Z"},{"id":"file_mlvwacvov62ha","name":"bloodyad.png","type":"file","url":"/assets/explorer/private/1771652721588_bloodyad.png","mime":"image/png","size":21332,"timestamp":"2026-02-21T05:45:21.589Z"},{"id":"file_mlvwacywlvp80","name":"bully.png","type":"file","url":"/assets/explorer/private/1771652721704_bully.png","mime":"image/png","size":41466,"timestamp":"2026-02-21T05:45:21.705Z"},{"id":"file_mlvwad30v16vj","name":"burpsuite.png","type":"file","url":"/assets/explorer/private/1771652721852_burpsuite.png","mime":"image/png","size":19930,"timestamp":"2026-02-21T05:45:21.854Z"},{"id":"file_mlvwad622st20","name":"caido.png","type":"file","url":"/assets/explorer/private/1771652721963_caido.png","mime":"image/png","size":54790,"timestamp":"2026-02-21T05:45:21.963Z"},{"id":"file_mlvwad95n8rcs","name":"cewl.png","type":"file","url":"/assets/explorer/private/1771652722073_cewl.png","mime":"image/png","size":32025,"timestamp":"2026-02-21T05:45:22.074Z"},{"id":"file_mlvwadcj8nfkq","name":"CrackMapExec.png","type":"file","url":"/assets/explorer/private/1771652722195_CrackMapExec.png","mime":"image/png","size":39448,"timestamp":"2026-02-21T05:45:22.197Z"},{"id":"file_mlvwadfppd229","name":"crowbar.png","type":"file","url":"/assets/explorer/private/1771652722310_crowbar.png","mime":"image/png","size":37822,"timestamp":"2026-02-21T05:45:22.310Z"},{"id":"file_mlvwadj595ilt","name":"crunch.png","type":"file","url":"/assets/explorer/private/1771652722434_crunch.png","mime":"image/png","size":12325,"timestamp":"2026-02-21T05:45:22.434Z"},{"id":"file_mlvwadm7w7jpy","name":"dirb.png","type":"file","url":"/assets/explorer/private/1771652722544_dirb.png","mime":"image/png","size":20428,"timestamp":"2026-02-21T05:45:22.545Z"},{"id":"file_mlvwadpfhcnqn","name":"dirbuster.png","type":"file","url":"/assets/explorer/private/1771652722659_dirbuster.png","mime":"image/png","size":28319,"timestamp":"2026-02-21T05:45:22.663Z"},{"id":"file_mlvwadsilfck3","name":"dirsearch.png","type":"file","url":"/assets/explorer/private/1771652722770_dirsearch.png","mime":"image/png","size":36874,"timestamp":"2026-02-21T05:45:22.773Z"},{"id":"file_mlvwadvo8punj","name":"dmitry.png","type":"file","url":"/assets/explorer/private/1771652722884_dmitry.png","mime":"image/png","size":47113,"timestamp":"2026-02-21T05:45:22.886Z"},{"id":"file_mlvwadymia7ur","name":"dnschef.png","type":"file","url":"/assets/explorer/private/1771652722990_dnschef.png","mime":"image/png","size":21269,"timestamp":"2026-02-21T05:45:22.992Z"},{"id":"file_mlvwae1sf75b5","name":"dnsenum.png","type":"file","url":"/assets/explorer/private/1771652723105_dnsenum.png","mime":"image/png","size":40569,"timestamp":"2026-02-21T05:45:23.106Z"},{"id":"file_mlvwae4o4vm0n","name":"Dradis.png","type":"file","url":"/assets/explorer/private/1771652723208_Dradis.png","mime":"image/png","size":41306,"timestamp":"2026-02-21T05:45:23.209Z"},{"id":"file_mlvwae7i5bymb","name":"dvwa.png","type":"file","url":"/assets/explorer/private/1771652723311_dvwa.png","mime":"image/png","size":39761,"timestamp":"2026-02-21T05:45:23.314Z"},{"id":"file_mlvwaea4p2gma","name":"Ettercap.png","type":"file","url":"/assets/explorer/private/1771652723405_Ettercap.png","mime":"image/png","size":34202,"timestamp":"2026-02-21T05:45:23.405Z"},{"id":"file_mlvwaedcowpy6","name":"evil-winrm.png","type":"file","url":"/assets/explorer/private/1771652723520_evil-winrm.png","mime":"image/png","size":26001,"timestamp":"2026-02-21T05:45:23.521Z"},{"id":"file_mlvwaeg11wx65","name":"eyewitness.png","type":"file","url":"/assets/explorer/private/1771652723617_eyewitness.png","mime":"image/png","size":26638,"timestamp":"2026-02-21T05:45:23.619Z"},{"id":"file_mlvwaej2rj6aq","name":"feroxbuster.png","type":"file","url":"/assets/explorer/private/1771652723726_feroxbuster.png","mime":"image/png","size":12768,"timestamp":"2026-02-21T05:45:23.728Z"},{"id":"file_mlvwaelv4aqyk","name":"ffuf.png","type":"file","url":"/assets/explorer/private/1771652723827_ffuf.png","mime":"image/png","size":15433,"timestamp":"2026-02-21T05:45:23.829Z"},{"id":"file_mlvwaeqmumkp9","name":"fierce.png","type":"file","url":"/assets/explorer/private/1771652723998_fierce.png","mime":"image/png","size":24957,"timestamp":"2026-02-21T05:45:23.999Z"},{"id":"file_mlvwaetnx01qu","name":"Foremost.png","type":"file","url":"/assets/explorer/private/1771652724107_Foremost.png","mime":"image/png","size":9914,"timestamp":"2026-02-21T05:45:24.109Z"},{"id":"file_mlvwaewiifkb3","name":"gemini-cli.png","type":"file","url":"/assets/explorer/private/1771652724211_gemini-cli.png","mime":"image/png","size":39083,"timestamp":"2026-02-21T05:45:24.212Z"},{"id":"file_mlvwaezksyyku","name":"genpmk.png","type":"file","url":"/assets/explorer/private/1771652724321_genpmk.png","mime":"image/png","size":20659,"timestamp":"2026-02-21T05:45:24.322Z"},{"id":"file_mlvwaf2dv8w6l","name":"Ghidra.png","type":"file","url":"/assets/explorer/private/1771652724421_Ghidra.png","mime":"image/png","size":28696,"timestamp":"2026-02-21T05:45:24.422Z"},{"id":"file_mlvwaf6ogm158","name":"gobuster.png","type":"file","url":"/assets/explorer/private/1771652724576_gobuster.png","mime":"image/png","size":36746,"timestamp":"2026-02-21T05:45:24.577Z"},{"id":"file_mlvwafa5gba77","name":"hashcat.png","type":"file","url":"/assets/explorer/private/1771652724701_hashcat.png","mime":"image/png","size":17149,"timestamp":"2026-02-21T05:45:24.702Z"},{"id":"file_mlvwafbkjer6h","name":"hash-identifier.png","type":"file","url":"/assets/explorer/private/1771652724753_hash-identifier.png","mime":"image/png","size":23279,"timestamp":"2026-02-21T05:45:24.789Z"},{"id":"file_mlvwafgvph0b2","name":"Hping3.png","type":"file","url":"/assets/explorer/private/1771652724943_Hping3.png","mime":"image/png","size":23506,"timestamp":"2026-02-21T05:45:24.944Z"},{"id":"file_mlvwafk30jse6","name":"hydra.png","type":"file","url":"/assets/explorer/private/1771652725059_hydra.png","mime":"image/png","size":56152,"timestamp":"2026-02-21T05:45:25.063Z"},{"id":"file_mlvwafnc9f0xc","name":"Impacket.png","type":"file","url":"/assets/explorer/private/1771652725176_Impacket.png","mime":"image/png","size":24754,"timestamp":"2026-02-21T05:45:25.177Z"},{"id":"file_mlvwafqb3bbsa","name":"JADX.png","type":"file","url":"/assets/explorer/private/1771652725283_JADX.png","mime":"image/png","size":24700,"timestamp":"2026-02-21T05:45:25.285Z"},{"id":"file_mlvwaft8642x7","name":"John the Ripper.png","type":"file","url":"/assets/explorer/private/1771652725388_John_the_Ripper.png","mime":"image/png","size":5709,"timestamp":"2026-02-21T05:45:25.392Z"},{"id":"file_mlvwafwd48030","name":"Kali NetHunter.jpg","type":"file","url":"/assets/explorer/private/1771652725501_Kali_NetHunter.jpg","mime":"image/jpeg","size":26390,"timestamp":"2026-02-21T05:45:25.502Z"},{"id":"file_mlvwafz0q2o8e","name":"kismet.png","type":"file","url":"/assets/explorer/private/1771652725597_kismet.png","mime":"image/png","size":15194,"timestamp":"2026-02-21T05:45:25.597Z"},{"id":"file_mlvwag1jfzwa6","name":"legion.png","type":"file","url":"/assets/explorer/private/1771652725687_legion.png","mime":"image/png","size":30691,"timestamp":"2026-02-21T05:45:25.688Z"},{"id":"file_mlvwag475jvxr","name":"libyara-dev.png","type":"file","url":"/assets/explorer/private/1771652725783_libyara-dev.png","mime":"image/png","size":9338,"timestamp":"2026-02-21T05:45:25.785Z"},{"id":"file_mlvwag6nufbud","name":"lynis.png","type":"file","url":"/assets/explorer/private/1771652725872_lynis.png","mime":"image/png","size":7928,"timestamp":"2026-02-21T05:45:25.874Z"},{"id":"file_mlvwag90w15ht","name":"macchanger.png","type":"file","url":"/assets/explorer/private/1771652725956_macchanger.png","mime":"image/png","size":10643,"timestamp":"2026-02-21T05:45:25.960Z"},{"id":"file_mlvwagbc2rpfk","name":"maltego.png","type":"file","url":"/assets/explorer/private/1771652726040_maltego.png","mime":"image/png","size":112015,"timestamp":"2026-02-21T05:45:26.041Z"},{"id":"file_mlvwagdl6ii05","name":"Masscan.png","type":"file","url":"/assets/explorer/private/1771652726122_Masscan.png","mime":"image/png","size":112511,"timestamp":"2026-02-21T05:45:26.135Z"},{"id":"file_mlvwagg431ma9","name":"medusa.png","type":"file","url":"/assets/explorer/private/1771652726212_medusa.png","mime":"image/png","size":43319,"timestamp":"2026-02-21T05:45:26.213Z"},{"id":"file_mlvwagih9lt1d","name":"Metasploit Framework.png","type":"file","url":"/assets/explorer/private/1771652726297_Metasploit_Framework.png","mime":"image/png","size":43179,"timestamp":"2026-02-21T05:45:26.298Z"},{"id":"file_mlvwagkvjb7ms","name":"Mimikatz.png","type":"file","url":"/assets/explorer/private/1771652726383_Mimikatz.png","mime":"image/png","size":62158,"timestamp":"2026-02-21T05:45:26.384Z"},{"id":"file_mlvwagnbhnp3c","name":"Nessus.png","type":"file","url":"/assets/explorer/private/1771652726471_Nessus.png","mime":"image/png","size":9489,"timestamp":"2026-02-21T05:45:26.472Z"},{"id":"file_mlvwagps0ln68","name":"Netcat.png","type":"file","url":"/assets/explorer/private/1771652726560_Netcat.png","mime":"image/png","size":26056,"timestamp":"2026-02-21T05:45:26.561Z"},{"id":"file_mlvwagrzfdlem","name":"netdiscover.png","type":"file","url":"/assets/explorer/private/1771652726640_netdiscover.png","mime":"image/png","size":27421,"timestamp":"2026-02-21T05:45:26.641Z"},{"id":"file_mlvwaguh22vgi","name":"netexec.png","type":"file","url":"/assets/explorer/private/1771652726729_netexec.png","mime":"image/png","size":38282,"timestamp":"2026-02-21T05:45:26.730Z"},{"id":"file_mlvwagwxtavlv","name":"Nikto.png","type":"file","url":"/assets/explorer/private/1771652726817_Nikto.png","mime":"image/png","size":31116,"timestamp":"2026-02-21T05:45:26.823Z"},{"id":"file_mlvwagzgvr050","name":"nmap.png","type":"file","url":"/assets/explorer/private/1771652726908_nmap.png","mime":"image/png","size":212949,"timestamp":"2026-02-21T05:45:26.911Z"},{"id":"file_mlvwah23vx1ej","name":"nuclei.png","type":"file","url":"/assets/explorer/private/1771652727003_nuclei.png","mime":"image/png","size":27949,"timestamp":"2026-02-21T05:45:27.005Z"},{"id":"file_mlvwah4vhwtaf","name":"open vas.png","type":"file","url":"/assets/explorer/private/1771652727103_open_vas.png","mime":"image/png","size":24439,"timestamp":"2026-02-21T05:45:27.104Z"},{"id":"file_mlvwah7gjamfk","name":"powershell.png","type":"file","url":"/assets/explorer/private/1771652727196_powershell.png","mime":"image/png","size":40935,"timestamp":"2026-02-21T05:45:27.197Z"},{"id":"file_mlvwaha1f9q8h","name":"powershell-empire.png","type":"file","url":"/assets/explorer/private/1771652727290_powershell-empire.png","mime":"image/png","size":30861,"timestamp":"2026-02-21T05:45:27.291Z"},{"id":"file_mlvwahckg0lfq","name":"Proxychains.png","type":"file","url":"/assets/explorer/private/1771652727381_Proxychains.png","mime":"image/png","size":26765,"timestamp":"2026-02-21T05:45:27.382Z"},{"id":"file_mlvwahf6sx99e","name":"python3-scapy.png","type":"file","url":"/assets/explorer/private/1771652727474_python3-scapy.png","mime":"image/png","size":22499,"timestamp":"2026-02-21T05:45:27.475Z"},{"id":"file_mlvwahhuw54nh","name":"Radare2.png","type":"file","url":"/assets/explorer/private/1771652727570_Radare2.png","mime":"image/png","size":12803,"timestamp":"2026-02-21T05:45:27.571Z"},{"id":"file_mlvwahkj8h9uf","name":"Reaver.png","type":"file","url":"/assets/explorer/private/1771652727667_Reaver.png","mime":"image/png","size":22119,"timestamp":"2026-02-21T05:45:27.668Z"},{"id":"file_mlvwahn4lmxam","name":"recon-ng.png","type":"file","url":"/assets/explorer/private/1771652727760_recon-ng.png","mime":"image/png","size":9541,"timestamp":"2026-02-21T05:45:27.761Z"},{"id":"file_mlvwahpu754w6","name":"Responder.png","type":"file","url":"/assets/explorer/private/1771652727858_Responder.png","mime":"image/png","size":16750,"timestamp":"2026-02-21T05:45:27.859Z"},{"id":"file_mlvwahsbe9hjq","name":"RouterSploit.png","type":"file","url":"/assets/explorer/private/1771652727948_RouterSploit.png","mime":"image/png","size":80952,"timestamp":"2026-02-21T05:45:27.952Z"},{"id":"file_mlvwahv06l86g","name":"Searchsploit -exploitdb.png","type":"file","url":"/assets/explorer/private/1771652728044_Searchsploit_-exploitdb.png","mime":"image/png","size":78410,"timestamp":"2026-02-21T05:45:28.046Z"},{"id":"file_mlvwahxjxjkk2","name":"SET.png","type":"file","url":"/assets/explorer/private/1771652728135_SET.png","mime":"image/png","size":18771,"timestamp":"2026-02-21T05:45:28.145Z"},{"id":"file_mlvwai00cej1m","name":"sharphound.png","type":"file","url":"/assets/explorer/private/1771652728225_sharphound.png","mime":"image/png","size":28467,"timestamp":"2026-02-21T05:45:28.226Z"},{"id":"file_mlvwai2dcyxpi","name":"Shodan.png","type":"file","url":"/assets/explorer/private/1771652728309_Shodan.png","mime":"image/png","size":12651,"timestamp":"2026-02-21T05:45:28.314Z"},{"id":"file_mlvwai4z8dy57","name":"smtp-user-enum.png","type":"file","url":"/assets/explorer/private/1771652728403_smtp-user-enum.png","mime":"image/png","size":24120,"timestamp":"2026-02-21T05:45:28.405Z"},{"id":"file_mlvwai7oek7fg","name":"snort.png","type":"file","url":"/assets/explorer/private/1771652728501_snort.png","mime":"image/png","size":30030,"timestamp":"2026-02-21T05:45:28.508Z"},{"id":"file_mlvwaia41l9ak","name":"Socat.png","type":"file","url":"/assets/explorer/private/1771652728588_Socat.png","mime":"image/png","size":39542,"timestamp":"2026-02-21T05:45:28.589Z"},{"id":"file_mlvwaicq5vmkz","name":"spiderfoot.png","type":"file","url":"/assets/explorer/private/1771652728683_spiderfoot.png","mime":"image/png","size":40881,"timestamp":"2026-02-21T05:45:28.684Z"},{"id":"file_mlvwaigmx2ne5","name":"spike.png","type":"file","url":"/assets/explorer/private/1771652728822_spike.png","mime":"image/png","size":33951,"timestamp":"2026-02-21T05:45:28.824Z"},{"id":"file_mlvwail5jfqkv","name":"sqlmap.png","type":"file","url":"/assets/explorer/private/1771652728985_sqlmap.png","mime":"image/png","size":6901,"timestamp":"2026-02-21T05:45:28.986Z"},{"id":"file_mlvwaioivymtm","name":"sqlninja.png","type":"file","url":"/assets/explorer/private/1771652729106_sqlninja.png","mime":"image/png","size":34503,"timestamp":"2026-02-21T05:45:29.111Z"},{"id":"file_mlvwairy62mr8","name":"sslscan.png","type":"file","url":"/assets/explorer/private/1771652729230_sslscan.png","mime":"image/png","size":29457,"timestamp":"2026-02-21T05:45:29.231Z"},{"id":"file_mlvwaiusy4hby","name":"Subfinder.png","type":"file","url":"/assets/explorer/private/1771652729333_Subfinder.png","mime":"image/png","size":20899,"timestamp":"2026-02-21T05:45:29.345Z"},{"id":"file_mlvwaixsj1ka6","name":"tcpdump.png","type":"file","url":"/assets/explorer/private/1771652729440_tcpdump.png","mime":"image/png","size":27346,"timestamp":"2026-02-21T05:45:29.443Z"},{"id":"file_mlvwaj0ru3zh7","name":"testdisk.png","type":"file","url":"/assets/explorer/private/1771652729548_testdisk.png","mime":"image/png","size":16063,"timestamp":"2026-02-21T05:45:29.549Z"},{"id":"file_mlvwaj44ag60o","name":"theharvester.png","type":"file","url":"/assets/explorer/private/1771652729668_theharvester.png","mime":"image/png","size":18854,"timestamp":"2026-02-21T05:45:29.669Z"},{"id":"file_mlvwaj6rmrnnd","name":"Tor.jpg","type":"file","url":"/assets/explorer/private/1771652729763_Tor.jpg","mime":"image/jpeg","size":41023,"timestamp":"2026-02-21T05:45:29.769Z"},{"id":"file_mlvwaj9mtc3z2","name":"wafw00f.png","type":"file","url":"/assets/explorer/private/1771652729867_wafw00f.png","mime":"image/png","size":38623,"timestamp":"2026-02-21T05:45:29.867Z"},{"id":"file_mlvwajcahzb4i","name":"wapiti.png","type":"file","url":"/assets/explorer/private/1771652729962_wapiti.png","mime":"image/png","size":40329,"timestamp":"2026-02-21T05:45:29.968Z"},{"id":"file_mlvwajexx1qd4","name":"Wfuzz.png","type":"file","url":"/assets/explorer/private/1771652730057_Wfuzz.png","mime":"image/png","size":31576,"timestamp":"2026-02-21T05:45:30.059Z"},{"id":"file_mlvwajhft5pcu","name":"WhatWeb.png","type":"file","url":"/assets/explorer/private/1771652730151_WhatWeb.png","mime":"image/png","size":36257,"timestamp":"2026-02-21T05:45:30.153Z"},{"id":"file_mlvwajjvj02sv","name":"wifipumpkin3.png","type":"file","url":"/assets/explorer/private/1771652730235_wifipumpkin3.png","mime":"image/png","size":33551,"timestamp":"2026-02-21T05:45:30.236Z"},{"id":"file_mlvwajme7ekbq","name":"wifite.png","type":"file","url":"/assets/explorer/private/1771652730326_wifite.png","mime":"image/png","size":29321,"timestamp":"2026-02-21T05:45:30.327Z"},{"id":"file_mlvwajoyanv2h","name":"Wireshark.png","type":"file","url":"/assets/explorer/private/1771652730418_Wireshark.png","mime":"image/png","size":17893,"timestamp":"2026-02-21T05:45:30.420Z"},{"id":"file_mlvwajrc22zyp","name":"wpscan.png","type":"file","url":"/assets/explorer/private/1771652730504_wpscan.png","mime":"image/png","size":25056,"timestamp":"2026-02-21T05:45:30.505Z"},{"id":"file_mlvwajtoxten9","name":"zaproxy-OWASP ZAP.png","type":"file","url":"/assets/explorer/private/1771652730590_zaproxy-OWASP_ZAP.png","mime":"image/png","size":40889,"timestamp":"2026-02-21T05:45:30.591Z"},{"id":"file_mlvwavh0n2k74","name":"all-tools-name.txt","type":"file","url":"/assets/explorer/private/1771652745684_all-tools-name.txt","mime":"text/plain","size":935,"timestamp":"2026-02-21T05:45:45.695Z"}],"timestamp":"2026-02-21T05:45:13.236Z"},{"id":"folder_mlvwgfo0","name":"tusharbr photos old","type":"folder","items":[{"id":"file_mlw17tu27wsk4","name":"#001.jpg","type":"file","url":"/assets/explorer/private/1771661001683__001.jpg","mime":"image/jpeg","size":180523,"timestamp":"2026-02-21T08:03:21.733Z"},{"id":"file_mlw186s4o3vo7","name":"IMG_20251001_161137_345.jpg","type":"file","url":"/assets/explorer/private/1771661018453_IMG_20251001_161137_345.jpg","mime":"image/jpeg","size":100441,"timestamp":"2026-02-21T08:03:38.470Z"}],"timestamp":"2026-02-21T05:50:05.137Z"}],"timestamp":"2026-02-21T05:28:29.083Z"}],"icon":"d:secure"}'),root_items:H0,sidebar_pins:X0},Z0=()=>{const a=ca.useRef(null);return ca.useEffect(()=>{if(!a.current)return;let e;return document.fonts.ready.then(()=>{if(!a.current)return;const t=a.current.querySelector(".txt1"),r=a.current.querySelector(".txt2"),o=a.current.querySelector(".bar"),i=a.current.querySelectorAll(".txt2-char"),s=a.current.querySelector(".anim-box");_a.set([t,r],{width:"auto",display:"inline-block",opacity:1});const c=t.offsetWidth,d=r.offsetWidth;_a.set(s,{width:c+d});const p="var(--accent-cyan)",h="#fff",m=()=>{const f=_a.getProperty(t,"width");_a.set(o,{left:f+1})};e=_a.timeline({delay:.2,repeat:-1,repeatDelay:5}),e.set(t,{color:h,fontWeight:"normal"}).set(r,{color:p,fontWeight:"normal",opacity:0,x:c-2,immediateRender:!0}).set(o,{left:1,backgroundColor:h,immediateRender:!0}).to(o,{duration:.1,opacity:0,ease:"expo.in",yoyo:!0,repeat:5,repeatDelay:.3},0).fromTo(t,{width:0},{duration:1.1,width:c,ease:"steps(14)",onUpdate:m},2.5).to(o,{duration:.05,backgroundColor:p},"+=0.15").to(o,{duration:1,width:d+5,ease:"power4.inOut"},"+=0.1").fromTo(s,{x:d/2},{duration:1,x:0,ease:"power4.inOut"},"-=1.0").to(r,{duration:.01,opacity:1},"-=0.1").to(o,{duration:.4,x:d+5,width:0,ease:"power4.in"}).fromTo(i,{opacity:0},{duration:.6,opacity:1,ease:"power3.inOut",stagger:.02},"-=0.5").to(t,{duration:1.5,opacity:.25,ease:"power3.inOut"},"-=1.2"),e.timeScale(1.45)}),()=>{e&&e.kill()}},[]),n.jsx("div",{ref:a,style:{position:"relative",width:"100%",height:"35px",marginTop:"25px",display:"flex",justifyContent:"center",alignItems:"center",fontSize:"17px",fontFamily:"'Playfair Display', serif",fontWeight:500,letterSpacing:"1px"},children:n.jsxs("div",{className:"anim-box",style:{position:"relative",height:"32px"},children:[n.jsx("span",{className:"txt1",style:{display:"inline-block",overflow:"hidden",position:"absolute",whiteSpace:"nowrap",left:0},children:"www.tushar"}),n.jsx("span",{className:"txt2",style:{display:"inline-block",position:"absolute",left:0,whiteSpace:"nowrap",fontStyle:"italic",paddingRight:"4px"},children:".online".split("").map((e,t)=>n.jsx("span",{className:"txt2-char",style:{display:"inline-block"},children:e},t))}),n.jsx("div",{className:"bar",style:{width:"2px",height:"22px",position:"absolute",top:"2px"}})]})})},q0=({isCollapsed:a=!1,onToggle:e,isCordVisible:t=!0})=>{const{containerRef:r,handleMouseMove:o}=tn(),[i,s]=ca.useState(()=>{const d=ed.sidebar_pins||[];try{const p=JSON.parse(localStorage.getItem("sidebar_pins")||"[]");return p.length>0?p:d}catch{return d}});ca.useEffect(()=>{const d=async()=>{const h=JSON.parse(localStorage.getItem("sidebar_pins")||"[]");h.length>0&&s(h);try{const f=await(await fetch("http://localhost:3003/data")).json();f&&f.sidebar_pins&&JSON.stringify(f.sidebar_pins)!==JSON.stringify(h)&&(localStorage.setItem("sidebar_pins",JSON.stringify(f.sidebar_pins)),s(f.sidebar_pins))}catch{h.length===0&&s(ed.sidebar_pins||[])}};d(),window.addEventListener("sidebar_pins_updated",d);const p=setInterval(d,1e4);return()=>{window.removeEventListener("sidebar_pins_updated",d),clearInterval(p)}},[]);const c=d=>{if(d.type==="url")window.open(d.url,"_blank");else{const p=new URL(window.location.href);if(p.searchParams.set("explorer","open"),d.path){const h=Array.isArray(d.path)?d.path.join("/"):d.path;p.searchParams.set("path",h)}else p.searchParams.delete("path");window.history.pushState({},"",p.toString()),window.dispatchEvent(new Event("popstate")),window.dispatchEvent(new CustomEvent("open_explorer_path",{detail:{path:d.path,opener:"sidebar"}}))}};return n.jsxs(n.Fragment,{children:[n.jsx(ht,{mode:"wait",children:a&&t&&n.jsxs(Y.div,{initial:{y:-250,opacity:0},animate:{y:0,opacity:1},exit:{y:-250,opacity:0},onClick:e,className:"pull-cord-trigger",style:{position:"fixed",top:"15px",left:"14px",zIndex:1e4,cursor:"pointer",display:window.innerWidth<1024?"none":"flex",flexDirection:"column",alignItems:"center",gap:0},whileHover:{y:4},children:[n.jsx("div",{style:{width:"2px",height:"50px",background:"linear-gradient(to bottom, var(--accent-cyan), transparent)",boxShadow:"0 0 8px var(--accent-cyan)"}}),n.jsx("div",{style:{width:"28px",height:"28px",background:"rgba(6,6,14,0.92)",border:"1.5px solid var(--accent-cyan)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",marginTop:"-1px",boxShadow:"0 0 14px rgba(0,229,255,0.45)",flexShrink:0},children:n.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:n.jsx("path",{d:"M7 10l5 5 5-5"})})})]},"pull-cord")}),n.jsxs(Y.aside,{ref:r,initial:!1,animate:{x:a?"-110%":"0%",opacity:a?0:1},whileHover:{background:"rgba(6, 6, 12, 0.99)",backdropFilter:"blur(30px)",borderColor:"rgba(0, 229, 255, 0.6)",boxShadow:"0 0 50px rgba(0, 229, 255, 0.15)"},className:`sidebar-card spotlight-card ${a?"collapsed":""}`,onMouseMove:d=>{a||o(d)},style:{position:"fixed",top:"15px",left:"15px",bottom:"15px",zIndex:9999,width:"320px",height:"calc(100vh - 30px)",backdropFilter:"blur(20px)",WebkitBackdropFilter:"blur(20px)",background:"rgba(6, 6, 12, 0.98)",borderRadius:"24px",display:a?"none":"block",transition:"border-color 0.4s ease, box-shadow 0.4s ease",border:"1px solid rgba(0, 229, 255, 0.15)",scrollbarWidth:"none",overflowY:"auto"},children:[n.jsxs("div",{style:{position:"relative",width:"100%",height:"160px",overflow:"hidden"},children:[n.jsx("img",{src:"/assets/images/cover-tusharbr.jpg",alt:"Cover",style:{width:"100%",height:"100%",objectFit:"cover",filter:"brightness(0.7) contrast(1.1)"}}),n.jsx("div",{style:{position:"absolute",inset:0,background:"linear-gradient(to bottom, transparent, rgba(6, 6, 12, 0.9))"}}),n.jsx("button",{onClick:e,style:{position:"absolute",top:"15px",right:"15px",width:"32px",height:"32px",background:"rgba(0,0,0,0.4)",border:"1px solid rgba(0, 229, 255, 0.3)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--accent-cyan)",cursor:"pointer",zIndex:10,backdropFilter:"blur(5px)"},children:n.jsx(sp,{size:18})})]}),n.jsxs("div",{style:{padding:"0 25px 20px",marginTop:"-55px",position:"relative",zIndex:2,textAlign:"center"},children:[n.jsxs("div",{style:{width:"140px",height:"140px",margin:"0 auto",position:"relative",display:"flex",alignItems:"center",justifyContent:"center"},children:[n.jsx(Y.div,{animate:{rotate:360},transition:{duration:20,repeat:1/0,ease:"linear"},style:{position:"absolute",inset:"0",border:"0.5px solid rgba(0, 229, 255, 0.2)",borderRadius:"50%"}}),n.jsx("div",{style:{position:"absolute",inset:"-5px",border:"1px solid rgba(0, 229, 255, 0.4)",borderRadius:"50%",maskImage:"conic-gradient(from 0deg, black 20deg, transparent 70deg, black 110deg, transparent 160deg, black 200deg, transparent 250deg, black 290deg, transparent 340deg)",WebkitMaskImage:"conic-gradient(from 0deg, black 20deg, transparent 70deg, black 110deg, transparent 160deg, black 200deg, transparent 250deg, black 290deg, transparent 340deg)"}}),n.jsx(Y.div,{whileHover:{scale:1.05},style:{width:"110px",height:"110px",borderRadius:"50%",overflow:"hidden",border:"1px solid rgba(0, 229, 255, 0.3)",background:"#06060c",position:"relative",zIndex:1,padding:"4px"},children:n.jsx("img",{src:"/assets/images/avatar.png?v=3",alt:"Profile",style:{width:"100%",height:"100%",borderRadius:"50%",objectFit:"cover"}})})]}),n.jsx("h1",{style:{fontSize:"2.1rem",fontWeight:"800",margin:"20px 0 5px",color:"#fff",lineHeight:"1.2",letterSpacing:"1px",fontFamily:"'Rajdhani', sans-serif",textShadow:"0 0 20px rgba(0, 229, 255, 0.2)"},children:"Ꮦushar bɾ"}),n.jsx("div",{style:{fontSize:"0.85rem",color:"var(--accent-cyan)",fontWeight:"600",textTransform:"uppercase",letterSpacing:"2px",marginBottom:"15px"},children:"Web & Game Developer"}),n.jsx("div",{style:{height:"1px",width:"100%",background:"linear-gradient(90deg, transparent, rgba(0, 229, 255, 0.2), transparent)",margin:"15px 0"}}),n.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px",alignItems:"flex-start"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[n.jsx("div",{style:{color:"var(--accent-cyan)",fontSize:"1.1rem"},children:n.jsx($i,{})}),n.jsxs("div",{style:{textAlign:"left"},children:[n.jsx("p",{style:{fontSize:"0.65rem",color:"#888",margin:0},children:"EMAIL"}),n.jsx("a",{href:"mailto:rathodtushar1442@gmail.com",style:{textDecoration:"none",color:"#eee",fontSize:"0.8rem"},children:"rathodtushar1442@gmail.com"})]})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[n.jsx("div",{style:{color:"var(--accent-cyan)",fontSize:"1.1rem"},children:n.jsx(Fm,{})}),n.jsxs("div",{style:{textAlign:"left"},children:[n.jsx("p",{style:{fontSize:"0.65rem",color:"#888",margin:0},children:"LOCATION"}),n.jsx("span",{style:{color:"#eee",fontSize:"0.8rem"},children:"Gujarat, India"})]})]})]}),n.jsx("div",{style:{height:"1px",width:"100%",background:"linear-gradient(90deg, transparent, rgba(0, 229, 255, 0.2), transparent)",margin:"12px 0"}}),n.jsx("div",{style:{display:"flex",justifyContent:"center",gap:"12px"},children:[{icon:n.jsx(Qi,{}),link:"https://github.com/tushar-br"},{icon:n.jsx(en,{}),link:"https://www.hackerrank.com/profile/rathodtushar1442"},{icon:n.jsx(Ki,{}),link:"https://www.linkedin.com/in/tushar-br/"},{icon:n.jsx(Yi,{}),link:"https://www.instagram.com/tushar__br/"}].map((d,p)=>n.jsx(Y.a,{href:d.link,target:"_blank",rel:"noopener noreferrer",whileHover:{y:-5,color:"#fff",background:"rgba(0, 229, 255, 0.12)"},style:{width:"38px",height:"38px",borderRadius:"10px",background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.08)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--accent-cyan)",fontSize:"1.1rem",transition:"all 0.2s"},children:d.icon},p))}),n.jsx(Z0,{}),n.jsxs("div",{style:{marginTop:"5px",width:"100%",borderTop:"1px solid rgba(0, 229, 255, 0.05)",paddingTop:"5px"},children:[n.jsxs("div",{style:{fontSize:"0.55rem",color:"rgba(0, 229, 255, 0.3)",fontWeight:800,letterSpacing:"1px",padding:"0 20px",marginBottom:"4px",display:"flex",justifyContent:"space-between"},children:[n.jsx("span",{children:"PINNED"}),n.jsx("span",{style:{opacity:.5},children:i.length})]}),n.jsx("div",{style:{display:"flex",flexDirection:"column"},children:i.slice(0,3).map(d=>n.jsxs("div",{onClick:()=>c(d),style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 20px",cursor:"pointer",transition:"all 0.2s",width:"100%",boxSizing:"border-box"},onMouseEnter:p=>{p.currentTarget.style.background="rgba(0, 229, 255, 0.05)"},onMouseLeave:p=>{p.currentTarget.style.background="transparent"},children:[n.jsx("div",{style:{color:"var(--accent-cyan)",display:"flex",alignItems:"center",opacity:.7},children:d.type==="url"?n.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[n.jsx("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),n.jsx("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})]}):n.jsx("div",{style:{width:"12px",height:"12px",borderRadius:"2px",background:d.type==="drive"?"#00e5ff":"#666",opacity:.8}})}),n.jsxs("div",{style:{display:"flex",flex:1,minWidth:0,alignItems:"center",gap:"8px"},children:[n.jsx("div",{style:{fontSize:"0.75rem",color:"#ccc",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontWeight:500},children:d.name}),n.jsx("div",{style:{fontSize:"0.55rem",color:"rgba(0, 229, 255, 0.25)",fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d.type==="url"?d.url?.replace(/^https?:\/\//,"").slice(0,15):d.displayPath?.split("/").pop()||d.name})]})]},d.id))})]})]}),n.jsx("div",{style:{position:"absolute",inset:0,zIndex:10,pointerEvents:"none"},children:n.jsxs("svg",{width:"100%",height:"100%",style:{overflow:"visible"},children:[n.jsx("defs",{children:n.jsxs("filter",{id:"cyberGlow",x:"-50%",y:"-50%",width:"200%",height:"200%",children:[n.jsx("feGaussianBlur",{stdDeviation:"3",result:"blur"}),n.jsx("feComposite",{in:"SourceGraphic",in2:"blur",operator:"over"})]})}),n.jsx("rect",{x:"2",y:"2",width:"316",height:"calc(100% - 4px)",rx:"22",fill:"none",stroke:"rgba(0, 229, 255, 0.4)",strokeWidth:"1.5",style:{filter:"url(#cyberGlow)"}}),n.jsx("path",{d:"M40 2 H20 A18 18 0 0 0 2 20 V40",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"3"}),n.jsx("path",{d:"M280 2 H300 A18 18 0 0 1 318 20 V40",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"3"}),n.jsx("path",{d:"M2 300 V340",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"2",strokeDasharray:"5 5"}),n.jsx("path",{d:"M318 300 V340",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"2",strokeDasharray:"5 5"}),n.jsx("path",{d:"M2 calc(100% - 40px) Vcalc(100% - 20px) A18 18 0 0 0 20 calc(100% - 2px) H40",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"3"}),n.jsx("path",{d:"M318 calc(100% - 40px) Vcalc(100% - 20px) A18 18 0 0 1 300 calc(100% - 2px) H280",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"3"})]})})]})]})},$0=({isScrolled:a})=>{const e=a?"rgba(0, 229, 255, 0.4)":"rgba(255, 255, 255, 0.15)",t=16;return n.jsxs("div",{style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:10},children:[n.jsx("div",{style:{position:"absolute",top:0,left:t,right:0,height:"1px",background:e}}),n.jsx("div",{style:{position:"absolute",top:0,right:0,bottom:t,width:"1px",background:e}}),n.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:t,height:"1px",background:e}}),n.jsx("div",{style:{position:"absolute",top:t,bottom:0,left:0,width:"1px",background:e}}),n.jsxs("svg",{width:t,height:t,style:{position:"absolute",top:0,left:0},children:[n.jsx("line",{x1:"0",y1:t,x2:t,y2:"0",stroke:e,strokeWidth:"1.5"}),n.jsx("polygon",{points:`0,${t} 4,${t} 0,${t-4}`,fill:e,opacity:"0.5"})]}),n.jsxs("svg",{width:t,height:t,style:{position:"absolute",bottom:0,right:0},children:[n.jsx("line",{x1:"0",y1:t,x2:t,y2:"0",stroke:e,strokeWidth:"1.5"}),n.jsx("polygon",{points:`${t},0 ${t-4},0 ${t},4`,fill:e,opacity:"0.5"})]}),n.jsx("div",{style:{position:"absolute",top:0,right:"40px",width:"12px",height:"2px",background:"var(--accent-cyan)",opacity:.8}}),n.jsx("div",{style:{position:"absolute",bottom:0,left:"40px",width:"20px",height:"1px",background:"var(--accent-cyan)",opacity:.8}})]})},Q0=({activePage:a,setActivePage:e,isHidden:t,isScrolled:r=!1})=>{const{containerRef:o,handleMouseMove:i}=tn(),s=[{name:"Home",key:"home",path:"/",icon:n.jsx(Ms,{})},{name:"About",key:"about",path:"/about",icon:n.jsx(Vi,{})},{name:"Resume",key:"resume",path:"/resume",icon:n.jsx(lp,{})},{name:"Projects",key:"projects",path:"/projects",icon:n.jsx(cp,{})},{name:"Status",key:"status",path:"/status",icon:n.jsx(dp,{})},{name:"Socials",key:"socials",path:"/social",icon:n.jsx(Ji,{})},{name:"Contact",key:"contact",path:"/contact",icon:n.jsx($i,{})}];return n.jsx(ht,{children:n.jsxs(Y.nav,{ref:o,onMouseMove:i,className:`desktop-navbar desktop-only ${r?"scrolled-special":""}`,initial:{y:-100,opacity:0,scale:.9},animate:{y:t?-150:0,opacity:t?0:1,scale:1},transition:{type:"spring",damping:18,stiffness:220,mass:.8,duration:.3},style:{position:"relative",top:"0",margin:"0",zIndex:1e3,width:"fit-content",minWidth:"auto",height:"70px",display:"flex",alignItems:"center",justifyContent:"center",background:r?"rgba(10, 10, 15, 0.98)":"rgba(10, 10, 15, 0.6)",backdropFilter:"blur(8px)",WebkitBackdropFilter:"blur(8px)",border:"none",clipPath:"polygon(16px 0, 100% 0, 100% calc(100% - 16px), calc(100% - 16px) 100%, 0 100%, 0 16px)",padding:"0 20px",filter:"drop-shadow(0 10px 20px rgba(0, 0, 0, 0.4))",pointerEvents:t?"none":"auto",willChange:"transform"},children:[n.jsx($0,{isScrolled:r}),!r&&n.jsx("div",{style:{position:"absolute",top:0,left:"20px",right:"20px",height:"10px",borderBottom:"1px solid rgba(255, 255, 255, 0.1)",display:"flex",justifyContent:"space-between",pointerEvents:"none"},children:n.jsx("div",{style:{width:"100%",height:"100%",background:"repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.3) 0px, rgba(255, 255, 255, 0.3) 1px, transparent 1px, transparent 10px)",maskImage:"linear-gradient(90deg, transparent, black 10%, black 90%, transparent)`"}})}),n.jsx("div",{style:{display:"flex",gap:"10px",position:"relative",zIndex:2,height:"100%",alignItems:"center"},children:s.map(c=>{const d=a===c.key;return n.jsxs("a",{href:c.path,onClick:p=>{p.preventDefault(),e(c.key)},style:{textDecoration:"none",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",padding:"0 18px",height:"42px",borderRadius:"8px",transition:"color 0.3s ease",position:"relative",color:d?"#fff":"rgba(255, 255, 255, 0.5)"},children:[n.jsx(ht,{children:d&&n.jsxs(Y.div,{layoutId:"desktopActiveNav",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{type:"spring",stiffness:380,damping:30},style:{position:"absolute",inset:0,background:"rgba(0, 229, 255, 0.1)",border:"1px solid rgba(0, 229, 255, 0.3)",borderRadius:"8px",zIndex:-1,boxShadow:"0 0 20px rgba(0, 229, 255, 0.15), inset 0 0 10px rgba(0, 229, 255, 0.05)"},children:[n.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 100 42",preserveAspectRatio:"none",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",overflow:"visible"},children:[n.jsx("defs",{children:n.jsxs("filter",{id:"activeGlow",x:"-20%",y:"-20%",width:"140%",height:"140%",children:[n.jsx("feGaussianBlur",{stdDeviation:"1.5",result:"blur"}),n.jsx("feComposite",{in:"SourceGraphic",in2:"blur",operator:"over"})]})}),n.jsx("path",{d:"M 10 2 H 2 V 10",fill:"none",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",style:{filter:"url(#activeGlow)"}}),n.jsx("path",{d:"M 90 2 H 98 V 10",fill:"none",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",style:{filter:"url(#activeGlow)"}}),n.jsx("path",{d:"M 10 40 H 2 V 32",fill:"none",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",style:{filter:"url(#activeGlow)"}}),n.jsx("path",{d:"M 90 40 H 98 V 32",fill:"none",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",style:{filter:"url(#activeGlow)"}}),n.jsx(Y.circle,{cx:"50",cy:"2",r:"1.5",fill:"#00e5ff",animate:{opacity:[.4,1,.4]},transition:{duration:1.5,repeat:1/0}})]}),n.jsx("div",{style:{position:"absolute",bottom:"2px",left:"50%",transform:"translateX(-50%)",width:"20px",height:"1px",background:"linear-gradient(90deg, transparent, #00e5ff, transparent)",opacity:.6}})]})}),n.jsx("span",{style:{fontSize:"1.1rem",display:"flex",color:d?"#00e5ff":"rgba(255, 255, 255, 0.6)",transition:"all 0.3s ease",filter:d?"drop-shadow(0 0 5px rgba(0, 229, 255, 0.5))":"none"},children:c.icon}),n.jsx("span",{style:{fontSize:"0.8rem",fontWeight:d?700:500,fontFamily:"'Rajdhani', sans-serif",textTransform:"uppercase",letterSpacing:"1px"},children:c.name})]},c.key)})})]})})},K0=({activePage:a,setActivePage:e,onOpenExplorer:t})=>{const[r,o]=T.useState(!1),i=T.useRef(null);T.useEffect(()=>{const p=h=>{i.current&&!i.current.contains(h.target)&&o(!1)};return r&&document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[r]);const s=[{name:"Home",key:"home",icon:n.jsx(Ms,{})},{name:"Status",key:"status",icon:n.jsx(dp,{})},{name:"Resume",key:"resume",icon:n.jsx(lp,{})},{name:"Projects",key:"projects",icon:n.jsx(cp,{})}],c=[{name:"About",key:"about",icon:n.jsx(Vi,{}),isNav:!0},{name:"Socials",key:"socials",icon:n.jsx(Ji,{}),isNav:!0},{name:"Contact",key:"contact",icon:n.jsx($i,{}),isNav:!0},{name:"Certificates",key:"certificates",icon:n.jsx(hp,{}),isNav:!0},{name:"Book",key:"book",icon:n.jsx(up,{}),isNav:!0},{name:"Features",key:"feature",icon:n.jsx(mp,{}),isNav:!0},{name:"Download APK",key:"apk",icon:n.jsx(gp,{}),isNav:!0},{name:"Files",key:"file",icon:n.jsx(fp,{}),isNav:!1,action:()=>{t?.(),o(!1)}},{name:"Start OS",key:"start-os",icon:n.jsx(yp,{}),isNav:!1,action:()=>{window.open("/os.html","_blank"),o(!1)}}],d=p=>{e(p),o(!1)};return n.jsxs("nav",{className:"mobile-bottom-nav mobile-only",style:{background:"rgba(6, 6, 12, 0.25)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",borderTop:"none",paddingTop:"15px",paddingBottom:"10px",boxShadow:"0 -10px 40px rgba(0, 0, 0, 0.4)"},children:[n.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,height:"10px",borderBottom:"1px solid rgba(255,255,255,0.06)",display:"flex",pointerEvents:"none",zIndex:10},children:n.jsx("div",{style:{width:"100%",height:"100%",background:"repeating-linear-gradient(90deg, rgba(255,255,255,0.2) 0px, rgba(255,255,255,0.2) 1px, transparent 1px, transparent 10px)",maskImage:"linear-gradient(90deg, transparent, black 10%, black 90%, transparent)"}})}),s.map(p=>n.jsxs("button",{className:`nav-item ${a.toLowerCase()===p.key.toLowerCase()?"active":""}`,onClick:()=>d(p.key),style:{position:"relative",zIndex:2,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",background:"none",border:"none",flex:1,paddingBottom:"10px"},children:[n.jsx(ht,{children:a.toLowerCase()===p.key.toLowerCase()&&n.jsxs(Y.div,{layoutId:"mobileActiveLens",initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},transition:{type:"spring",stiffness:450,damping:25},style:{position:"absolute",top:"50%",left:"50%",width:"50px",height:"42px",marginTop:"-25px",marginLeft:"-25px",zIndex:-1,background:"rgba(0,229,255,0.05)",border:"1px solid rgba(0,229,255,0.5)",borderRadius:"8px",boxShadow:"0 0 15px rgba(0,229,255,0.15)"},children:[n.jsx("div",{style:{position:"absolute",inset:0,background:"repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0,229,255,0.05) 6px, rgba(0,229,255,0.05) 7px)",borderRadius:"8px",pointerEvents:"none"}}),n.jsx("div",{style:{position:"absolute",top:-1,left:-1,width:8,height:8,borderTop:"2px solid var(--accent-cyan)",borderLeft:"2px solid var(--accent-cyan)",borderRadius:"3px 0 0 0"}}),n.jsx("div",{style:{position:"absolute",bottom:-1,right:-1,width:8,height:8,borderBottom:"2px solid var(--accent-cyan)",borderRight:"2px solid var(--accent-cyan)",borderRadius:"0 0 3px 0"}})]})}),n.jsx("span",{style:{fontSize:"20px",color:a===p.key?"var(--accent-cyan)":"#b0b0bb",filter:a===p.key?"drop-shadow(0 0 8px var(--accent-cyan))":"none",transition:"all 0.3s ease",marginBottom:"2px"},children:p.icon}),n.jsx("span",{className:"nav-text",style:{fontSize:"9px",fontWeight:a===p.key?"700":"500",color:a===p.key?"#fff":"#888",textTransform:"uppercase",letterSpacing:"0.5px",fontFamily:"'Rajdhani', sans-serif"},children:p.name})]},p.key)),n.jsxs("div",{style:{position:"relative",height:"100%",display:"flex",alignItems:"center",flex:1},ref:i,children:[n.jsxs("button",{className:`nav-item ${r?"active":""}`,onClick:()=>o(!r),style:{background:"none",border:"none",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",paddingBottom:"10px"},children:[n.jsx(pp,{style:{fontSize:"22px",color:r?"var(--accent-cyan)":"#b0b0bb"}}),n.jsx("span",{className:"nav-text",style:{fontSize:"9px",marginTop:"2px",color:r?"var(--accent-cyan)":"#888",textTransform:"uppercase",fontFamily:"'Rajdhani', sans-serif"},children:"More"})]}),n.jsx(ht,{children:r&&n.jsxs(n.Fragment,{children:[n.jsx("div",{style:{position:"fixed",inset:0,zIndex:1e3},onClick:()=>o(!1)}),n.jsxs("svg",{style:{position:"absolute",bottom:"100%",right:"23px",width:"40px",height:"49px",zIndex:1002,pointerEvents:"none",overflow:"visible"},viewBox:"0 0 40 49",children:[n.jsx("defs",{children:n.jsxs("linearGradient",{id:"pathGrad",x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:[n.jsx("stop",{offset:"0%",stopColor:"#00e5ff",stopOpacity:"1"}),n.jsx("stop",{offset:"100%",stopColor:"#00e5ff",stopOpacity:"0.2"})]})}),n.jsx("path",{d:"M 1 49 L 1 10 Q 1 1 10 1 L 40 1",fill:"none",stroke:"url(#pathGrad)",strokeWidth:"1.5",strokeDasharray:"4 2",style:{filter:"drop-shadow(0 0 5px rgba(0,229,255,0.6))"}}),n.jsx("circle",{cx:"1",cy:"49",r:"2.5",fill:"#00e5ff"}),n.jsx(Y.circle,{r:"2",fill:"#00e5ff",animate:{offsetDistance:["0%","100%"]},transition:{duration:2,repeat:1/0,ease:"linear"},style:{offsetPath:"path('M 1 49 L 1 10 Q 1 1 10 1 L 40 1')",filter:"drop-shadow(0 0 6px #00e5ff)"}})]}),n.jsxs(Y.div,{initial:{opacity:0,y:15,scale:.95,filter:"blur(10px)"},animate:{opacity:1,y:0,scale:1,filter:"blur(0px)"},exit:{opacity:0,y:10,scale:.95,filter:"blur(10px)"},transition:{type:"spring",stiffness:400,damping:30},style:{position:"absolute",bottom:"calc(100% + 49px)",right:"4px",width:"240px",background:"rgba(5, 5, 12, 0.85)",backdropFilter:"blur(30px)",WebkitBackdropFilter:"blur(30px)",border:"1px solid rgba(0, 229, 255, 0.35)",borderRadius:"20px",padding:"16px 12px",zIndex:1001,boxShadow:"0 -15px 50px rgba(0,0,0,0.6), inset 0 0 20px rgba(0,229,255,0.08)",overflow:"hidden"},children:[[{top:0,left:0,borderTop:"1.5px solid rgba(0,229,255,0.45)",borderLeft:"1.5px solid rgba(0,229,255,0.45)",borderRadius:"16px 0 0 0",width:14,height:14},{top:0,right:0,borderTop:"1.5px solid rgba(0,229,255,0.45)",borderRight:"1.5px solid rgba(0,229,255,0.45)",borderRadius:"0 16px 0 0",width:14,height:14},{bottom:0,left:0,borderBottom:"1.5px solid rgba(0,229,255,0.45)",borderLeft:"1.5px solid rgba(0,229,255,0.45)",borderRadius:"0 0 0 16px",width:14,height:14},{bottom:0,right:0,borderBottom:"1.5px solid rgba(0,229,255,0.45)",borderRight:"1.5px solid rgba(0,229,255,0.45)",borderRadius:"0 0 16px 0",width:14,height:14}].map((p,h)=>n.jsx("div",{style:{position:"absolute",...p,pointerEvents:"none"}},h)),n.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"2px 6px 10px"},children:[n.jsx("span",{style:{fontSize:"9px",color:"#00e5ff",letterSpacing:"3px",fontWeight:800,fontFamily:"'JetBrains Mono', monospace"},children:"MORE"}),n.jsx("div",{style:{display:"flex",gap:"3px"},children:[.3,.6,1].map((p,h)=>n.jsx("div",{style:{width:3,height:3,borderRadius:"50%",background:"#00e5ff",opacity:p}},h))})]}),n.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:"7px"},children:c.map(p=>{const h=a===p.key;return n.jsxs("button",{onClick:()=>p.isNav?d(p.key):p.action?.(),style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"10px 4px 8px",background:h?"rgba(0,229,255,0.12)":"rgba(255,255,255,0.05)",border:`1px solid ${h?"rgba(0,229,255,0.5)":"rgba(255,255,255,0.1)"}`,borderRadius:"12px",gap:"5px",color:h?"var(--accent-cyan)":"#d0d0d5",transition:"all 0.2s ease",cursor:"pointer",boxShadow:h?"0 0 15px rgba(0,229,255,0.1)":"none"},onMouseDown:m=>{m.currentTarget.style.background="rgba(0,229,255,0.15)"},onMouseUp:m=>{m.currentTarget.style.background=h?"rgba(0,229,255,0.12)":"rgba(255,255,255,0.05)"},children:[n.jsx("span",{style:{fontSize:"18px",filter:h?"drop-shadow(0 0 5px var(--accent-cyan))":"none"},children:p.icon}),n.jsx("span",{style:{fontSize:"8px",fontWeight:h?700:500,textTransform:"uppercase",letterSpacing:"0.4px",textAlign:"center",lineHeight:1.2},children:p.name})]},p.key)})}),n.jsx("div",{style:{height:"1px",background:"linear-gradient(90deg, transparent, rgba(0,229,255,0.2), transparent)",margin:"10px 0 0"}})]})]})})]})]})},Y0={apiKey:"AIzaSyD4vkALQGpzs1SwN5bM-Nag-eV-fnYnNTk",authDomain:"resume-web-counter.firebaseapp.com",databaseURL:"https://resume-web-counter-default-rtdb.firebaseio.com",projectId:"resume-web-counter",storageBucket:"resume-web-counter.firebasestorage.app",messagingSenderId:"843680386208",appId:"1:843680386208:web:b086687e0a97a34ca80dc5"},Rh=Ep(Y0),Bt=_p(Rh),J0=kg(Rh),k1=new Rg,ey=()=>{const[a,e]=T.useState({btc:64230.4,tsrc:1.24});return T.useEffect(()=>{const t=setInterval(()=>{e(r=>({btc:r.btc+(Math.random()-.5)*10,tsrc:r.tsrc+(Math.random()-.5)*.05}))},2e3);return()=>clearInterval(t)},[]),n.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[n.jsxs("svg",{viewBox:"0 0 500 140",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{width:"100%",height:"100%"},children:[n.jsx("path",{d:"M 50 120 L 450 120",stroke:"rgba(0, 229, 255, 0.2)",strokeWidth:"2"}),n.jsx("rect",{x:"60",y:"60",width:"40",height:"60",rx:"2",stroke:"rgba(0, 229, 255, 0.4)",strokeWidth:"1",fill:"rgba(6,6,12,0.8)"}),n.jsx("circle",{cx:"70",cy:"70",r:"1.5",fill:"#00ff88",className:"pulse-led"}),n.jsx("circle",{cx:"70",cy:"75",r:"1.5",fill:"#00ff88",className:"pulse-led",style:{animationDelay:"0.5s"}}),n.jsx("rect",{x:"65",y:"85",width:"30",height:"2",fill:"rgba(0, 229, 255, 0.1)"}),n.jsx("rect",{x:"65",y:"90",width:"30",height:"2",fill:"rgba(0, 229, 255, 0.1)"}),n.jsx("rect",{x:"180",y:"40",width:"140",height:"70",rx:"4",stroke:"var(--accent-cyan)",strokeWidth:"1.5",fill:"rgba(2,2,5,0.9)"}),n.jsx("rect",{x:"240",y:"110",width:"20",height:"10",stroke:"rgba(0, 229, 255, 0.4)"}),n.jsx("path",{d:"M 230 120 L 270 120",stroke:"rgba(0, 229, 255, 0.4)"}),n.jsx("rect",{x:"380",y:"70",width:"50",height:"50",rx:"2",stroke:"rgba(0, 229, 255, 0.3)",fill:"rgba(6,6,12,0.5)"}),[75,85,95,105].map((t,r)=>n.jsxs("g",{children:[n.jsx("rect",{x:"385",y:t,width:"40",height:"4",rx:"1",fill:"rgba(0, 229, 255, 0.05)"}),n.jsx("circle",{cx:"420",cy:t+2,r:"1",fill:r%2===0?"#ff0055":"#00ff88",className:"pulse-led"})]},r)),n.jsx("rect",{x:"330",y:"112",width:"12",height:"8",rx:"4",stroke:"rgba(0, 229, 255, 0.3)",fill:"rgba(2,2,5,0.8)"}),n.jsx("path",{d:"M 100 90 Q 140 90 180 75",stroke:"rgba(0, 229, 255, 0.2)",fill:"none",strokeWidth:"1",strokeDasharray:"4 4",className:"wire-flow"}),n.jsx("path",{d:"M 320 75 Q 350 90 380 95",stroke:"rgba(0, 229, 255, 0.2)",fill:"none",strokeWidth:"1",strokeDasharray:"4 4",className:"wire-flow",style:{animationDirection:"reverse"}}),n.jsx("path",{d:"M 336 112 Q 336 100 250 110",stroke:"rgba(0, 229, 255, 0.1)",fill:"none",strokeWidth:"0.5"}),n.jsx("foreignObject",{x:"185",y:"45",width:"130",height:"60",children:n.jsx("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",color:"var(--accent-cyan)",fontFamily:"monospace",fontSize:"9px",padding:"5px",overflow:"hidden"},children:n.jsxs("div",{className:"ticker-scroll",children:[n.jsxs("div",{style:{marginBottom:"4px",whiteSpace:"nowrap"},children:["BTC/USD: $",a.btc.toLocaleString(void 0,{minimumFractionDigits:2})]}),n.jsxs("div",{style:{whiteSpace:"nowrap"},children:["TSRC/USD: $",a.tsrc.toFixed(4)]}),n.jsxs("div",{style:{marginTop:"8px",fontSize:"7px",color:"rgba(0, 229, 255, 0.4)"},children:[">"," SECURE_CONNECTION_STABLE",n.jsx("br",{}),">"," MINING_NODES: ONLINE"]})]})})})]}),n.jsx("style",{children:`
|
|
3
|
+
.pulse-led {
|
|
4
|
+
animation: pulseLed 1.5s infinite alternate;
|
|
5
|
+
}
|
|
6
|
+
@keyframes pulseLed {
|
|
7
|
+
from { opacity: 0.3; }
|
|
8
|
+
to { opacity: 1; }
|
|
9
|
+
}
|
|
10
|
+
.wire-flow {
|
|
11
|
+
animation: wireFlow 2s linear infinite;
|
|
12
|
+
}
|
|
13
|
+
@keyframes wireFlow {
|
|
14
|
+
to { stroke-dashoffset: -20; }
|
|
15
|
+
}
|
|
16
|
+
.ticker-scroll {
|
|
17
|
+
animation: tickerPan 10s linear infinite;
|
|
18
|
+
}
|
|
19
|
+
@keyframes tickerPan {
|
|
20
|
+
0%, 100% { transform: translateY(0); }
|
|
21
|
+
50% { transform: translateY(-5px); }
|
|
22
|
+
}
|
|
23
|
+
`})]})},ty=()=>{const[a,e]=T.useState("Loading Secure IP..."),[t,r]=T.useState(0),{containerRef:o,handleMouseMove:i}=tn();return T.useEffect(()=>{const s=async p=>{const h=p.replace(/[.#$[\]]/g,"_"),m=Ft(Bt,`visitors/logs/${h}`),f=Ft(Bt,"visitors/count"),v=`last_visit_${h}`,P=3600*1e3,y=Date.now(),A=localStorage.getItem(v);A&&y-parseInt(A)<P||da(m,V=>{const I=V.val();(!I||y-I>P)&&(Tg(f,E=>(Number(E)||0)+1),Pi(m,y),localStorage.setItem(v,y.toString()))},{onlyOnce:!0})};fetch("https://api.ipify.org?format=json").then(p=>p.json()).then(p=>{const h=p.ip;e(h),s(h)}).catch(()=>{e("127.0.0.1"),s("127.0.0.1")});const c=Ft(Bt,"visitors/count"),d=da(c,p=>{const h=p.val();if(h!==null){const m=parseInt(h);r(isNaN(m)?0:m)}});return()=>{d()}},[]),n.jsxs(n.Fragment,{children:[n.jsxs("footer",{ref:o,className:"site-footer interactive-glow-container spotlight-card",onMouseMove:s=>{i(s);const c=s.currentTarget.getBoundingClientRect();s.currentTarget.style.setProperty("--glow-x",`${s.clientX-c.left}px`),s.currentTarget.style.setProperty("--glow-y",`${s.clientY-c.top}px`)},style:{marginTop:"0px",width:"calc(100% + 20px)",marginLeft:"-10px",marginRight:"-10px",borderRadius:"0",border:"none",borderTop:"1px solid rgba(0, 229, 255, 0.2)",background:"rgba(6, 6, 12, 0.4)",position:"relative",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",gap:"15px",overflow:"hidden"},children:[n.jsx("div",{style:{position:"absolute",inset:0,backgroundImage:"linear-gradient(rgba(0, 229, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 229, 255, 0.03) 1px, transparent 1px)",backgroundSize:"30px 30px",opacity:.5,pointerEvents:"none",zIndex:0}}),n.jsx("div",{className:"footer-scan-line",style:{position:"absolute",top:0,left:0,right:0,height:"2px",background:"linear-gradient(90deg, transparent, var(--accent-cyan), transparent)",opacity:.2,zIndex:1,pointerEvents:"none"}}),n.jsx("div",{className:"spotlight-overlay",style:{borderRadius:"0",background:"radial-gradient(800px circle at var(--mouse-x, 50%) var(--mouse-y, 50%), rgba(0, 229, 255, 0.25), transparent 40%)"}}),n.jsx("div",{className:"glow-blob",style:{opacity:.1}}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",opacity:.9,background:"rgba(0,0,0,0.6)",padding:"6px 16px",borderRadius:"50px",backdropFilter:"blur(8px)",border:"1px solid rgba(0, 229, 255, 0.3)",marginTop:"30px",position:"relative",zIndex:2,boxShadow:"0 0 15px rgba(0, 229, 255, 0.1)"},children:[n.jsx(Cc,{style:{color:"var(--accent-cyan)",fontSize:"1rem"}}),n.jsxs("span",{style:{fontFamily:"Barlow, sans-serif",fontSize:"0.75rem",color:"var(--text-white)",letterSpacing:"1px"},children:["IP : ",a]})]}),n.jsxs("div",{style:{position:"relative",width:"90%",maxWidth:"500px",height:"140px",margin:"25px 0",background:"rgba(10, 10, 15, 0.2)",backdropFilter:"blur(5px)",border:"1px solid rgba(0, 229, 255, 0.1)",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 0 30px rgba(0, 229, 255, 0.02)",overflow:"hidden",borderRadius:"8px"},children:[n.jsx("div",{style:{position:"absolute",top:"-1px",left:"-1px",width:"20px",height:"20px",borderTop:"2px solid var(--accent-cyan)",borderLeft:"2px solid var(--accent-cyan)",borderRadius:"4px 0 0 0",opacity:.6,zIndex:10}}),n.jsx("div",{style:{position:"absolute",bottom:"-1px",right:"-1px",width:"20px",height:"20px",borderBottom:"2px solid var(--accent-cyan)",borderRight:"2px solid var(--accent-cyan)",borderRadius:"0 0 4px 0",opacity:.6,zIndex:10}}),n.jsx(ey,{})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",opacity:.6,marginTop:"5px",marginBottom:"10px"},children:[n.jsx(Bm,{style:{color:"var(--accent-cyan)",fontSize:"1.1rem"}}),n.jsxs("span",{style:{fontFamily:"Barlow, sans-serif",fontSize:"0.85rem",color:"var(--text-gray)",letterSpacing:"1px"},children:["Total Visitors : ",t>0?t.toLocaleString():"..."]})]}),n.jsxs("div",{className:"glass-card",style:{padding:"12px 30px",borderRadius:"50px",display:"flex",alignItems:"center",gap:"20px",boxShadow:"0 5px 20px rgba(0,0,0,0.3)",border:"1px solid var(--glass-border)",width:"fit-content",flexWrap:"wrap",justifyContent:"center",marginBottom:"20px"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[n.jsx("img",{src:"/assets/images/logo.png",alt:"logo",style:{width:"20px",height:"20px",borderRadius:"4px"}}),n.jsx("span",{style:{fontSize:"0.85rem",color:"var(--text-gray)"},children:"© 2026 tusharbr."})]}),n.jsx("div",{className:"desktop-only",style:{width:"1px",height:"15px",background:"var(--glass-border)"}}),n.jsxs("div",{style:{display:"flex",gap:"15px"},children:[n.jsx("a",{href:"/.well-known/security.txt",title:"Security Verification",style:{color:"var(--accent-cyan)",fontSize:"1.2rem",display:"flex",alignItems:"center"},children:n.jsx(Cc,{})}),n.jsx("a",{href:"https://github.com/tushar-br",target:"_blank",rel:"noopener noreferrer",className:"icon-btn",style:{fontSize:"1.2rem"},children:n.jsx(Qi,{})}),n.jsx("a",{href:"https://www.hackerrank.com/profile/rathodtushar1442",target:"_blank",rel:"noopener noreferrer",className:"icon-btn",style:{fontSize:"1.2rem"},children:n.jsx(en,{})}),n.jsx("a",{href:"https://www.linkedin.com/in/tushar-br/",target:"_blank",rel:"noopener noreferrer",className:"icon-btn",style:{fontSize:"1.2rem"},children:n.jsx(Ki,{})}),n.jsx("a",{href:"https://www.instagram.com/tushar__br/",target:"_blank",rel:"noopener noreferrer",className:"icon-btn",style:{fontSize:"1.2rem"},children:n.jsx(Yi,{})})]})]})]}),n.jsx("style",{children:`
|
|
24
|
+
.footer-scan-line {
|
|
25
|
+
animation: scan 10s linear infinite;
|
|
26
|
+
}
|
|
27
|
+
@keyframes scan {
|
|
28
|
+
0% { transform: translateY(-100px); opacity: 0; }
|
|
29
|
+
10% { opacity: 0.2; }
|
|
30
|
+
90% { opacity: 0.2; }
|
|
31
|
+
100% { transform: translateY(600px); opacity: 0; }
|
|
32
|
+
}
|
|
33
|
+
.site-footer {
|
|
34
|
+
transition: background 0.4s ease;
|
|
35
|
+
}
|
|
36
|
+
.site-footer:hover {
|
|
37
|
+
background: rgba(6, 6, 12, 0.6) !important;
|
|
38
|
+
}
|
|
39
|
+
@keyframes fadeInFooter {
|
|
40
|
+
from { opacity: 0; transform: translateY(20px); }
|
|
41
|
+
to { opacity: 1; transform: translateY(0); }
|
|
42
|
+
}
|
|
43
|
+
`})]})},ry=({activePage:a,isSidebarCollapsed:e=!0})=>{const[t,r]=T.useState(0),[o,i]=T.useState(0),[s,c]=T.useState("none"),d=!e,p=d?"320px":"0px";return T.useEffect(()=>{i(1),r(0),c("none");const h=setTimeout(()=>{c("width 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.2s ease, left 0.6s cubic-bezier(0.2, 0.8, 0.2, 1)"),r(100)},50),m=setTimeout(()=>{i(0)},450),f=setTimeout(()=>{c("none"),r(0)},700);return()=>{clearTimeout(h),clearTimeout(m),clearTimeout(f)}},[a]),n.jsx("div",{style:{position:"fixed",top:0,left:p,height:"3px",background:"linear-gradient(90deg, var(--accent-cyan), #00acee)",width:d?"calc(100% - 320px)":"100%",transform:`scaleX(${t/100})`,transformOrigin:"left",opacity:o,zIndex:99999,transition:s,boxShadow:"0 0 10px rgba(0, 229, 255, 0.5)",pointerEvents:"none"}})},ay=({color:a="rgba(0, 229, 255, 0.55)"})=>n.jsxs("div",{style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:10},children:[n.jsx("svg",{style:{position:"absolute",top:0,left:0},width:"12",height:"12",children:n.jsx("path",{d:"M 0 12 L 0 4 L 4 0 L 12 0",fill:"none",stroke:a,strokeWidth:"1.5"})}),n.jsx("svg",{style:{position:"absolute",top:0,right:0},width:"12",height:"12",children:n.jsx("path",{d:"M 0 0 L 8 0 L 12 4 L 12 12",fill:"none",stroke:a,strokeWidth:"1.5"})}),n.jsx("svg",{style:{position:"absolute",bottom:0,left:0},width:"12",height:"12",children:n.jsx("path",{d:"M 0 0 L 0 8 L 4 12 L 12 12",fill:"none",stroke:a,strokeWidth:"1.5"})}),n.jsx("svg",{style:{position:"absolute",bottom:0,right:0},width:"12",height:"12",children:n.jsx("path",{d:"M 0 12 L 8 12 L 12 8 L 12 0",fill:"none",stroke:a,strokeWidth:"1.5"})}),n.jsx("div",{style:{position:"absolute",top:"50%",left:"0",width:"5px",height:"1.5px",background:a,transform:"translateY(-50%)"}}),n.jsx("div",{style:{position:"absolute",top:"50%",right:"0",width:"5px",height:"1.5px",background:a,transform:"translateY(-50%)"}}),n.jsx("div",{style:{position:"absolute",top:"0",left:"50%",width:"1.5px",height:"5px",background:a,transform:"translateX(-50%)"}}),n.jsx("div",{style:{position:"absolute",bottom:"0",left:"50%",width:"1.5px",height:"5px",background:a,transform:"translateX(-50%)"}})]}),oy=()=>n.jsx("pre",{style:{margin:"0 0 15px 0",color:"var(--accent-cyan)",fontSize:"10px",lineHeight:"1.2",fontWeight:"bold",textShadow:"0 0 5px rgba(0, 229, 255, 0.4)",paddingLeft:"2px"},children:`
|
|
44
|
+
_______ _ _ _____ _ _ _____
|
|
45
|
+
|__ __| | | |/ ____| | | | /\\ | __ \\
|
|
46
|
+
| | | | | | (___ | |__| | / \\ | |__) |
|
|
47
|
+
| | | | | |\\___ \\| __ | / /\\ \\ | _ /
|
|
48
|
+
| | | |__| |____) | | | |/ ____ \\| | \\ \\
|
|
49
|
+
|_| \\____/|_____/|_| |_/_/ \\_\\_| \\_\\
|
|
50
|
+
`}),iy=ca.memo(({line:a})=>a==="LOGO"?n.jsx(oy,{}):n.jsx("div",{children:n.jsx("pre",{style:{margin:0,whiteSpace:"pre-wrap",color:a.includes("[ADMIN NOTIFICATION")||a.includes("notification:")?"#00ff41":a.includes("[SUCCESS]")?"#00ff88":a.includes("┌──")?"#5555ff":a.includes("└─$")?"#ffffff":a.match(/^[ |\\/_|()<>\-_+]+$/)?"var(--accent-cyan)":a.includes("HACKING")?"#00ff41":"#efefef",lineHeight:"1.6",letterSpacing:"0.5px",borderLeft:a.includes("[ADMIN NOTIFICATION")||a.includes("notification:")?"2px solid rgba(0,255,65,0.5)":"none",paddingLeft:a.includes("[ADMIN NOTIFICATION")||a.includes("notification:")?"8px":"0"},children:a})})),ny=({onOpenExplorer:a,onOpenNotes:e,onOpenMobileView:t,onNavigate:r,onToggle:o,onNotify:i,activePage:s,isOpen:c,incomingNotification:d,isNavbarMoreMenuOpen:p=!1,navMoreMenuSide:h="right"})=>{const[m,f]=T.useState(c);T.useEffect(()=>{if(f(c),c){Ce(!1),localStorage.removeItem("kali_hide_until"),sessionStorage.removeItem("kali_hidden_session");const X=window.innerWidth-document.documentElement.clientWidth;document.body.style.overflow="hidden",document.body.style.paddingRight=`${X}px`}else document.body.style.overflow="",document.body.style.paddingRight="";return()=>{document.body.style.overflow="",document.body.style.paddingRight=""}},[c]);const[v,P]=T.useState(""),[y,A]=T.useState(!1),[V,I]=T.useState(()=>{try{const X=localStorage.getItem("terminal_history"),q=X?JSON.parse(X):null;if(Array.isArray(q))return q;const pe=localStorage.getItem("terminal_uid")||"...";return Array.isArray(q)?q:["LOGO","Welcome to Kali GNU/Linux 2024.1","Type 'help' to see available commands.",`Your Unique ID: ${pe}`,"Shortcuts: [Ctrl + C] Open Terminal | [Ctrl + Q] Close Terminal"]}catch{return["Welcome to Kali GNU/Linux 2024.1"]}}),[E,w]=T.useState(""),k=T.useRef(null),U=T.useRef(null);T.useEffect(()=>{if(!d)return;const q=`
|
|
51
|
+
[ADMIN NOTIFICATION - ${new Date(d.timestamp).toLocaleTimeString()}]
|
|
52
|
+
notification: "${d.message}" — by ${(d.by||"ADMIN").toUpperCase()}
|
|
53
|
+
`;I(pe=>[...pe,q]),setTimeout(()=>{k.current&&(k.current.scrollTop=k.current.scrollHeight)},100)},[d?.id]);const D=T.useRef(null),S=T.useRef(null),x=T.useRef(null),[C,_]=T.useState(()=>localStorage.getItem("kali_btn_side")||"right"),R=(()=>{try{return JSON.parse(localStorage.getItem("kali_btn_pos")||"null")}catch{return null}})(),j=Rc(R?.x??window.innerWidth-90),W=Rc(R?.y??20);T.useEffect(()=>{p&&h==="right"?(x.current=W.get(),Mn(W,Math.min(W.get()+260,window.innerHeight-80),{type:"spring",stiffness:180,damping:28})):x.current!==null&&(Mn(W,x.current,{type:"spring",stiffness:180,damping:28}),x.current=null)},[p,h]);const H=X=>{const q=X==="right"?window.innerWidth-90:30;Mn(j,q,{type:"spring",stiffness:200,damping:28}),_(X),localStorage.setItem("kali_btn_side",X),localStorage.setItem("kali_btn_pos",JSON.stringify({x:q,y:W.get()})),Oe(!1)},[ee,ne]=T.useState(()=>{try{const X=localStorage.getItem("cmd_history_log");return X?JSON.parse(X):[]}catch{return[]}}),[ye,Ce]=T.useState(!0),[vt,Oe]=T.useState(!1),[at,ct]=T.useState({}),Te=T.useRef(!1),ot=()=>{if(!D.current)return{};const X=D.current.getBoundingClientRect(),q=window.innerHeight,pe=window.innerWidth,G=pe>768;let K={position:"fixed"};const oe=X.top,ue=150;return G?oe>ue?(K.bottom=q-X.top+5,K.transformOrigin="bottom left"):(K.top=X.bottom+5,K.transformOrigin="top left"):q-X.bottom<ue&&oe>ue?(K.bottom=q-X.top,K.transformOrigin="bottom left"):(K.top=X.bottom,K.transformOrigin="top left"),pe-X.left<160?(K.right=pe-X.right,K.left="auto",K.transformOrigin=K.transformOrigin?.toString().replace("left","right")):K.left=X.left,K},[kt,pr]=T.useState(()=>localStorage.getItem("terminal_uid")||"generating..."),hr=["LOGO","Welcome to Kali GNU/Linux 2024.1","Type 'help' to see available commands.",`Your Unique ID: ${kt}`,"Shortcuts: [Ctrl + C] Open Terminal | [Ctrl + Q] Close Terminal"];T.useEffect(()=>{const X=setInterval(()=>{w(new Date().toLocaleTimeString("en-US",{hour12:!1}))},1e3);return()=>clearInterval(X)},[]),T.useEffect(()=>{localStorage.setItem("terminal_history",JSON.stringify(V))},[V]);const Or=()=>{if(c){Ce(!1);return}const X=sessionStorage.getItem("kali_hidden_session"),q=localStorage.getItem("kali_hide_until"),pe=Date.now();X==="true"||q&&parseInt(q)>pe?Ce(!0):Ce(!1)};T.useEffect(()=>{Or();const X=setInterval(Or,5e3);return()=>clearInterval(X)},[]),T.useEffect(()=>{const X=q=>{m&&q.ctrlKey&&q.key.toLowerCase()==="q"&&(q.preventDefault(),q.stopPropagation(),o?.(!1))};return window.addEventListener("keydown",X,!0),()=>window.removeEventListener("keydown",X,!0)},[m,o]),T.useEffect(()=>{let X=localStorage.getItem("user_session_id")||localStorage.getItem("terminal_uid");X||(X="user_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)),localStorage.setItem("terminal_uid",X),localStorage.setItem("user_session_id",X),pr(X);const q=new URLSearchParams(window.location.search),pe=q.get("terminal"),G=q.get("uid");if(pe==="active"&&(f(!0),G!==kt)){const K=new URL(window.location.href);K.searchParams.set("uid",kt),window.history.replaceState({},"",K.toString())}},[]),T.useEffect(()=>{const X=localStorage.getItem("terminal_uid");if(!X)return;const q=new URL(window.location.href),pe=q.searchParams.get("terminal");m?pe!=="active"&&(q.searchParams.set("terminal","active"),q.searchParams.set("uid",X),window.history.pushState({},"",q.toString())):pe==="active"&&(q.searchParams.delete("terminal"),q.searchParams.delete("uid"),window.history.replaceState({},"",q.toString()))},[m]),T.useEffect(()=>{m&&!/Android|iPhone|iPad/i.test(navigator.userAgent)&&setTimeout(()=>U.current?.focus(),100)},[m]),T.useEffect(()=>{k.current&&(k.current.scrollTop=k.current.scrollHeight)},[V,m]);const it=async X=>{if(X.preventDefault(),!v.trim()||y)return;const q=v.trim().toLowerCase(),pe=[...ee,q];ne(pe),localStorage.setItem("cmd_history_log",JSON.stringify(pe));let G="";switch(q){case"help":G=`Available: clear, help, whoami, mobile, hack, reset, kali-linux, history, path, about, resume, projects, certificates, status, chat, chat-admin, upload, contact, social, fc, "go + page_name"
|
|
54
|
+
Shortcuts: [Ctrl + C] Open | [Ctrl + Q] Exit`;break;case"os":case"window":case"windows":G="SYSTEM OVERRIDE: BOOTING CUSTOM OS KERNEL... [JORDAR MODE ACTIVATED]",setTimeout(()=>{window.open("/os.html","_blank"),o?.(!1)},1e3);break;case"listuser":{try{const Q=await Cp(Ft(Bt,"live_users"));if(Q.exists()){const Z=Q.val(),De=Object.keys(Z).length,nt=Object.values(Z).map(Rt=>`[IP] ${Rt.ip||"Unknown"} (${Rt.device||"?"})`).join(`
|
|
55
|
+
`);G=`ACTIVE USERS: ${De}
|
|
56
|
+
----------------
|
|
57
|
+
${nt}
|
|
58
|
+
----------------
|
|
59
|
+
TOTAL LIVE: ${De}`}else G="ACTIVE USERS: 0"}catch{G="ERROR: DATABASE ACCESS DENIED"}break}case"chat":G="OPENING SECURE CHAT CHANNEL... [AES-256 ENCRYPTED]",i?.("MODULE: CHAT -> LAUNCHED","success"),setTimeout(()=>{f(!1),o?.(!1),window.location.href="/chat"},800);break;case"chat-admin":case"admin-chat":G="ACCESSING ADMIN CHAT TERMINAL... [AUTH REQUIRED]",i?.("MODULE: ADMIN CHAT -> LAUNCHED","success"),setTimeout(()=>{f(!1),o?.(!1),window.location.href="/chat-admin"},800);break;case"admin":G="ACCESSING CLASSIFIED DATABASE... Redirecting to Secure Admin Portal.",setTimeout(()=>{f(!1),o?.(!1),r?.("admin")},1e3);break;case"whoami":{const Q=sessionStorage.getItem("user_ip_cache")||"Fetching...",Z=navigator.userAgent,De=navigator.platform;G=`
|
|
60
|
+
[IDENTITY REPORT]
|
|
61
|
+
--------------------------------
|
|
62
|
+
USER: user_${kt}
|
|
63
|
+
IP: ${Q}
|
|
64
|
+
DEVICE: ${De}
|
|
65
|
+
BROWSER: ${Z.split(" ").pop()}
|
|
66
|
+
LOCATION: ASIA [DETECTED]
|
|
67
|
+
ROLE: External Observer
|
|
68
|
+
--------------------------------`.trim();break}case"hack":{A(!0),I(Z=>[...Z,`┌──(kali㉿tushar)-[~]
|
|
69
|
+
└─$ ${v}`]),P("");const Q=["INITIALIZING BREACH PROTOCOL...","CONNECTING TO GLOBAL NET...","BYPASSING FIREWALL...","INJECTING PAYLOAD...","ENCRYPTING DATABASE...","BRUTE-FORCING ROOT ACCESS...","STEALING SYSTEM TOKENS...","WIPING LOGS...","ACCESS GRANTED 192.168.1.1","DOWNLOADING CLASSIFIED DATA..."];for(let Z=0;Z<1e3;Z++){const De=Q[Math.floor(Math.random()*Q.length)],nt=Math.random().toString(16).substring(2,10).toUpperCase();I(Rt=>[...Rt.slice(-100),`[HACKING] ${De} [0x${nt}]`]),Z%20===0&&(await new Promise(Rt=>setTimeout(Rt,10)),k.current?.scrollTo(0,k.current.scrollHeight))}I(Z=>[...Z,"[SUCCESS] SYSTEM COMPROMISED. YOU ARE NOW THE ROOT.","Just kidding! This was a prank. Stay safe!"]),A(!1);return}case"clear":I([]),P("");return;case"reset":localStorage.removeItem("terminal_history"),I(hr),P("");return;case"history":{i?.("ACCESSING: COMMAND LOGS -> SUCCESS","success");let Z=`[COMMAND HISTORY]
|
|
70
|
+
`+(ee.slice(-50).join(", ")||"No history found.")+`
|
|
71
|
+
|
|
72
|
+
`;const De=localStorage.getItem("terminal_user_activity");if(!De)Z+=`[USER_ACTIVITY]
|
|
73
|
+
No activity detected.`;else try{const nt=JSON.parse(De),Rt=Object.keys(nt).filter(ya=>nt[ya].count>0);if(Rt.length===0)Z+=`[USER_ACTIVITY]
|
|
74
|
+
No activity detected.`;else{Z+=`[USER ACTIVITY REPORT]
|
|
75
|
+
--------------------------------
|
|
76
|
+
`;let ya=0,ar=0,to=0,ro=0;Rt.forEach(Sa=>{const zt=nt[Sa],Lr=zt.logs[zt.logs.length-1],xa=zt.clicks||0,ba=zt.refreshes||0,Nt=zt.stay||0;ya+=xa,ro+=ba;let Hr=0;if(Sa===s){const oo=sessionStorage.getItem("page_entry_time");oo&&(Hr=Date.now()-parseInt(oo))}ar+=Nt+Hr,to+=zt.count||0;const Xr=Math.floor((Nt+Hr)/6e4),ao=Math.floor((Nt+Hr)%6e4/1e3),Zr=Xr>0?`${Xr}m ${ao}s`:`${ao}s`;Z+=`${Sa}
|
|
77
|
+
`,Z+=` - Sessions: ${zt.count} | Refreshes: ${ba}
|
|
78
|
+
`,Z+=` - Total Clicks: ${xa}
|
|
79
|
+
`,Z+=` - Time Spent: ${Zr}
|
|
80
|
+
`,Z+=` - Recent Entry: ${Lr?.time||"N/A"}
|
|
81
|
+
|
|
82
|
+
`});const va=Math.floor(ar/6e4),ii=Math.floor(ar%6e4/1e3),Dn=va>0?`${va}m ${ii}s`:`${ii}s`;Z+=`--------------------------------
|
|
83
|
+
`,Z+=`[GLOBAL SUMMARY]
|
|
84
|
+
`,Z+=`TOTAL SESSIONS: ${to}
|
|
85
|
+
`,Z+=`TOTAL REFRESHES:${ro}
|
|
86
|
+
`,Z+=`TOTAL CLICKS: ${ya}
|
|
87
|
+
`,Z+=`TOTAL TIME: ${Dn}
|
|
88
|
+
`,Z+="--------------------------------"}}catch{Z+="ERROR: Failed to parse logs."}G=Z;break}case"path":G=`Current Context: ${s.charAt(0).toUpperCase()+s.slice(1)}/terminal`;break;case"reset -user":case"restart-user":localStorage.removeItem("terminal_user_activity"),localStorage.removeItem("terminal_history"),localStorage.removeItem("terminal_uid"),localStorage.removeItem("cmd_history_log"),I([]),ne([]),G="IDENTITY WIPE: All local data cleared. SYSTEM REBOOTING...",setTimeout(()=>window.location.reload(),1e3);break;case"mobile":case"mobile view":G="PROTOCOL: VIRTUAL_DISPLAY_INIT - Launching Mobile Simulator...",i?.("MODULE: MOBILE VIEW -> LAUNCHED","success"),setTimeout(()=>{f(!1),o?.(!1),t?.()},800);break;case"exit":f(!1),o?.(!1),i?.("TERMINAL TERMINATED","error");return;case"notes":G="ACCESS GRANTED: Decrypting Vault... Launching Secret Notes.",i?.("MODULE: SECRET NOTES -> LAUNCHED","success"),setTimeout(()=>{f(!1),o?.(!1),e?.()},800);break;case"file":case"files":const oe=new Date;G=`${`[${oe.toLocaleDateString()} ${oe.toLocaleTimeString()}]`} STATUS: OPENED - Launching File Explorer...`,i?.("MODULE: FILE EXPLORER -> LAUNCHED","success"),setTimeout(()=>{f(!1),o?.(!1),a?.()},600);break;case"book":case"editor":i?.("MODULE: BOOK EDITOR -> LAUNCHED","success"),G="LAUNCHING: Book Editor Pro v2.0 - [MODE: SECURE]",setTimeout(()=>{f(!1),o?.(!1),r?.("book")},800);break;case"kali-linux":case"tools":i?.("ACCESSING: KALI TOOLS -> SUCCESS","success"),G="ACCESSING ARSENAL: Loading Kali Linux Tools Database...",setTimeout(()=>{f(!1),o?.(!1),r?.("kalilinuxtools")},800);break;case"about":case"resume":case"projects":case"project":case"certificates":case"certificate":case"status":case"cloud":case"contact":G=`NAVIGATING: [${q.toUpperCase()}] Protocol Initiated...`,i?.(`NAVIGATING: ${q.toUpperCase()} -> SUCCESS`,"success");const be=q==="cloud"||q==="uplaod"||q==="upload"?"cloud":q==="project"?"projects":q==="certificate"?"certificates":q;setTimeout(()=>{f(!1),o?.(!1),r?.(be)},800);break;case"social":case"socials":G="ESTABLISHING CONNECTION: Opening Social Media Cluster...",setTimeout(()=>{f(!1),o?.(!1),r?.("socials")},800);break;case"dir":G=`Directory of ${s.toUpperCase()}:
|
|
89
|
+
.
|
|
90
|
+
..
|
|
91
|
+
[FILES_ENCRYPTED]
|
|
92
|
+
[ACCESS_RESTRICTED]`;break;case"fc":G="PROTOCOL: FULL_SCREEN_INIT - Entering Full Screen Mode...",i?.("MODULE: FULL SCREEN -> ACTIVATED","success"),setTimeout(()=>{f(!1),o?.(!1);const Q=document.documentElement;Q.requestFullscreen?Q.requestFullscreen().catch(()=>{}):Q.webkitRequestFullscreen?Q.webkitRequestFullscreen():Q.msRequestFullscreen&&Q.msRequestFullscreen()},800);break;default:if(q.startsWith("go ")){const Q=q.substring(3).trim();if(["home","about","resume","projects","status","upload","contact","certificates","social","socials"].includes(Q)){G=`EXECUTING: JUMP TO [${Q.toUpperCase()}]...`;const nt={social:"socials",socials:"socials",home:"home"}[Q]||Q;setTimeout(()=>{o?.(!1),r?.(nt)},800)}else G=`ERROR: [${Q}] IS NOT A VALID DESTINATION.`}else G=q.startsWith("sudo")?"sudo: permission denied. Nice try, kid.":`zsh: command not found: ${q}`,!G.includes("not found")&&!G.includes("denied")&&i?.(`EXEC: ${q.toUpperCase()} -> SUCCESS`,"success")}const K=s.charAt(0).toUpperCase()+s.slice(1)+"/terminal";I(oe=>[...oe,`┌──(kali㉿tushar)-[${K}]
|
|
93
|
+
└─$ ${v}`,G]),P("")};return ye?null:n.jsxs(n.Fragment,{children:[n.jsx("div",{ref:S,style:{position:"fixed",inset:0,pointerEvents:"none",zIndex:0}}),n.jsxs(Y.div,{ref:D,drag:!0,dragMomentum:!1,dragElastic:0,dragConstraints:S,"data-no-ctx":!0,className:"kali-floating-btn",style:{position:"fixed",top:0,left:0,x:j,y:W,willChange:"transform",touchAction:"none"},onDragStart:()=>{Te.current=!0,vt&&Oe(!1)},onDragEnd:()=>{setTimeout(()=>Te.current=!1,50);const X=j.get(),q=W.get();localStorage.setItem("kali_btn_pos",JSON.stringify({x:X,y:q}));const pe=X>window.innerWidth/2?"right":"left";_(pe),localStorage.setItem("kali_btn_side",pe)},onContextMenu:X=>{X.preventDefault(),ct(ot()),Oe(!0)},onClick:()=>{if(!Te.current&&!vt){const X=!m;f(X),o?.(X),X?i?.("TERMINAL INITIALIZED","success"):i?.("TERMINAL TERMINATED","error")}},children:[n.jsx("img",{src:"/assets/images/kali-icon.png",alt:"Kali",draggable:!1,style:{width:"70%",height:"70%",objectFit:"contain",pointerEvents:"none",position:"relative",zIndex:1}}),n.jsx("div",{style:{position:"absolute",inset:0,background:"radial-gradient(circle at center, rgba(0,229,255,0.06) 0%, transparent 70%)",pointerEvents:"none"}}),n.jsx(ay,{color:"rgba(0, 229, 255, 0.45)"})]}),n.jsx(ht,{children:vt&&n.jsxs(n.Fragment,{children:[n.jsx("div",{style:{position:"fixed",inset:0,zIndex:99998},onClick:()=>Oe(!1)}),n.jsxs(Y.div,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},style:{...at,background:"rgba(15, 15, 20, 0.95)",backdropFilter:"blur(15px)",border:"1px solid rgba(0, 229, 255, 0.2)",borderRadius:"12px",padding:"8px",zIndex:99999,width:"180px",boxShadow:"0 10px 40px rgba(0,0,0,0.5)"},children:[n.jsx("div",{style:{fontSize:"11px",padding:"4px 8px",color:"#666",fontWeight:600},children:"TERMINAL OPTIONS"}),C==="right"?n.jsxs("button",{className:"ctx-menu-btn",onClick:()=>H("left"),children:[n.jsx("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:n.jsx("path",{d:"M19 12H5M12 5l-7 7 7 7",strokeLinecap:"round",strokeLinejoin:"round"})}),"Move to Left"]}):n.jsxs("button",{className:"ctx-menu-btn",onClick:()=>H("right"),children:[n.jsx("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:n.jsx("path",{d:"M5 12h14M12 5l7 7-7 7",strokeLinecap:"round",strokeLinejoin:"round"})}),"Move to Right"]}),n.jsx("div",{style:{height:"1px",background:"rgba(255,255,255,0.08)",margin:"4px 0"}}),n.jsxs("button",{className:"ctx-menu-btn",onClick:()=>{Oe(!1),Ce(!0)},children:[n.jsx(Um,{size:16})," Hide session"]}),n.jsxs("button",{className:"ctx-menu-btn",onClick:()=>{localStorage.setItem("kali_hide_until",(Date.now()+300*1e3).toString()),Oe(!1),Ce(!0)},children:[n.jsx(Mm,{size:16})," Hide 5m"]})]})]})}),n.jsx(ht,{children:m&&n.jsxs(Y.div,{initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.98},style:{position:"fixed",inset:0,background:"rgba(2, 2, 4, 0.97)",zIndex:1e5,display:"flex",flexDirection:"column",color:"#ffffff",fontFamily:"'JetBrains Mono', monospace",overflow:"hidden"},children:[n.jsxs("div",{style:{height:"38px",background:"#1a1a24",borderBottom:"1px solid #000",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 15px"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[n.jsx("img",{src:"/assets/images/kali-icon.png",style:{width:"22px"},alt:""}),n.jsx("span",{style:{color:"#d0d0d5",fontSize:"13px"},children:"kali@tushar: ~"})]}),n.jsx("button",{onClick:()=>{f(!1),o?.(!1),i?.("TERMINAL TERMINATED","error")},style:{background:"none",border:"none",color:"#fff",cursor:"pointer"},children:n.jsx(vp,{size:24})})]}),n.jsx("div",{ref:k,className:"terminal-body",onClick:()=>U.current?.focus(),style:{flex:1,padding:"25px 0",overflowY:"auto",background:"radial-gradient(circle at center, #12121e 0%, #0c0c14 100%)"},children:n.jsxs("div",{style:{width:"100%",paddingLeft:"2px"},children:[n.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:V.map((X,q)=>n.jsx(iy,{line:X},q))}),!y&&n.jsxs("form",{onSubmit:it,style:{marginTop:"15px"},children:[n.jsxs("div",{style:{color:"#5555ff"},children:["┌──(",n.jsx("span",{style:{color:"#00e5ff"},children:"kali㉿tushar"}),")-[",n.jsx("span",{style:{color:"#ffffff"},children:"~"}),"]"]}),n.jsxs("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[n.jsx("span",{style:{color:"#5555ff"},children:"└─"}),n.jsx("span",{style:{color:"#ff2160",fontWeight:"bold"},children:"$"}),n.jsx("input",{ref:U,type:"text",value:v,onChange:X=>P(X.target.value),style:{flex:1,background:"none",border:"none",color:"#fff",outline:"none",fontSize:"16px"},autoFocus:!0})]})]})]})}),n.jsxs("div",{style:{height:"26px",background:"#1a1a24",borderTop:"1px solid #000",display:"flex",alignItems:"center",padding:"0 15px",fontSize:"11px",color:"rgba(255,255,255,0.4)",overflow:"hidden"},children:[n.jsxs("span",{style:{color:"var(--accent-cyan)",whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"},children:["[ USER ID: ",kt," ]"]}),n.jsxs("span",{className:"hidden-mobile",style:{marginLeft:"20px",color:"#00ff88",whiteSpace:"nowrap"},children:["[ IP: ",sessionStorage.getItem("user_ip_cache")||"DETECTING..."," ]"]}),n.jsx("span",{className:"hidden-mobile",style:{marginLeft:"auto",whiteSpace:"nowrap"},children:E})]})]})}),n.jsx("style",{children:`
|
|
94
|
+
.kali-floating-btn { position: fixed; z-index: 9999; width: 54px; height: 54px; background: rgba(5,5,12,0.92); display: flex; align-items: center; justify-content: center; cursor: grab; user-select: none; filter: drop-shadow(0 0 10px rgba(0,229,255,0.3)); backdrop-filter: blur(12px); clip-path: polygon(8px 0, calc(100% - 8px) 0, 100% 8px, 100% calc(100% - 8px), calc(100% - 8px) 100%, 8px 100%, 0 calc(100% - 8px), 0 8px); }
|
|
95
|
+
.kali-floating-btn:active { cursor: grabbing; }
|
|
96
|
+
@media (max-width: 768px) { .kali-floating-btn { width: 46px; height: 46px; clip-path: polygon(6px 0, calc(100% - 6px) 0, 100% 6px, 100% calc(100% - 6px), calc(100% - 6px) 100%, 6px 100%, 0 calc(100% - 6px), 0 6px); } .hidden-mobile { display: none !important; } }
|
|
97
|
+
|
|
98
|
+
.ctx-menu-btn { display: flex; align-items: center; gap: 10px; background: transparent; border: none; color: #ccc; padding: 10px; border-radius: 8px; width: 100%; text-align: left; cursor: pointer; transition: 0.2s; }
|
|
99
|
+
.ctx-menu-btn:hover { background: rgba(0, 229, 255, 0.1); color: white; }
|
|
100
|
+
.terminal-body::-webkit-scrollbar { display: none; }
|
|
101
|
+
`})]})};var Go=fg();const sy=yg(Go),td=({cut:a=12,color:e="rgba(0, 229, 255, 0.5)"})=>n.jsxs("div",{style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:10},children:[n.jsx("div",{style:{position:"absolute",top:0,left:a,right:0,height:"1.5px",background:e}}),n.jsx("div",{style:{position:"absolute",top:0,right:0,bottom:a,width:"1.5px",background:e}}),n.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:a,height:"1.5px",background:e}}),n.jsx("div",{style:{position:"absolute",top:a,bottom:0,left:0,width:"1.5px",background:e}}),n.jsxs("svg",{width:a,height:a,style:{position:"absolute",top:0,left:0},children:[n.jsx("line",{x1:"0",y1:a,x2:a,y2:"0",stroke:e,strokeWidth:"2"}),n.jsx("polygon",{points:`0,${a} ${Math.floor(a/2)},${a} 0,${Math.floor(a/2)}`,fill:e,opacity:"0.5"})]}),n.jsxs("svg",{width:a,height:a,style:{position:"absolute",bottom:0,right:0},children:[n.jsx("line",{x1:"0",y1:a,x2:a,y2:"0",stroke:e,strokeWidth:"2"}),n.jsx("polygon",{points:`${a},0 ${Math.floor(a/2)},0 ${a},${Math.floor(a/2)}`,fill:e,opacity:"0.5"})]})]}),rd=({activePage:a,setActivePage:e,isOpen:t,onOpenChange:r,onOpenExplorer:o,side:i="right",onSideChange:s})=>{const c=T.useRef(null),[d,p]=T.useState({top:0,left:0,btnCenterX:0,btnRight:0}),[h,m]=T.useState(!1),[f,v]=T.useState(!1),[P,y]=T.useState({top:0,left:0});T.useEffect(()=>{const E=c.current;if(!E)return;const w=k=>{k.preventDefault(),k.stopPropagation();const U=E.getBoundingClientRect();y({top:U.bottom+8,left:U.left}),v(!0)};return E.addEventListener("contextmenu",w),()=>E.removeEventListener("contextmenu",w)},[]),T.useEffect(()=>{if(!f)return;const E=()=>v(!1);return setTimeout(()=>window.addEventListener("mousedown",E),0),()=>window.removeEventListener("mousedown",E)},[f]);const A=T.useCallback(()=>{if(t&&c.current){const E=c.current.getBoundingClientRect(),w=248,k=40;let U;i==="right"?U=E.right-w+10:U=E.left-10,U=Math.max(10,Math.min(U,window.innerWidth-w-10)),p({top:E.bottom+k,left:U,btnCenterX:E.left+E.width/2,btnRight:E.right})}},[t,i]);T.useEffect(()=>{let E;const w=()=>{A(),E=requestAnimationFrame(w)};return t&&(w(),window.addEventListener("resize",A)),()=>{cancelAnimationFrame(E),window.removeEventListener("resize",A)}},[t,A]),T.useEffect(()=>{const E=w=>{const k=document.getElementById("navbar-portal-menu");c.current&&!c.current.contains(w.target)&&(!k||!k.contains(w.target))&&r(!1)};return document.addEventListener("mousedown",E),()=>document.removeEventListener("mousedown",E)},[r]);const V=()=>{if(!t||!c.current)return null;const E=c.current.getBoundingClientRect(),w=E.bottom,k=d.top-E.bottom;if(k<=0)return null;const U=248,D=14,S=E.left+E.width/2,x=i==="right"?d.left+U-10:d.left+10,_=x<S?`M ${S} 0 L ${S} ${k-D} Q ${S} ${k} ${S-D} ${k} L ${x} ${k}`:`M ${S} 0 L ${S} ${k-D} Q ${S} ${k} ${S+D} ${k} L ${x} ${k}`;return n.jsxs("svg",{style:{position:"fixed",top:`${w}px`,left:0,width:"100vw",height:`${k}px`,zIndex:1e6,pointerEvents:"none",overflow:"visible"},children:[n.jsx("defs",{children:n.jsxs("filter",{id:"connGlowF",x:"-200%",y:"-200%",width:"500%",height:"500%",children:[n.jsx("feGaussianBlur",{stdDeviation:"2.5",result:"b"}),n.jsxs("feMerge",{children:[n.jsx("feMergeNode",{in:"b"}),n.jsx("feMergeNode",{in:"SourceGraphic"})]})]})}),n.jsx("path",{d:_,fill:"none",stroke:"#00e5ff",strokeWidth:"3",opacity:"0.18",filter:"url(#connGlowF)"}),n.jsx("path",{d:_,fill:"none",stroke:"#00e5ff",strokeWidth:"1.5",strokeDasharray:"4 3",strokeLinecap:"round",opacity:"0.95",style:{filter:"drop-shadow(0 0 4px rgba(0,229,255,0.8))"}}),n.jsx("circle",{cx:S,cy:0,r:"3.5",fill:"#00e5ff",style:{filter:"drop-shadow(0 0 6px #00e5ff)"}}),n.jsx("circle",{cx:x,cy:k,r:"2.5",fill:"#00e5ff",opacity:"0.85"})]})},I=[{name:"Terminal Files",key:"file",icon:n.jsx(fp,{}),isAction:!0,action:o},{name:"Certificates",key:"certificates",icon:n.jsx(hp,{}),isAction:!1},{name:"Book",key:"book",icon:n.jsx(up,{}),isAction:!1},{name:"Start OS",key:"start-os",icon:n.jsx(yp,{}),isAction:!0,action:()=>window.open("/os.html","_blank"),extraIcon:n.jsx(Sp,{style:{fontSize:"0.9rem",opacity:.5}})},{name:"Features",key:"feature",icon:n.jsx(mp,{}),isAction:!1},{name:"Download APK",key:"apk",icon:n.jsx(gp,{}),isAction:!1}];return n.jsxs("div",{style:{position:"relative"},children:[n.jsxs(Y.button,{ref:c,onClick:()=>r(!t),onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),whileHover:{scale:1.05},whileTap:{scale:.95},"data-no-ctx":!0,style:{background:t?"rgba(0, 229, 255, 0.15)":"rgba(6, 6, 14, 0.5)",backdropFilter:"blur(14px)",border:"none",clipPath:"polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px)",width:"48px",height:"48px",display:"flex",alignItems:"center",justifyContent:"center",color:t||h?"#00e5ff":"rgba(255,255,255,0.45)",cursor:"pointer",transition:"all 0.25s ease",outline:"none",filter:t?"drop-shadow(0 0 10px rgba(0,229,255,0.2))":"none",position:"relative",overflow:"visible"},children:[n.jsx(td,{cut:10,color:t||h?"rgba(0, 229, 255, 0.6)":"rgba(0, 229, 255, 0.2)"}),n.jsx(pp,{style:{fontSize:"1.5rem",filter:t?"drop-shadow(0 0 8px #00e5ff)":"none"}})]}),f&&Go.createPortal(n.jsxs("div",{style:{position:"fixed",top:P.top,left:P.left,zIndex:1000010,background:"rgba(6,6,14,0.97)",backdropFilter:"blur(20px)",border:"1px solid rgba(0,229,255,0.25)",borderRadius:"10px",padding:"6px",width:"170px",boxShadow:"0 12px 50px rgba(0,0,0,0.7)",fontFamily:"'JetBrains Mono', monospace"},onMouseDown:E=>E.stopPropagation(),children:[n.jsx("div",{style:{fontSize:"9px",color:"rgba(0,229,255,0.45)",letterSpacing:"2px",padding:"4px 10px 6px",textTransform:"uppercase"},children:"Position"}),n.jsx("button",{style:{display:"flex",alignItems:"center",gap:"10px",background:"transparent",border:"none",color:"#ccc",padding:"9px 12px",borderRadius:"7px",width:"100%",cursor:"pointer",fontSize:"12px",textAlign:"left"},onMouseEnter:E=>{E.currentTarget.style.background="rgba(0,229,255,0.1)",E.currentTarget.style.color="#fff"},onMouseLeave:E=>{E.currentTarget.style.background="transparent",E.currentTarget.style.color="#ccc"},onClick:()=>{s?.(i==="left"?"right":"left"),v(!1)},children:i==="left"?n.jsxs(n.Fragment,{children:[n.jsx("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:n.jsx("path",{d:"M5 12h14M12 5l7 7-7 7",strokeLinecap:"round",strokeLinejoin:"round"})})," Move to Right"]}):n.jsxs(n.Fragment,{children:[n.jsx("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:n.jsx("path",{d:"M19 12H5M12 5l-7 7 7 7",strokeLinecap:"round",strokeLinejoin:"round"})})," Move to Left"]})})]}),document.body),typeof document<"u"&&Go.createPortal(n.jsx(ht,{children:t&&n.jsxs(n.Fragment,{children:[V(),n.jsxs(Y.div,{id:"navbar-portal-menu",initial:{opacity:0,y:6,scale:.97},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:4,scale:.97,transition:{duration:.12}},transition:{duration:.18,ease:"easeOut"},style:{position:"fixed",top:`${d.top}px`,left:`${d.left}px`,width:"248px",background:"rgba(4, 4, 10, 0.88)",backdropFilter:"blur(24px)",border:"none",clipPath:"polygon(16px 0, 100% 0, 100% calc(100% - 16px), calc(100% - 16px) 100%, 0 100%, 0 16px)",padding:"14px 10px",filter:"drop-shadow(0 15px 30px rgba(0,0,0,0.8)) drop-shadow(0 0 10px rgba(0,229,255,0.1))",display:"flex",flexDirection:"column",gap:"5px",zIndex:1000001,transformOrigin:i==="right"?"top right":"top left",overflow:"hidden"},children:[n.jsx(td,{cut:16,color:"rgba(0, 229, 255, 0.4)"}),n.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"2px 10px 8px",position:"relative",zIndex:3},children:[n.jsx("span",{style:{fontSize:"9px",color:"#00e5ff",letterSpacing:"3px",fontWeight:800,fontFamily:"'JetBrains Mono', monospace"},children:"MORE"}),n.jsx("div",{style:{display:"flex",gap:"4px"},children:[.3,.6,1].map((E,w)=>n.jsx("div",{style:{width:"3px",height:"3px",borderRadius:"50%",background:"#00e5ff",opacity:E}},w))})]}),I.map(E=>{const w=a===E.key;return n.jsxs("a",{href:"#",onClick:k=>{k.preventDefault(),E.isAction?E.action?.():e(E.key),r(!1)},style:{textDecoration:"none",position:"relative",zIndex:3,display:"flex",alignItems:"center",justifyContent:"space-between",padding:"11px 16px",borderRadius:"10px",color:w?"#fff":"rgba(255,255,255,0.45)",background:w?"rgba(0,229,255,0.13)":"rgba(255,255,255,0.02)",border:`1px solid ${w?"rgba(0,229,255,0.35)":"rgba(255,255,255,0.04)"}`,transition:"all 0.18s ease",fontFamily:"'Rajdhani', sans-serif",textTransform:"uppercase",fontSize:"0.78rem",letterSpacing:"1.2px",fontWeight:600},onMouseEnter:k=>{k.currentTarget.style.background="rgba(0,229,255,0.1)",k.currentTarget.style.color="#fff",k.currentTarget.style.borderColor="rgba(0,229,255,0.3)"},onMouseLeave:k=>{w||(k.currentTarget.style.background="rgba(255,255,255,0.02)",k.currentTarget.style.color="rgba(255,255,255,0.45)",k.currentTarget.style.borderColor="rgba(255,255,255,0.04)")},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"13px"},children:[n.jsx("span",{style:{fontSize:"1.2rem",display:"flex",color:w?"#00e5ff":"rgba(0,229,255,0.55)"},children:E.icon}),E.name]}),"extraIcon"in E&&E.extraIcon,w&&n.jsx("div",{style:{width:"5px",height:"5px",borderRadius:"50%",background:"#00e5ff",boxShadow:"0 0 8px #00e5ff",flexShrink:0}})]},E.key)}),n.jsx("div",{style:{height:"1px",background:"linear-gradient(90deg, transparent, rgba(0,229,255,0.25), transparent)",margin:"4px 0 0",position:"relative",zIndex:3}})]})]})}),document.body)]})},ly=({style:a})=>n.jsx("div",{style:{position:"absolute",width:"2px",height:"2px",borderRadius:"50%",background:"#00e5ff",opacity:.3,boxShadow:"0 0 6px #00e5ff",pointerEvents:"none",...a}}),cy=({onNavigate:a})=>{const[e,t]=T.useState(""),[r,o]=T.useState(!1),[i,s]=T.useState({days:0,hours:0,mins:0,secs:0}),c=T.useRef(null),d=new Date("2026-06-01T00:00:00");T.useEffect(()=>{const m=()=>{const v=new Date,P=Math.max(0,d.getTime()-v.getTime()),y=Math.floor(P/864e5),A=Math.floor(P%864e5/36e5),V=Math.floor(P%36e5/6e4),I=Math.floor(P%6e4/1e3);s({days:y,hours:A,mins:V,secs:I})};m();const f=setInterval(m,1e3);return()=>clearInterval(f)},[]),T.useEffect(()=>{const m=c.current;if(!m)return;const f=m.getContext("2d");if(!f)return;m.width=window.innerWidth,m.height=window.innerHeight;const v=()=>{m.width=window.innerWidth,m.height=window.innerHeight};window.addEventListener("resize",v);let P=0,y;const A=()=>{f.clearRect(0,0,m.width,m.height),f.strokeStyle="rgba(0, 229, 255, 0.06)",f.lineWidth=1;const V=60,I=P*.3%V;for(let E=-V+I;E<m.width+V;E+=V)f.beginPath(),f.moveTo(E,0),f.lineTo(E,m.height),f.stroke();for(let E=0;E<m.height+V;E+=V)f.beginPath(),f.moveTo(0,E),f.lineTo(m.width,E),f.stroke();if(P%3===0){const E=Math.random()*m.width,w=Math.random()*m.height;f.beginPath(),f.arc(E,w,1.5,0,Math.PI*2),f.fillStyle="rgba(0,229,255,0.5)",f.fill()}P++,y=requestAnimationFrame(A)};return A(),()=>{cancelAnimationFrame(y),window.removeEventListener("resize",v)}},[]);const p=m=>{m.preventDefault(),e.includes("@")&&o(!0)},h=Array.from({length:22},m=>({top:`${Math.random()*100}%`,left:`${Math.random()*100}%`,animationDelay:`${Math.random()*4}s`}));return n.jsxs("div",{style:{minHeight:"100vh",background:"linear-gradient(135deg, #030308 0%, #050514 40%, #04070f 100%)",fontFamily:"'JetBrains Mono', 'Rajdhani', monospace",display:"flex",flexDirection:"column",position:"relative",overflow:"hidden"},children:[n.jsx("canvas",{ref:c,style:{position:"fixed",inset:0,pointerEvents:"none",zIndex:0}}),h.map((m,f)=>n.jsx(ly,{style:{top:m.top,left:m.left}},f)),n.jsx("div",{style:{position:"fixed",top:"20%",left:"10%",width:"400px",height:"400px",borderRadius:"50%",background:"radial-gradient(circle, rgba(0,229,255,0.04) 0%, transparent 70%)",pointerEvents:"none",zIndex:0}}),n.jsx("div",{style:{position:"fixed",bottom:"10%",right:"5%",width:"600px",height:"600px",borderRadius:"50%",background:"radial-gradient(circle, rgba(120,0,255,0.04) 0%, transparent 70%)",pointerEvents:"none",zIndex:0}}),n.jsxs(Y.button,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{duration:.5,delay:.2},onClick:()=>{window.history.state&&window.history.state.idx>0?window.history.back():a?a("home"):window.location.href="/"},style:{position:"absolute",top:"25px",left:"25px",zIndex:100,display:"flex",alignItems:"center",gap:"8px",background:"rgba(6, 6, 15, 0.6)",border:"1px solid rgba(0, 229, 255, 0.4)",padding:"8px 16px",borderRadius:"20px",color:"#00e5ff",cursor:"pointer",fontFamily:"'JetBrains Mono', monospace",fontSize:"13px",fontWeight:600,backdropFilter:"blur(10px)",boxShadow:"0 0 15px rgba(0,229,255,0.1)"},whileHover:{scale:1.05,boxShadow:"0 0 25px rgba(0,229,255,0.3)"},whileTap:{scale:.95},children:[n.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[n.jsx("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),n.jsx("polyline",{points:"12 19 5 12 12 5"})]}),"BACK"]}),n.jsxs("main",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"60px 20px 40px",position:"relative",zIndex:2,gap:"0"},children:[n.jsx(Y.h1,{initial:{opacity:0,y:-40,filter:"blur(20px)"},animate:{opacity:1,y:0,filter:"blur(0px)",backgroundPosition:["0% 50%","100% 50%","0% 50%"]},transition:{opacity:{duration:1.2,ease:[.16,1,.3,1]},y:{duration:1.2,ease:[.16,1,.3,1]},filter:{duration:1.2,ease:[.16,1,.3,1]},backgroundPosition:{duration:15,repeat:1/0,ease:"linear"}},style:{fontSize:"clamp(72px, 18vw, 220px)",fontWeight:900,letterSpacing:"-6px",lineHeight:.9,margin:0,padding:0,textTransform:"uppercase",background:`
|
|
102
|
+
linear-gradient(to right,
|
|
103
|
+
#00e5ff, #0077ff, #00e5ff, #7b00ff, #00ff88, #00e5ff
|
|
104
|
+
)
|
|
105
|
+
`,backgroundSize:"400% 100%",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text",filter:"drop-shadow(0 0 30px rgba(0,229,255,0.25))",userSelect:"none"},children:"FEATURE"}),n.jsx(Y.div,{initial:{scaleX:0},animate:{scaleX:1},transition:{delay:.4,duration:.8},style:{width:"100%",maxWidth:"600px",height:"1px",background:"linear-gradient(90deg, transparent, rgba(0,229,255,0.5), transparent)",margin:"24px 0 32px"}}),n.jsx("div",{style:{width:"100%",maxWidth:"1200px",display:"flex",flexDirection:"column",gap:"80px",marginTop:"40px",marginBottom:"80px"},children:[{title:"Desktop Dashboard & Sidebar",desc:"A sprawling glass-morphism aesthetic. Hoverable sidebar elements featuring Opera GX-style borders cut with precise SVGs to eliminate bloat. Total real-time synchronization.",img:"/assets/images/features/desktop_home.jpg",reverse:!1,mobile:!1},{title:"Mobile Bottom Bar & 3D ID",desc:"True responsiveness. A dedicated Bottom Application Bar ensures seamless one-handed terminal navigation. Engage with the fully dynamic, WebGL dangling 3D Identity Card interacting natively with device motion.",img:"/assets/images/features/mobile_home.jpg",reverse:!0,mobile:!0},{title:"Cloud File Explorer",desc:"Interact with local and cloud files synchronously through a specialized File Explorer. Features include live pinning protocols, search bars, and an interactive structural grid.",img:"/assets/images/features/desktop_file_explorer.jpg",reverse:!1,mobile:!1},{title:"Tushar OS Terminal",desc:"Complete simulation. An absolute root-access Linux terminal featuring live server statuses, fingerprint authenticators, and interactive command prompts.",img:"/assets/images/features/desktop_os.jpg",reverse:!0,mobile:!1}].map((m,f)=>n.jsxs(Y.div,{initial:{opacity:0,y:100},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-100px"},transition:{duration:.8,ease:[.16,1,.3,1]},style:{display:"flex",flexDirection:m.reverse?"row-reverse":"row",alignItems:"center",gap:"40px",background:"rgba(255, 255, 255, 0.02)",border:"1px solid rgba(0, 229, 255, 0.15)",borderRadius:"24px",padding:"30px",backdropFilter:"blur(10px)",overflow:"hidden",position:"relative",flexWrap:"wrap"},children:[n.jsx("div",{style:{position:"absolute",top:0,left:"20%",width:"60%",height:"1px",background:"linear-gradient(90deg, transparent, #00e5ff, transparent)",filter:"drop-shadow(0 0 10px #00e5ff)"}}),n.jsxs("div",{style:{flex:"1 1 350px",display:"flex",flexDirection:"column",gap:"15px"},children:[n.jsxs(Y.div,{style:{fontSize:"10px",color:"#ff2160",letterSpacing:"4px",textTransform:"uppercase"},initial:{opacity:0,x:m.reverse?20:-20},whileInView:{opacity:1,x:0},transition:{delay:.2,duration:.6},children:["OVERVIEW // ",String(f+1).padStart(2,"0")]}),n.jsx(Y.h2,{style:{fontSize:"clamp(28px, 4vw, 42px)",fontWeight:800,color:"#fff",margin:0,lineHeight:1.1,textShadow:"0 0 20px rgba(0,229,255,0.4)",WebkitTextStroke:"0.5px rgba(0,229,255,0.2)"},initial:{opacity:0,x:m.reverse?20:-20},whileInView:{opacity:1,x:0},transition:{delay:.3,duration:.6},children:m.title}),n.jsx(Y.p,{style:{fontSize:"clamp(14px, 1.5vw, 16px)",color:"rgba(255,255,255,0.6)",lineHeight:1.6,margin:0,marginTop:"10px"},initial:{opacity:0},whileInView:{opacity:1},transition:{delay:.5,duration:.6},children:m.desc})]}),n.jsxs(Y.div,{style:{flex:"1 1 450px",position:"relative",borderRadius:"16px",overflow:"hidden",border:"1px solid rgba(0, 229, 255, 0.3)",boxShadow:"0 0 40px rgba(0,229,255,0.1)",aspectRatio:m.mobile?"9/19":"16/10",maxWidth:m.mobile?"300px":"100%",margin:m.mobile?"0 auto":"0",display:"flex",flexDirection:"column",background:"#0a0a0f"},whileHover:{scale:1.02,boxShadow:"0 0 60px rgba(0,229,255,0.3)"},transition:{duration:.4},children:[n.jsxs("div",{style:{height:m.mobile?"20px":"30px",background:"rgba(255,255,255,0.05)",borderBottom:"1px solid rgba(255,255,255,0.1)",display:"flex",alignItems:"center",padding:"0 12px",gap:"6px"},children:[n.jsx("div",{style:{width:"8px",height:"8px",borderRadius:"50%",background:"#ff5f56"}}),n.jsx("div",{style:{width:"8px",height:"8px",borderRadius:"50%",background:"#ffbd2e"}}),n.jsx("div",{style:{width:"8px",height:"8px",borderRadius:"50%",background:"#27c93f"}}),!m.mobile&&n.jsxs("div",{style:{margin:"0 auto",fontSize:"10px",color:"rgba(255,255,255,0.3)",fontFamily:"monospace",background:"rgba(0,0,0,0.5)",padding:"2px 40px",borderRadius:"10px"},children:["localhost:5173 — ",m.title]})]}),n.jsxs("div",{style:{position:"relative",flex:1,overflow:"hidden"},children:[n.jsx("div",{style:{position:"absolute",inset:0,background:"linear-gradient(transparent, rgba(0,0,0,0.5))",zIndex:1,pointerEvents:"none"}}),n.jsx("img",{src:m.img,alt:m.title,style:{width:"100%",height:"100%",objectFit:"cover",display:"block"},onError:v=>{v.currentTarget.src="/assets/images/cover-tusharbr.jpg"}}),n.jsx("div",{style:{position:"absolute",bottom:"15px",right:"15px",zIndex:2,background:"rgba(0, 229, 255, 0.15)",backdropFilter:"blur(5px)",border:"1px solid rgba(0,229,255,0.4)",padding:"4px 10px",borderRadius:"8px",fontSize:"10px",color:"#00e5ff",fontWeight:"bold",pointerEvents:"none",textTransform:"uppercase",letterSpacing:"1px"},children:"Preview Screenshot"})]})]})]},f))}),n.jsx(Y.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.8,duration:.6},style:{display:"flex",gap:"clamp(12px, 3vw, 32px)",marginBottom:"56px"},children:[{label:"DAYS",val:i.days},{label:"HRS",val:i.hours},{label:"MIN",val:i.mins},{label:"SEC",val:i.secs}].map(({label:m,val:f})=>n.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",background:"rgba(0,229,255,0.04)",border:"1px solid rgba(0,229,255,0.12)",borderRadius:"14px",padding:"clamp(12px, 2vw, 20px) clamp(14px, 3vw, 28px)",minWidth:"clamp(64px, 10vw, 90px)",boxShadow:"0 0 20px rgba(0,229,255,0.04), inset 0 0 14px rgba(0,229,255,0.02)",position:"relative",overflow:"hidden"},children:[n.jsx("div",{style:{position:"absolute",top:6,left:6,width:10,height:10,borderTop:"1px solid rgba(0,229,255,0.4)",borderLeft:"1px solid rgba(0,229,255,0.4)",borderRadius:"2px 0 0 0"}}),n.jsx("div",{style:{position:"absolute",bottom:6,right:6,width:10,height:10,borderBottom:"1px solid rgba(0,229,255,0.4)",borderRight:"1px solid rgba(0,229,255,0.4)",borderRadius:"0 0 2px 0"}}),n.jsx("span",{style:{fontSize:"clamp(24px, 5vw, 42px)",fontWeight:900,color:"#00e5ff",lineHeight:1,fontVariantNumeric:"tabular-nums",textShadow:"0 0 20px rgba(0,229,255,0.4)"},children:String(f).padStart(2,"0")}),n.jsx("span",{style:{fontSize:"9px",color:"rgba(0,229,255,0.4)",letterSpacing:"3px",marginTop:"6px"},children:m})]},m))}),n.jsxs(Y.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:1,duration:.6},style:{width:"100%",maxWidth:"480px",textAlign:"center"},children:[n.jsx("p",{style:{fontSize:"11px",color:"rgba(255,255,255,0.3)",letterSpacing:"2px",marginBottom:"16px"},children:"GET NOTIFIED ON LAUNCH"}),r?n.jsx(Y.div,{initial:{scale:.8,opacity:0},animate:{scale:1,opacity:1},style:{padding:"14px 24px",background:"rgba(0,255,100,0.06)",border:"1px solid rgba(0,255,100,0.25)",borderRadius:"12px",color:"#00ff88",fontSize:"12px",letterSpacing:"2px"},children:"✓ YOU'RE ON THE LIST — STAND BY"}):n.jsxs("form",{onSubmit:p,style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"center"},children:[n.jsx("input",{type:"email",value:e,onChange:m=>t(m.target.value),placeholder:"your@email.com",required:!0,style:{flex:"1",minWidth:"200px",maxWidth:"300px",padding:"12px 18px",background:"rgba(0,229,255,0.04)",border:"1px solid rgba(0,229,255,0.2)",borderRadius:"10px",color:"#fff",fontSize:"13px",outline:"none",fontFamily:"inherit",backdropFilter:"blur(10px)"}}),n.jsx("button",{type:"submit",style:{padding:"12px 24px",background:"linear-gradient(135deg, rgba(0,229,255,0.15), rgba(0,229,255,0.08))",border:"1px solid rgba(0,229,255,0.4)",borderRadius:"10px",color:"#00e5ff",fontSize:"12px",fontWeight:700,letterSpacing:"2px",cursor:"pointer",fontFamily:"inherit",transition:"all 0.2s",whiteSpace:"nowrap"},onMouseEnter:m=>{m.currentTarget.style.background="rgba(0,229,255,0.2)"},onMouseLeave:m=>{m.currentTarget.style.background="linear-gradient(135deg, rgba(0,229,255,0.15), rgba(0,229,255,0.08))"},children:"NOTIFY ME"})]})]})]}),n.jsxs("footer",{style:{position:"relative",zIndex:2,textAlign:"center",padding:"20px 24px",borderTop:"1px solid rgba(255,255,255,0.04)",display:"flex",flexDirection:"column",alignItems:"center",gap:"6px"},children:[n.jsxs("div",{style:{display:"flex",gap:"6px",alignItems:"center",marginBottom:"4px"},children:[n.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:"#00e5ff",boxShadow:"0 0 8px #00e5ff"}}),n.jsx("span",{style:{fontSize:"10px",color:"rgba(0,229,255,0.5)",letterSpacing:"3px"},children:"TUSHARBR.ONLINE"}),n.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:"#00e5ff",boxShadow:"0 0 8px #00e5ff"}})]}),n.jsx("p",{style:{fontSize:"10px",color:"rgba(255,255,255,0.15)",letterSpacing:"2px",margin:0},children:"© 2026 TUSHAR BR — ALL SYSTEMS CLASSIFIED"})]})]})},dy=({activePage:a,setActivePage:e,onOpenTerminal:t,canBack:r,canForward:o})=>{const[i,s]=T.useState(!1),[c,d]=T.useState({x:0,y:0}),[p,h]=T.useState({width:220,height:0}),[m,f]=T.useState(null),v=T.useRef(null);T.useEffect(()=>{const w=D=>{if(D.preventDefault(),D.target.closest("[data-no-ctx]"))return;let x=D.clientX,C=D.clientY;const _=window.innerWidth,R=window.innerHeight,j=220,W=350;x+j>_&&(x-=j),C+W>R&&(C-=W),d({x,y:C}),s(!0),f(null)},k=()=>s(!1),U=()=>s(!1);return window.addEventListener("contextmenu",w),window.addEventListener("click",k),window.addEventListener("scroll",U,!0),()=>{window.removeEventListener("contextmenu",w),window.removeEventListener("click",k),window.removeEventListener("scroll",U,!0)}},[]),T.useEffect(()=>{i&&v.current&&h({width:v.current.offsetWidth,height:v.current.offsetHeight})},[i]);const P=[{id:"back",icon:n.jsx(Gm,{}),action:()=>window.history.back(),active:r},{id:"forward",icon:n.jsx(zm,{}),action:()=>window.history.forward(),active:o}],y=[{name:"Home",key:"home"},{name:"About",key:"about"},{name:"Resume",key:"resume"},{name:"Projects",key:"projects"},{name:"Status",key:"status"},{name:"Socials",key:"socials"},{name:"Contact",key:"contact"},{name:"Certificates",key:"certificates"},{name:"Private Book",key:"book"},{name:"Tushar OS",key:"kalilinuxtools"},{name:"APK Hub",key:"apk"}],A=[{name:"GitHub",icon:n.jsx(Qi,{}),url:"https://github.com/tushar-br"},{name:"HackerRank",icon:n.jsx(en,{}),url:"https://www.hackerrank.com/profile/rathodtushar1442"},{name:"Instagram",icon:n.jsx(Yi,{}),url:"https://www.instagram.com/tushar__br/"},{name:"LinkedIn",icon:n.jsx(Ki,{}),url:"https://www.linkedin.com/in/tushar-br/"}];if(!i)return null;const V=Math.min(c.x,window.innerWidth-220-10),I=Math.min(c.y,window.innerHeight-p.height-10),E=V+220+200>window.innerWidth?"left":"right";return n.jsx(ht,{children:n.jsxs(Y.div,{ref:v,initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},exit:{opacity:0,transition:{duration:.1}},style:{position:"fixed",top:`${I}px`,left:`${V}px`,width:"220px",background:"rgba(5, 5, 12, 0.5)",backdropFilter:"blur(20px)",border:"1px solid rgba(0, 229, 255, 0.3)",borderRadius:"14px",padding:"8px",zIndex:99999999,boxShadow:"0 25px 80px rgba(0, 0, 0, 0.9), 0 0 40px rgba(0, 229, 255, 0.1)"},onContextMenu:w=>w.preventDefault(),children:[n.jsx("div",{style:{display:"flex",gap:"8px",padding:"2px",marginBottom:"8px",borderBottom:"1px solid rgba(0, 229, 255, 0.1)"},children:P.map(w=>n.jsx("button",{onClick:w.action,disabled:!w.active,style:{flex:1,background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.05)",borderRadius:"8px",padding:"10px",color:w.active?"#00e5ff":"rgba(255,255,255,0.1)",cursor:w.active?"pointer":"default",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"1.2rem",transition:"all 0.2s"},onMouseEnter:k=>w.active&&(k.currentTarget.style.borderColor="rgba(0, 229, 255, 0.5)"),onMouseLeave:k=>w.active&&(k.currentTarget.style.borderColor="rgba(255,255,255,0.05)"),children:w.icon},w.id))}),n.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[n.jsx(Po,{icon:n.jsx(Nm,{}),label:"Inspect module",shortcut:"F12",onClick:()=>{t(),s(!1)}}),n.jsx("div",{style:{height:"1px",background:"rgba(0, 229, 255, 0.1)",margin:"4px 8px"}}),n.jsx(Po,{icon:n.jsx(Ms,{}),label:"Main Dashboard",onClick:()=>{e("home"),s(!1)}}),n.jsxs("div",{onMouseEnter:()=>f("socials"),onMouseLeave:()=>f(null),style:{position:"relative"},children:[n.jsx(Po,{icon:n.jsx(Ji,{}),label:"Social matrix",arrow:!0}),m==="socials"&&n.jsx(ad,{items:A.map(w=>({label:w.name,icon:w.icon,onClick:()=>{window.open(w.url,"_blank"),s(!1)}})),dir:E})]}),n.jsxs("div",{onMouseEnter:()=>f("pages"),onMouseLeave:()=>f(null),style:{position:"relative"},children:[n.jsx(Po,{icon:n.jsx(Wm,{}),label:"Deploy pages",arrow:!0}),m==="pages"&&n.jsx(ad,{items:y.map(w=>({label:w.name,key:w.key,isActive:a===w.key,onClick:()=>{e(w.key),s(!1)}})),dir:E})]})]})]})})},Po=({icon:a,label:e,shortcut:t,arrow:r,onClick:o,isActive:i})=>n.jsxs("button",{onClick:o,style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 14px",background:i?"rgba(0, 229, 255, 0.15)":"transparent",border:"none",borderRadius:"10px",color:i?"#fff":"rgba(255,255,255,0.5)",fontSize:"0.85rem",fontFamily:"'Rajdhani', sans-serif",fontWeight:700,cursor:"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",textAlign:"left",letterSpacing:"0.8px"},onMouseEnter:s=>{s.currentTarget.style.background="rgba(0, 229, 255, 0.1)",s.currentTarget.style.color="#fff",s.currentTarget.style.transform="translateX(4px)"},onMouseLeave:s=>{s.currentTarget.style.background=i?"rgba(0, 229, 255, 0.15)":"transparent",s.currentTarget.style.color=i?"#fff":"rgba(255,255,255,0.5)",s.currentTarget.style.transform="translateX(0)"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"14px"},children:[n.jsx("span",{style:{fontSize:"1.2rem",color:i?"#00e5ff":"inherit",display:"flex"},children:a}),n.jsx("span",{style:{textTransform:"uppercase"},children:e})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[t&&n.jsx("span",{style:{fontSize:"0.7rem",opacity:.3,fontWeight:400},children:t}),r&&n.jsx(Om,{style:{fontSize:"0.9rem",opacity:.5}})]})]}),ad=({items:a,dir:e})=>{const r=a.length>8?2:1,o=r*200;return n.jsx(Y.div,{initial:{opacity:0,x:e==="right"?-10:10},animate:{opacity:1,x:0},style:{position:"absolute",top:"-8px",left:e==="right"?"calc(100% + 10px)":`calc(-${o}px - 14px)`,width:`${o}px`,background:"rgba(5, 5, 12, 0.98)",backdropFilter:"blur(30px)",border:"1px solid rgba(0, 229, 255, 0.3)",borderRadius:"12px",padding:"6px",boxShadow:"0 20px 40px rgba(0, 0, 0, 0.6)",zIndex:100,display:"grid",gridTemplateColumns:`repeat(${r}, 200px)`,maxHeight:"85vh",overflowY:"auto",scrollbarWidth:"none"},children:a.map((i,s)=>n.jsx(Po,{icon:i.icon||n.jsx("div",{style:{width:"5px",height:"5px",borderRadius:"50%",background:i.isActive?"#00e5ff":"rgba(255,255,255,0.2)"}}),label:i.label,onClick:i.onClick,isActive:i.isActive},s))})};var od=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};var Er,Th;(function(){var a;function e(D,S){function x(){}x.prototype=S.prototype,D.F=S.prototype,D.prototype=new x,D.prototype.constructor=D,D.D=function(C,_,R){for(var j=Array(arguments.length-2),W=2;W<arguments.length;W++)j[W-2]=arguments[W];return S.prototype[_].apply(C,j)}}function t(){this.blockSize=-1}function r(){this.blockSize=-1,this.blockSize=64,this.g=Array(4),this.C=Array(this.blockSize),this.o=this.h=0,this.u()}e(r,t),r.prototype.u=function(){this.g[0]=1732584193,this.g[1]=4023233417,this.g[2]=2562383102,this.g[3]=271733878,this.o=this.h=0};function o(D,S,x){x||(x=0);const C=Array(16);if(typeof S=="string")for(var _=0;_<16;++_)C[_]=S.charCodeAt(x++)|S.charCodeAt(x++)<<8|S.charCodeAt(x++)<<16|S.charCodeAt(x++)<<24;else for(_=0;_<16;++_)C[_]=S[x++]|S[x++]<<8|S[x++]<<16|S[x++]<<24;S=D.g[0],x=D.g[1],_=D.g[2];let R=D.g[3],j;j=S+(R^x&(_^R))+C[0]+3614090360&4294967295,S=x+(j<<7&4294967295|j>>>25),j=R+(_^S&(x^_))+C[1]+3905402710&4294967295,R=S+(j<<12&4294967295|j>>>20),j=_+(x^R&(S^x))+C[2]+606105819&4294967295,_=R+(j<<17&4294967295|j>>>15),j=x+(S^_&(R^S))+C[3]+3250441966&4294967295,x=_+(j<<22&4294967295|j>>>10),j=S+(R^x&(_^R))+C[4]+4118548399&4294967295,S=x+(j<<7&4294967295|j>>>25),j=R+(_^S&(x^_))+C[5]+1200080426&4294967295,R=S+(j<<12&4294967295|j>>>20),j=_+(x^R&(S^x))+C[6]+2821735955&4294967295,_=R+(j<<17&4294967295|j>>>15),j=x+(S^_&(R^S))+C[7]+4249261313&4294967295,x=_+(j<<22&4294967295|j>>>10),j=S+(R^x&(_^R))+C[8]+1770035416&4294967295,S=x+(j<<7&4294967295|j>>>25),j=R+(_^S&(x^_))+C[9]+2336552879&4294967295,R=S+(j<<12&4294967295|j>>>20),j=_+(x^R&(S^x))+C[10]+4294925233&4294967295,_=R+(j<<17&4294967295|j>>>15),j=x+(S^_&(R^S))+C[11]+2304563134&4294967295,x=_+(j<<22&4294967295|j>>>10),j=S+(R^x&(_^R))+C[12]+1804603682&4294967295,S=x+(j<<7&4294967295|j>>>25),j=R+(_^S&(x^_))+C[13]+4254626195&4294967295,R=S+(j<<12&4294967295|j>>>20),j=_+(x^R&(S^x))+C[14]+2792965006&4294967295,_=R+(j<<17&4294967295|j>>>15),j=x+(S^_&(R^S))+C[15]+1236535329&4294967295,x=_+(j<<22&4294967295|j>>>10),j=S+(_^R&(x^_))+C[1]+4129170786&4294967295,S=x+(j<<5&4294967295|j>>>27),j=R+(x^_&(S^x))+C[6]+3225465664&4294967295,R=S+(j<<9&4294967295|j>>>23),j=_+(S^x&(R^S))+C[11]+643717713&4294967295,_=R+(j<<14&4294967295|j>>>18),j=x+(R^S&(_^R))+C[0]+3921069994&4294967295,x=_+(j<<20&4294967295|j>>>12),j=S+(_^R&(x^_))+C[5]+3593408605&4294967295,S=x+(j<<5&4294967295|j>>>27),j=R+(x^_&(S^x))+C[10]+38016083&4294967295,R=S+(j<<9&4294967295|j>>>23),j=_+(S^x&(R^S))+C[15]+3634488961&4294967295,_=R+(j<<14&4294967295|j>>>18),j=x+(R^S&(_^R))+C[4]+3889429448&4294967295,x=_+(j<<20&4294967295|j>>>12),j=S+(_^R&(x^_))+C[9]+568446438&4294967295,S=x+(j<<5&4294967295|j>>>27),j=R+(x^_&(S^x))+C[14]+3275163606&4294967295,R=S+(j<<9&4294967295|j>>>23),j=_+(S^x&(R^S))+C[3]+4107603335&4294967295,_=R+(j<<14&4294967295|j>>>18),j=x+(R^S&(_^R))+C[8]+1163531501&4294967295,x=_+(j<<20&4294967295|j>>>12),j=S+(_^R&(x^_))+C[13]+2850285829&4294967295,S=x+(j<<5&4294967295|j>>>27),j=R+(x^_&(S^x))+C[2]+4243563512&4294967295,R=S+(j<<9&4294967295|j>>>23),j=_+(S^x&(R^S))+C[7]+1735328473&4294967295,_=R+(j<<14&4294967295|j>>>18),j=x+(R^S&(_^R))+C[12]+2368359562&4294967295,x=_+(j<<20&4294967295|j>>>12),j=S+(x^_^R)+C[5]+4294588738&4294967295,S=x+(j<<4&4294967295|j>>>28),j=R+(S^x^_)+C[8]+2272392833&4294967295,R=S+(j<<11&4294967295|j>>>21),j=_+(R^S^x)+C[11]+1839030562&4294967295,_=R+(j<<16&4294967295|j>>>16),j=x+(_^R^S)+C[14]+4259657740&4294967295,x=_+(j<<23&4294967295|j>>>9),j=S+(x^_^R)+C[1]+2763975236&4294967295,S=x+(j<<4&4294967295|j>>>28),j=R+(S^x^_)+C[4]+1272893353&4294967295,R=S+(j<<11&4294967295|j>>>21),j=_+(R^S^x)+C[7]+4139469664&4294967295,_=R+(j<<16&4294967295|j>>>16),j=x+(_^R^S)+C[10]+3200236656&4294967295,x=_+(j<<23&4294967295|j>>>9),j=S+(x^_^R)+C[13]+681279174&4294967295,S=x+(j<<4&4294967295|j>>>28),j=R+(S^x^_)+C[0]+3936430074&4294967295,R=S+(j<<11&4294967295|j>>>21),j=_+(R^S^x)+C[3]+3572445317&4294967295,_=R+(j<<16&4294967295|j>>>16),j=x+(_^R^S)+C[6]+76029189&4294967295,x=_+(j<<23&4294967295|j>>>9),j=S+(x^_^R)+C[9]+3654602809&4294967295,S=x+(j<<4&4294967295|j>>>28),j=R+(S^x^_)+C[12]+3873151461&4294967295,R=S+(j<<11&4294967295|j>>>21),j=_+(R^S^x)+C[15]+530742520&4294967295,_=R+(j<<16&4294967295|j>>>16),j=x+(_^R^S)+C[2]+3299628645&4294967295,x=_+(j<<23&4294967295|j>>>9),j=S+(_^(x|~R))+C[0]+4096336452&4294967295,S=x+(j<<6&4294967295|j>>>26),j=R+(x^(S|~_))+C[7]+1126891415&4294967295,R=S+(j<<10&4294967295|j>>>22),j=_+(S^(R|~x))+C[14]+2878612391&4294967295,_=R+(j<<15&4294967295|j>>>17),j=x+(R^(_|~S))+C[5]+4237533241&4294967295,x=_+(j<<21&4294967295|j>>>11),j=S+(_^(x|~R))+C[12]+1700485571&4294967295,S=x+(j<<6&4294967295|j>>>26),j=R+(x^(S|~_))+C[3]+2399980690&4294967295,R=S+(j<<10&4294967295|j>>>22),j=_+(S^(R|~x))+C[10]+4293915773&4294967295,_=R+(j<<15&4294967295|j>>>17),j=x+(R^(_|~S))+C[1]+2240044497&4294967295,x=_+(j<<21&4294967295|j>>>11),j=S+(_^(x|~R))+C[8]+1873313359&4294967295,S=x+(j<<6&4294967295|j>>>26),j=R+(x^(S|~_))+C[15]+4264355552&4294967295,R=S+(j<<10&4294967295|j>>>22),j=_+(S^(R|~x))+C[6]+2734768916&4294967295,_=R+(j<<15&4294967295|j>>>17),j=x+(R^(_|~S))+C[13]+1309151649&4294967295,x=_+(j<<21&4294967295|j>>>11),j=S+(_^(x|~R))+C[4]+4149444226&4294967295,S=x+(j<<6&4294967295|j>>>26),j=R+(x^(S|~_))+C[11]+3174756917&4294967295,R=S+(j<<10&4294967295|j>>>22),j=_+(S^(R|~x))+C[2]+718787259&4294967295,_=R+(j<<15&4294967295|j>>>17),j=x+(R^(_|~S))+C[9]+3951481745&4294967295,D.g[0]=D.g[0]+S&4294967295,D.g[1]=D.g[1]+(_+(j<<21&4294967295|j>>>11))&4294967295,D.g[2]=D.g[2]+_&4294967295,D.g[3]=D.g[3]+R&4294967295}r.prototype.v=function(D,S){S===void 0&&(S=D.length);const x=S-this.blockSize,C=this.C;let _=this.h,R=0;for(;R<S;){if(_==0)for(;R<=x;)o(this,D,R),R+=this.blockSize;if(typeof D=="string"){for(;R<S;)if(C[_++]=D.charCodeAt(R++),_==this.blockSize){o(this,C),_=0;break}}else for(;R<S;)if(C[_++]=D[R++],_==this.blockSize){o(this,C),_=0;break}}this.h=_,this.o+=S},r.prototype.A=function(){var D=Array((this.h<56?this.blockSize:this.blockSize*2)-this.h);D[0]=128;for(var S=1;S<D.length-8;++S)D[S]=0;S=this.o*8;for(var x=D.length-8;x<D.length;++x)D[x]=S&255,S/=256;for(this.v(D),D=Array(16),S=0,x=0;x<4;++x)for(let C=0;C<32;C+=8)D[S++]=this.g[x]>>>C&255;return D};function i(D,S){var x=c;return Object.prototype.hasOwnProperty.call(x,D)?x[D]:x[D]=S(D)}function s(D,S){this.h=S;const x=[];let C=!0;for(let _=D.length-1;_>=0;_--){const R=D[_]|0;C&&R==S||(x[_]=R,C=!1)}this.g=x}var c={};function d(D){return-128<=D&&D<128?i(D,function(S){return new s([S|0],S<0?-1:0)}):new s([D|0],D<0?-1:0)}function p(D){if(isNaN(D)||!isFinite(D))return m;if(D<0)return A(p(-D));const S=[];let x=1;for(let C=0;D>=x;C++)S[C]=D/x|0,x*=4294967296;return new s(S,0)}function h(D,S){if(D.length==0)throw Error("number format error: empty string");if(S=S||10,S<2||36<S)throw Error("radix out of range: "+S);if(D.charAt(0)=="-")return A(h(D.substring(1),S));if(D.indexOf("-")>=0)throw Error('number format error: interior "-" character');const x=p(Math.pow(S,8));let C=m;for(let R=0;R<D.length;R+=8){var _=Math.min(8,D.length-R);const j=parseInt(D.substring(R,R+_),S);_<8?(_=p(Math.pow(S,_)),C=C.j(_).add(p(j))):(C=C.j(x),C=C.add(p(j)))}return C}var m=d(0),f=d(1),v=d(16777216);a=s.prototype,a.m=function(){if(y(this))return-A(this).m();let D=0,S=1;for(let x=0;x<this.g.length;x++){const C=this.i(x);D+=(C>=0?C:4294967296+C)*S,S*=4294967296}return D},a.toString=function(D){if(D=D||10,D<2||36<D)throw Error("radix out of range: "+D);if(P(this))return"0";if(y(this))return"-"+A(this).toString(D);const S=p(Math.pow(D,6));var x=this;let C="";for(;;){const _=w(x,S).g;x=V(x,_.j(S));let R=((x.g.length>0?x.g[0]:x.h)>>>0).toString(D);if(x=_,P(x))return R+C;for(;R.length<6;)R="0"+R;C=R+C}},a.i=function(D){return D<0?0:D<this.g.length?this.g[D]:this.h};function P(D){if(D.h!=0)return!1;for(let S=0;S<D.g.length;S++)if(D.g[S]!=0)return!1;return!0}function y(D){return D.h==-1}a.l=function(D){return D=V(this,D),y(D)?-1:P(D)?0:1};function A(D){const S=D.g.length,x=[];for(let C=0;C<S;C++)x[C]=~D.g[C];return new s(x,~D.h).add(f)}a.abs=function(){return y(this)?A(this):this},a.add=function(D){const S=Math.max(this.g.length,D.g.length),x=[];let C=0;for(let _=0;_<=S;_++){let R=C+(this.i(_)&65535)+(D.i(_)&65535),j=(R>>>16)+(this.i(_)>>>16)+(D.i(_)>>>16);C=j>>>16,R&=65535,j&=65535,x[_]=j<<16|R}return new s(x,x[x.length-1]&-2147483648?-1:0)};function V(D,S){return D.add(A(S))}a.j=function(D){if(P(this)||P(D))return m;if(y(this))return y(D)?A(this).j(A(D)):A(A(this).j(D));if(y(D))return A(this.j(A(D)));if(this.l(v)<0&&D.l(v)<0)return p(this.m()*D.m());const S=this.g.length+D.g.length,x=[];for(var C=0;C<2*S;C++)x[C]=0;for(C=0;C<this.g.length;C++)for(let _=0;_<D.g.length;_++){const R=this.i(C)>>>16,j=this.i(C)&65535,W=D.i(_)>>>16,H=D.i(_)&65535;x[2*C+2*_]+=j*H,I(x,2*C+2*_),x[2*C+2*_+1]+=R*H,I(x,2*C+2*_+1),x[2*C+2*_+1]+=j*W,I(x,2*C+2*_+1),x[2*C+2*_+2]+=R*W,I(x,2*C+2*_+2)}for(D=0;D<S;D++)x[D]=x[2*D+1]<<16|x[2*D];for(D=S;D<2*S;D++)x[D]=0;return new s(x,0)};function I(D,S){for(;(D[S]&65535)!=D[S];)D[S+1]+=D[S]>>>16,D[S]&=65535,S++}function E(D,S){this.g=D,this.h=S}function w(D,S){if(P(S))throw Error("division by zero");if(P(D))return new E(m,m);if(y(D))return S=w(A(D),S),new E(A(S.g),A(S.h));if(y(S))return S=w(D,A(S)),new E(A(S.g),S.h);if(D.g.length>30){if(y(D)||y(S))throw Error("slowDivide_ only works with positive integers.");for(var x=f,C=S;C.l(D)<=0;)x=k(x),C=k(C);var _=U(x,1),R=U(C,1);for(C=U(C,2),x=U(x,2);!P(C);){var j=R.add(C);j.l(D)<=0&&(_=_.add(x),R=j),C=U(C,1),x=U(x,1)}return S=V(D,_.j(S)),new E(_,S)}for(_=m;D.l(S)>=0;){for(x=Math.max(1,Math.floor(D.m()/S.m())),C=Math.ceil(Math.log(x)/Math.LN2),C=C<=48?1:Math.pow(2,C-48),R=p(x),j=R.j(S);y(j)||j.l(D)>0;)x-=C,R=p(x),j=R.j(S);P(R)&&(R=f),_=_.add(R),D=V(D,j)}return new E(_,D)}a.B=function(D){return w(this,D).h},a.and=function(D){const S=Math.max(this.g.length,D.g.length),x=[];for(let C=0;C<S;C++)x[C]=this.i(C)&D.i(C);return new s(x,this.h&D.h)},a.or=function(D){const S=Math.max(this.g.length,D.g.length),x=[];for(let C=0;C<S;C++)x[C]=this.i(C)|D.i(C);return new s(x,this.h|D.h)},a.xor=function(D){const S=Math.max(this.g.length,D.g.length),x=[];for(let C=0;C<S;C++)x[C]=this.i(C)^D.i(C);return new s(x,this.h^D.h)};function k(D){const S=D.g.length+1,x=[];for(let C=0;C<S;C++)x[C]=D.i(C)<<1|D.i(C-1)>>>31;return new s(x,D.h)}function U(D,S){const x=S>>5;S%=32;const C=D.g.length-x,_=[];for(let R=0;R<C;R++)_[R]=S>0?D.i(R+x)>>>S|D.i(R+x+1)<<32-S:D.i(R+x);return new s(_,D.h)}r.prototype.digest=r.prototype.A,r.prototype.reset=r.prototype.u,r.prototype.update=r.prototype.v,Th=r,s.prototype.add=s.prototype.add,s.prototype.multiply=s.prototype.j,s.prototype.modulo=s.prototype.B,s.prototype.compare=s.prototype.l,s.prototype.toNumber=s.prototype.m,s.prototype.toString=s.prototype.toString,s.prototype.getBits=s.prototype.i,s.fromNumber=p,s.fromString=h,Er=s}).apply(typeof od<"u"?od:typeof self<"u"?self:typeof window<"u"?window:{});var yi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};var Vh,Do,wh,Ei,Ss,Ih,Fh,Bh;(function(){var a,e=Object.defineProperty;function t(l){l=[typeof globalThis=="object"&&globalThis,l,typeof window=="object"&&window,typeof self=="object"&&self,typeof yi=="object"&&yi];for(var u=0;u<l.length;++u){var g=l[u];if(g&&g.Math==Math)return g}throw Error("Cannot find global object")}var r=t(this);function o(l,u){if(u)e:{var g=r;l=l.split(".");for(var b=0;b<l.length-1;b++){var F=l[b];if(!(F in g))break e;g=g[F]}l=l[l.length-1],b=g[l],u=u(b),u!=b&&u!=null&&e(g,l,{configurable:!0,writable:!0,value:u})}}o("Symbol.dispose",function(l){return l||Symbol("Symbol.dispose")}),o("Array.prototype.values",function(l){return l||function(){return this[Symbol.iterator]()}}),o("Object.entries",function(l){return l||function(u){var g=[],b;for(b in u)Object.prototype.hasOwnProperty.call(u,b)&&g.push([b,u[b]]);return g}});var i=i||{},s=this||self;function c(l){var u=typeof l;return u=="object"&&l!=null||u=="function"}function d(l,u,g){return l.call.apply(l.bind,arguments)}function p(l,u,g){return p=d,p.apply(null,arguments)}function h(l,u){var g=Array.prototype.slice.call(arguments,1);return function(){var b=g.slice();return b.push.apply(b,arguments),l.apply(this,b)}}function m(l,u){function g(){}g.prototype=u.prototype,l.Z=u.prototype,l.prototype=new g,l.prototype.constructor=l,l.Ob=function(b,F,B){for(var z=Array(arguments.length-2),ae=2;ae<arguments.length;ae++)z[ae-2]=arguments[ae];return u.prototype[F].apply(b,z)}}var f=typeof AsyncContext<"u"&&typeof AsyncContext.Snapshot=="function"?l=>l&&AsyncContext.Snapshot.wrap(l):l=>l;function v(l){const u=l.length;if(u>0){const g=Array(u);for(let b=0;b<u;b++)g[b]=l[b];return g}return[]}function P(l,u){for(let b=1;b<arguments.length;b++){const F=arguments[b];var g=typeof F;if(g=g!="object"?g:F?Array.isArray(F)?"array":g:"null",g=="array"||g=="object"&&typeof F.length=="number"){g=l.length||0;const B=F.length||0;l.length=g+B;for(let z=0;z<B;z++)l[g+z]=F[z]}else l.push(F)}}class y{constructor(u,g){this.i=u,this.j=g,this.h=0,this.g=null}get(){let u;return this.h>0?(this.h--,u=this.g,this.g=u.next,u.next=null):u=this.i(),u}}function A(l){s.setTimeout(()=>{throw l},0)}function V(){var l=D;let u=null;return l.g&&(u=l.g,l.g=l.g.next,l.g||(l.h=null),u.next=null),u}class I{constructor(){this.h=this.g=null}add(u,g){const b=E.get();b.set(u,g),this.h?this.h.next=b:this.g=b,this.h=b}}var E=new y(()=>new w,l=>l.reset());class w{constructor(){this.next=this.g=this.h=null}set(u,g){this.h=u,this.g=g,this.next=null}reset(){this.next=this.g=this.h=null}}let k,U=!1,D=new I,S=()=>{const l=Promise.resolve(void 0);k=()=>{l.then(x)}};function x(){for(var l;l=V();){try{l.h.call(l.g)}catch(g){A(g)}var u=E;u.j(l),u.h<100&&(u.h++,l.next=u.g,u.g=l)}U=!1}function C(){this.u=this.u,this.C=this.C}C.prototype.u=!1,C.prototype.dispose=function(){this.u||(this.u=!0,this.N())},C.prototype[Symbol.dispose]=function(){this.dispose()},C.prototype.N=function(){if(this.C)for(;this.C.length;)this.C.shift()()};function _(l,u){this.type=l,this.g=this.target=u,this.defaultPrevented=!1}_.prototype.h=function(){this.defaultPrevented=!0};var R=(function(){if(!s.addEventListener||!Object.defineProperty)return!1;var l=!1,u=Object.defineProperty({},"passive",{get:function(){l=!0}});try{const g=()=>{};s.addEventListener("test",g,u),s.removeEventListener("test",g,u)}catch{}return l})();function j(l){return/^[\s\xa0]*$/.test(l)}function W(l,u){_.call(this,l?l.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,l&&this.init(l,u)}m(W,_),W.prototype.init=function(l,u){const g=this.type=l.type,b=l.changedTouches&&l.changedTouches.length?l.changedTouches[0]:null;this.target=l.target||l.srcElement,this.g=u,u=l.relatedTarget,u||(g=="mouseover"?u=l.fromElement:g=="mouseout"&&(u=l.toElement)),this.relatedTarget=u,b?(this.clientX=b.clientX!==void 0?b.clientX:b.pageX,this.clientY=b.clientY!==void 0?b.clientY:b.pageY,this.screenX=b.screenX||0,this.screenY=b.screenY||0):(this.clientX=l.clientX!==void 0?l.clientX:l.pageX,this.clientY=l.clientY!==void 0?l.clientY:l.pageY,this.screenX=l.screenX||0,this.screenY=l.screenY||0),this.button=l.button,this.key=l.key||"",this.ctrlKey=l.ctrlKey,this.altKey=l.altKey,this.shiftKey=l.shiftKey,this.metaKey=l.metaKey,this.pointerId=l.pointerId||0,this.pointerType=l.pointerType,this.state=l.state,this.i=l,l.defaultPrevented&&W.Z.h.call(this)},W.prototype.h=function(){W.Z.h.call(this);const l=this.i;l.preventDefault?l.preventDefault():l.returnValue=!1};var H="closure_listenable_"+(Math.random()*1e6|0),ee=0;function ne(l,u,g,b,F){this.listener=l,this.proxy=null,this.src=u,this.type=g,this.capture=!!b,this.ha=F,this.key=++ee,this.da=this.fa=!1}function ye(l){l.da=!0,l.listener=null,l.proxy=null,l.src=null,l.ha=null}function Ce(l,u,g){for(const b in l)u.call(g,l[b],b,l)}function vt(l,u){for(const g in l)u.call(void 0,l[g],g,l)}function Oe(l){const u={};for(const g in l)u[g]=l[g];return u}const at="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function ct(l,u){let g,b;for(let F=1;F<arguments.length;F++){b=arguments[F];for(g in b)l[g]=b[g];for(let B=0;B<at.length;B++)g=at[B],Object.prototype.hasOwnProperty.call(b,g)&&(l[g]=b[g])}}function Te(l){this.src=l,this.g={},this.h=0}Te.prototype.add=function(l,u,g,b,F){const B=l.toString();l=this.g[B],l||(l=this.g[B]=[],this.h++);const z=kt(l,u,b,F);return z>-1?(u=l[z],g||(u.fa=!1)):(u=new ne(u,this.src,B,!!b,F),u.fa=g,l.push(u)),u};function ot(l,u){const g=u.type;if(g in l.g){var b=l.g[g],F=Array.prototype.indexOf.call(b,u,void 0),B;(B=F>=0)&&Array.prototype.splice.call(b,F,1),B&&(ye(u),l.g[g].length==0&&(delete l.g[g],l.h--))}}function kt(l,u,g,b){for(let F=0;F<l.length;++F){const B=l[F];if(!B.da&&B.listener==u&&B.capture==!!g&&B.ha==b)return F}return-1}var pr="closure_lm_"+(Math.random()*1e6|0),hr={};function Or(l,u,g,b,F){if(Array.isArray(u)){for(let B=0;B<u.length;B++)Or(l,u[B],g,b,F);return null}return g=be(g),l&&l[H]?l.J(u,g,c(b)?!!b.capture:!1,F):it(l,u,g,!1,b,F)}function it(l,u,g,b,F,B){if(!u)throw Error("Invalid event type");const z=c(F)?!!F.capture:!!F;let ae=oe(l);if(ae||(l[pr]=ae=new Te(l)),g=ae.add(u,g,b,z,B),g.proxy)return g;if(b=X(),g.proxy=b,b.src=l,b.listener=g,l.addEventListener)R||(F=z),F===void 0&&(F=!1),l.addEventListener(u.toString(),b,F);else if(l.attachEvent)l.attachEvent(G(u.toString()),b);else if(l.addListener&&l.removeListener)l.addListener(b);else throw Error("addEventListener and attachEvent are unavailable.");return g}function X(){function l(g){return u.call(l.src,l.listener,g)}const u=K;return l}function q(l,u,g,b,F){if(Array.isArray(u))for(var B=0;B<u.length;B++)q(l,u[B],g,b,F);else b=c(b)?!!b.capture:!!b,g=be(g),l&&l[H]?(l=l.i,B=String(u).toString(),B in l.g&&(u=l.g[B],g=kt(u,g,b,F),g>-1&&(ye(u[g]),Array.prototype.splice.call(u,g,1),u.length==0&&(delete l.g[B],l.h--)))):l&&(l=oe(l))&&(u=l.g[u.toString()],l=-1,u&&(l=kt(u,g,b,F)),(g=l>-1?u[l]:null)&&pe(g))}function pe(l){if(typeof l!="number"&&l&&!l.da){var u=l.src;if(u&&u[H])ot(u.i,l);else{var g=l.type,b=l.proxy;u.removeEventListener?u.removeEventListener(g,b,l.capture):u.detachEvent?u.detachEvent(G(g),b):u.addListener&&u.removeListener&&u.removeListener(b),(g=oe(u))?(ot(g,l),g.h==0&&(g.src=null,u[pr]=null)):ye(l)}}}function G(l){return l in hr?hr[l]:hr[l]="on"+l}function K(l,u){if(l.da)l=!0;else{u=new W(u,this);const g=l.listener,b=l.ha||l.src;l.fa&&pe(l),l=g.call(b,u)}return l}function oe(l){return l=l[pr],l instanceof Te?l:null}var ue="__closure_events_fn_"+(Math.random()*1e9>>>0);function be(l){return typeof l=="function"?l:(l[ue]||(l[ue]=function(u){return l.handleEvent(u)}),l[ue])}function Q(){C.call(this),this.i=new Te(this),this.M=this,this.G=null}m(Q,C),Q.prototype[H]=!0,Q.prototype.removeEventListener=function(l,u,g,b){q(this,l,u,g,b)};function Z(l,u){var g,b=l.G;if(b)for(g=[];b;b=b.G)g.push(b);if(l=l.M,b=u.type||u,typeof u=="string")u=new _(u,l);else if(u instanceof _)u.target=u.target||l;else{var F=u;u=new _(b,l),ct(u,F)}F=!0;let B,z;if(g)for(z=g.length-1;z>=0;z--)B=u.g=g[z],F=De(B,b,!0,u)&&F;if(B=u.g=l,F=De(B,b,!0,u)&&F,F=De(B,b,!1,u)&&F,g)for(z=0;z<g.length;z++)B=u.g=g[z],F=De(B,b,!1,u)&&F}Q.prototype.N=function(){if(Q.Z.N.call(this),this.i){var l=this.i;for(const u in l.g){const g=l.g[u];for(let b=0;b<g.length;b++)ye(g[b]);delete l.g[u],l.h--}}this.G=null},Q.prototype.J=function(l,u,g,b){return this.i.add(String(l),u,!1,g,b)},Q.prototype.K=function(l,u,g,b){return this.i.add(String(l),u,!0,g,b)};function De(l,u,g,b){if(u=l.i.g[String(u)],!u)return!0;u=u.concat();let F=!0;for(let B=0;B<u.length;++B){const z=u[B];if(z&&!z.da&&z.capture==g){const ae=z.listener,Ge=z.ha||z.src;z.fa&&ot(l.i,z),F=ae.call(Ge,b)!==!1&&F}}return F&&!b.defaultPrevented}function nt(l,u){if(typeof l!="function")if(l&&typeof l.handleEvent=="function")l=p(l.handleEvent,l);else throw Error("Invalid listener argument");return Number(u)>2147483647?-1:s.setTimeout(l,u||0)}function Rt(l){l.g=nt(()=>{l.g=null,l.i&&(l.i=!1,Rt(l))},l.l);const u=l.h;l.h=null,l.m.apply(null,u)}class ya extends C{constructor(u,g){super(),this.m=u,this.l=g,this.h=null,this.i=!1,this.g=null}j(u){this.h=arguments,this.g?this.i=!0:Rt(this)}N(){super.N(),this.g&&(s.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function ar(l){C.call(this),this.h=l,this.g={}}m(ar,C);var to=[];function ro(l){Ce(l.g,function(u,g){this.g.hasOwnProperty(g)&&pe(u)},l),l.g={}}ar.prototype.N=function(){ar.Z.N.call(this),ro(this)},ar.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented")};var va=s.JSON.stringify,ii=s.JSON.parse,Dn=class{stringify(l){return s.JSON.stringify(l,void 0)}parse(l){return s.JSON.parse(l,void 0)}};function Sa(){}function zt(){}var Lr={OPEN:"a",hb:"b",ERROR:"c",tb:"d"};function xa(){_.call(this,"d")}m(xa,_);function ba(){_.call(this,"c")}m(ba,_);var Nt={},Hr=null;function Xr(){return Hr=Hr||new Q}Nt.Ia="serverreachability";function ao(l){_.call(this,Nt.Ia,l)}m(ao,_);function Zr(l){const u=Xr();Z(u,new ao(u))}Nt.STAT_EVENT="statevent";function oo(l,u){_.call(this,Nt.STAT_EVENT,l),this.stat=u}m(oo,_);function st(l){const u=Xr();Z(u,new oo(u,l))}Nt.Ja="timingevent";function zl(l,u){_.call(this,Nt.Ja,l),this.size=u}m(zl,_);function io(l,u){if(typeof l!="function")throw Error("Fn must not be null and must be a function");return s.setTimeout(function(){l()},u)}function no(){this.g=!0}no.prototype.ua=function(){this.g=!1};function um(l,u,g,b,F,B){l.info(function(){if(l.g)if(B){var z="",ae=B.split("&");for(let me=0;me<ae.length;me++){var Ge=ae[me].split("=");if(Ge.length>1){const Le=Ge[0];Ge=Ge[1];const Lt=Le.split("_");z=Lt.length>=2&&Lt[1]=="type"?z+(Le+"="+Ge+"&"):z+(Le+"=redacted&")}}}else z=null;else z=B;return"XMLHTTP REQ ("+b+") [attempt "+F+"]: "+u+`
|
|
106
|
+
`+g+`
|
|
107
|
+
`+z})}function mm(l,u,g,b,F,B,z){l.info(function(){return"XMLHTTP RESP ("+b+") [ attempt "+F+"]: "+u+`
|
|
108
|
+
`+g+`
|
|
109
|
+
`+B+" "+z})}function Pa(l,u,g,b){l.info(function(){return"XMLHTTP TEXT ("+u+"): "+fm(l,g)+(b?" "+b:"")})}function gm(l,u){l.info(function(){return"TIMEOUT: "+u})}no.prototype.info=function(){};function fm(l,u){if(!l.g)return u;if(!u)return null;try{const B=JSON.parse(u);if(B){for(l=0;l<B.length;l++)if(Array.isArray(B[l])){var g=B[l];if(!(g.length<2)){var b=g[1];if(Array.isArray(b)&&!(b.length<1)){var F=b[0];if(F!="noop"&&F!="stop"&&F!="close")for(let z=1;z<b.length;z++)b[z]=""}}}}return va(B)}catch{return u}}var ni={NO_ERROR:0,cb:1,qb:2,pb:3,kb:4,ob:5,rb:6,Ga:7,TIMEOUT:8,ub:9},Ol={ib:"complete",Fb:"success",ERROR:"error",Ga:"abort",xb:"ready",yb:"readystatechange",TIMEOUT:"timeout",sb:"incrementaldata",wb:"progress",lb:"downloadprogress",Nb:"uploadprogress"},Ll;function An(){}m(An,Sa),An.prototype.g=function(){return new XMLHttpRequest},Ll=new An;function so(l){return encodeURIComponent(String(l))}function ym(l){var u=1;l=l.split(":");const g=[];for(;u>0&&l.length;)g.push(l.shift()),u--;return l.length&&g.push(l.join(":")),g}function ur(l,u,g,b){this.j=l,this.i=u,this.l=g,this.S=b||1,this.V=new ar(this),this.H=45e3,this.J=null,this.o=!1,this.u=this.B=this.A=this.M=this.F=this.T=this.D=null,this.G=[],this.g=null,this.C=0,this.m=this.v=null,this.X=-1,this.K=!1,this.P=0,this.O=null,this.W=this.L=this.U=this.R=!1,this.h=new Hl}function Hl(){this.i=null,this.g="",this.h=!1}var Xl={},jn={};function En(l,u,g){l.M=1,l.A=li(Ot(u)),l.u=g,l.R=!0,Zl(l,null)}function Zl(l,u){l.F=Date.now(),si(l),l.B=Ot(l.A);var g=l.B,b=l.S;Array.isArray(b)||(b=[String(b)]),nc(g.i,"t",b),l.C=0,g=l.j.L,l.h=new Hl,l.g=Ac(l.j,g?u:null,!l.u),l.P>0&&(l.O=new ya(p(l.Y,l,l.g),l.P)),u=l.V,g=l.g,b=l.ba;var F="readystatechange";Array.isArray(F)||(F&&(to[0]=F.toString()),F=to);for(let B=0;B<F.length;B++){const z=Or(g,F[B],b||u.handleEvent,!1,u.h||u);if(!z)break;u.g[z.key]=z}u=l.J?Oe(l.J):{},l.u?(l.v||(l.v="POST"),u["Content-Type"]="application/x-www-form-urlencoded",l.g.ea(l.B,l.v,l.u,u)):(l.v="GET",l.g.ea(l.B,l.v,null,u)),Zr(),um(l.i,l.v,l.B,l.l,l.S,l.u)}ur.prototype.ba=function(l){l=l.target;const u=this.O;u&&fr(l)==3?u.j():this.Y(l)},ur.prototype.Y=function(l){try{if(l==this.g)e:{const ae=fr(this.g),Ge=this.g.ya(),me=this.g.ca();if(!(ae<3)&&(ae!=3||this.g&&(this.h.h||this.g.la()||uc(this.g)))){this.K||ae!=4||Ge==7||(Ge==8||me<=0?Zr(3):Zr(2)),_n(this);var u=this.g.ca();this.X=u;var g=vm(this);if(this.o=u==200,mm(this.i,this.v,this.B,this.l,this.S,ae,u),this.o){if(this.U&&!this.L){t:{if(this.g){var b,F=this.g;if((b=F.g?F.g.getResponseHeader("X-HTTP-Initial-Response"):null)&&!j(b)){var B=b;break t}}B=null}if(l=B)Pa(this.i,this.l,l,"Initial handshake response via X-HTTP-Initial-Response"),this.L=!0,Cn(this,l);else{this.o=!1,this.m=3,st(12),qr(this),lo(this);break e}}if(this.R){l=!0;let Le;for(;!this.K&&this.C<g.length;)if(Le=Sm(this,g),Le==jn){ae==4&&(this.m=4,st(14),l=!1),Pa(this.i,this.l,null,"[Incomplete Response]");break}else if(Le==Xl){this.m=4,st(15),Pa(this.i,this.l,g,"[Invalid Chunk]"),l=!1;break}else Pa(this.i,this.l,Le,null),Cn(this,Le);if(ql(this)&&this.C!=0&&(this.h.g=this.h.g.slice(this.C),this.C=0),ae!=4||g.length!=0||this.h.h||(this.m=1,st(16),l=!1),this.o=this.o&&l,!l)Pa(this.i,this.l,g,"[Invalid Chunked Response]"),qr(this),lo(this);else if(g.length>0&&!this.W){this.W=!0;var z=this.j;z.g==this&&z.aa&&!z.P&&(z.j.info("Great, no buffering proxy detected. Bytes received: "+g.length),Bn(z),z.P=!0,st(11))}}else Pa(this.i,this.l,g,null),Cn(this,g);ae==4&&qr(this),this.o&&!this.K&&(ae==4?xc(this.j,this):(this.o=!1,si(this)))}else wm(this.g),u==400&&g.indexOf("Unknown SID")>0?(this.m=3,st(12)):(this.m=0,st(13)),qr(this),lo(this)}}}catch{}};function vm(l){if(!ql(l))return l.g.la();const u=uc(l.g);if(u==="")return"";let g="";const b=u.length,F=fr(l.g)==4;if(!l.h.i){if(typeof TextDecoder>"u")return qr(l),lo(l),"";l.h.i=new s.TextDecoder}for(let B=0;B<b;B++)l.h.h=!0,g+=l.h.i.decode(u[B],{stream:!(F&&B==b-1)});return u.length=0,l.h.g+=g,l.C=0,l.h.g}function ql(l){return l.g?l.v=="GET"&&l.M!=2&&l.j.Aa:!1}function Sm(l,u){var g=l.C,b=u.indexOf(`
|
|
110
|
+
`,g);return b==-1?jn:(g=Number(u.substring(g,b)),isNaN(g)?Xl:(b+=1,b+g>u.length?jn:(u=u.slice(b,b+g),l.C=b+g,u)))}ur.prototype.cancel=function(){this.K=!0,qr(this)};function si(l){l.T=Date.now()+l.H,$l(l,l.H)}function $l(l,u){if(l.D!=null)throw Error("WatchDog timer not null");l.D=io(p(l.aa,l),u)}function _n(l){l.D&&(s.clearTimeout(l.D),l.D=null)}ur.prototype.aa=function(){this.D=null;const l=Date.now();l-this.T>=0?(gm(this.i,this.B),this.M!=2&&(Zr(),st(17)),qr(this),this.m=2,lo(this)):$l(this,this.T-l)};function lo(l){l.j.I==0||l.K||xc(l.j,l)}function qr(l){_n(l);var u=l.O;u&&typeof u.dispose=="function"&&u.dispose(),l.O=null,ro(l.V),l.g&&(u=l.g,l.g=null,u.abort(),u.dispose())}function Cn(l,u){try{var g=l.j;if(g.I!=0&&(g.g==l||kn(g.h,l))){if(!l.L&&kn(g.h,l)&&g.I==3){try{var b=g.Ba.g.parse(u)}catch{b=null}if(Array.isArray(b)&&b.length==3){var F=b;if(F[0]==0){e:if(!g.v){if(g.g)if(g.g.F+3e3<l.F)ui(g),pi(g);else break e;Fn(g),st(18)}}else g.xa=F[1],0<g.xa-g.K&&F[2]<37500&&g.F&&g.A==0&&!g.C&&(g.C=io(p(g.Va,g),6e3));Yl(g.h)<=1&&g.ta&&(g.ta=void 0)}else Qr(g,11)}else if((l.L||g.g==l)&&ui(g),!j(u))for(F=g.Ba.g.parse(u),u=0;u<F.length;u++){let me=F[u];const Le=me[0];if(!(Le<=g.K))if(g.K=Le,me=me[1],g.I==2)if(me[0]=="c"){g.M=me[1],g.ba=me[2];const Lt=me[3];Lt!=null&&(g.ka=Lt,g.j.info("VER="+g.ka));const Kr=me[4];Kr!=null&&(g.za=Kr,g.j.info("SVER="+g.za));const yr=me[5];yr!=null&&typeof yr=="number"&&yr>0&&(b=1.5*yr,g.O=b,g.j.info("backChannelRequestTimeoutMs_="+b)),b=g;const vr=l.g;if(vr){const gi=vr.g?vr.g.getResponseHeader("X-Client-Wire-Protocol"):null;if(gi){var B=b.h;B.g||gi.indexOf("spdy")==-1&&gi.indexOf("quic")==-1&&gi.indexOf("h2")==-1||(B.j=B.l,B.g=new Set,B.h&&(Rn(B,B.h),B.h=null))}if(b.G){const Un=vr.g?vr.g.getResponseHeader("X-HTTP-Session-Id"):null;Un&&(b.wa=Un,Se(b.J,b.G,Un))}}g.I=3,g.l&&g.l.ra(),g.aa&&(g.T=Date.now()-l.F,g.j.info("Handshake RTT: "+g.T+"ms")),b=g;var z=l;if(b.na=Dc(b,b.L?b.ba:null,b.W),z.L){Jl(b.h,z);var ae=z,Ge=b.O;Ge&&(ae.H=Ge),ae.D&&(_n(ae),si(ae)),b.g=z}else vc(b);g.i.length>0&&hi(g)}else me[0]!="stop"&&me[0]!="close"||Qr(g,7);else g.I==3&&(me[0]=="stop"||me[0]=="close"?me[0]=="stop"?Qr(g,7):In(g):me[0]!="noop"&&g.l&&g.l.qa(me),g.A=0)}}Zr(4)}catch{}}var xm=class{constructor(l,u){this.g=l,this.map=u}};function Ql(l){this.l=l||10,s.PerformanceNavigationTiming?(l=s.performance.getEntriesByType("navigation"),l=l.length>0&&(l[0].nextHopProtocol=="hq"||l[0].nextHopProtocol=="h2")):l=!!(s.chrome&&s.chrome.loadTimes&&s.chrome.loadTimes()&&s.chrome.loadTimes().wasFetchedViaSpdy),this.j=l?this.l:1,this.g=null,this.j>1&&(this.g=new Set),this.h=null,this.i=[]}function Kl(l){return l.h?!0:l.g?l.g.size>=l.j:!1}function Yl(l){return l.h?1:l.g?l.g.size:0}function kn(l,u){return l.h?l.h==u:l.g?l.g.has(u):!1}function Rn(l,u){l.g?l.g.add(u):l.h=u}function Jl(l,u){l.h&&l.h==u?l.h=null:l.g&&l.g.has(u)&&l.g.delete(u)}Ql.prototype.cancel=function(){if(this.i=ec(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&this.g.size!==0){for(const l of this.g.values())l.cancel();this.g.clear()}};function ec(l){if(l.h!=null)return l.i.concat(l.h.G);if(l.g!=null&&l.g.size!==0){let u=l.i;for(const g of l.g.values())u=u.concat(g.G);return u}return v(l.i)}var tc=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");function bm(l,u){if(l){l=l.split("&");for(let g=0;g<l.length;g++){const b=l[g].indexOf("=");let F,B=null;b>=0?(F=l[g].substring(0,b),B=l[g].substring(b+1)):F=l[g],u(F,B?decodeURIComponent(B.replace(/\+/g," ")):"")}}}function mr(l){this.g=this.o=this.j="",this.u=null,this.m=this.h="",this.l=!1;let u;l instanceof mr?(this.l=l.l,co(this,l.j),this.o=l.o,this.g=l.g,po(this,l.u),this.h=l.h,Tn(this,sc(l.i)),this.m=l.m):l&&(u=String(l).match(tc))?(this.l=!1,co(this,u[1]||"",!0),this.o=ho(u[2]||""),this.g=ho(u[3]||"",!0),po(this,u[4]),this.h=ho(u[5]||"",!0),Tn(this,u[6]||"",!0),this.m=ho(u[7]||"")):(this.l=!1,this.i=new mo(null,this.l))}mr.prototype.toString=function(){const l=[];var u=this.j;u&&l.push(uo(u,rc,!0),":");var g=this.g;return(g||u=="file")&&(l.push("//"),(u=this.o)&&l.push(uo(u,rc,!0),"@"),l.push(so(g).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),g=this.u,g!=null&&l.push(":",String(g))),(g=this.h)&&(this.g&&g.charAt(0)!="/"&&l.push("/"),l.push(uo(g,g.charAt(0)=="/"?Am:Dm,!0))),(g=this.i.toString())&&l.push("?",g),(g=this.m)&&l.push("#",uo(g,Em)),l.join("")},mr.prototype.resolve=function(l){const u=Ot(this);let g=!!l.j;g?co(u,l.j):g=!!l.o,g?u.o=l.o:g=!!l.g,g?u.g=l.g:g=l.u!=null;var b=l.h;if(g)po(u,l.u);else if(g=!!l.h){if(b.charAt(0)!="/")if(this.g&&!this.h)b="/"+b;else{var F=u.h.lastIndexOf("/");F!=-1&&(b=u.h.slice(0,F+1)+b)}if(F=b,F==".."||F==".")b="";else if(F.indexOf("./")!=-1||F.indexOf("/.")!=-1){b=F.lastIndexOf("/",0)==0,F=F.split("/");const B=[];for(let z=0;z<F.length;){const ae=F[z++];ae=="."?b&&z==F.length&&B.push(""):ae==".."?((B.length>1||B.length==1&&B[0]!="")&&B.pop(),b&&z==F.length&&B.push("")):(B.push(ae),b=!0)}b=B.join("/")}else b=F}return g?u.h=b:g=l.i.toString()!=="",g?Tn(u,sc(l.i)):g=!!l.m,g&&(u.m=l.m),u};function Ot(l){return new mr(l)}function co(l,u,g){l.j=g?ho(u,!0):u,l.j&&(l.j=l.j.replace(/:$/,""))}function po(l,u){if(u){if(u=Number(u),isNaN(u)||u<0)throw Error("Bad port number "+u);l.u=u}else l.u=null}function Tn(l,u,g){u instanceof mo?(l.i=u,_m(l.i,l.l)):(g||(u=uo(u,jm)),l.i=new mo(u,l.l))}function Se(l,u,g){l.i.set(u,g)}function li(l){return Se(l,"zx",Math.floor(Math.random()*2147483648).toString(36)+Math.abs(Math.floor(Math.random()*2147483648)^Date.now()).toString(36)),l}function ho(l,u){return l?u?decodeURI(l.replace(/%25/g,"%2525")):decodeURIComponent(l):""}function uo(l,u,g){return typeof l=="string"?(l=encodeURI(l).replace(u,Pm),g&&(l=l.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),l):null}function Pm(l){return l=l.charCodeAt(0),"%"+(l>>4&15).toString(16)+(l&15).toString(16)}var rc=/[#\/\?@]/g,Dm=/[#\?:]/g,Am=/[#\?]/g,jm=/[#\?@]/g,Em=/#/g;function mo(l,u){this.h=this.g=null,this.i=l||null,this.j=!!u}function $r(l){l.g||(l.g=new Map,l.h=0,l.i&&bm(l.i,function(u,g){l.add(decodeURIComponent(u.replace(/\+/g," ")),g)}))}a=mo.prototype,a.add=function(l,u){$r(this),this.i=null,l=Da(this,l);let g=this.g.get(l);return g||this.g.set(l,g=[]),g.push(u),this.h+=1,this};function ac(l,u){$r(l),u=Da(l,u),l.g.has(u)&&(l.i=null,l.h-=l.g.get(u).length,l.g.delete(u))}function oc(l,u){return $r(l),u=Da(l,u),l.g.has(u)}a.forEach=function(l,u){$r(this),this.g.forEach(function(g,b){g.forEach(function(F){l.call(u,F,b,this)},this)},this)};function ic(l,u){$r(l);let g=[];if(typeof u=="string")oc(l,u)&&(g=g.concat(l.g.get(Da(l,u))));else for(l=Array.from(l.g.values()),u=0;u<l.length;u++)g=g.concat(l[u]);return g}a.set=function(l,u){return $r(this),this.i=null,l=Da(this,l),oc(this,l)&&(this.h-=this.g.get(l).length),this.g.set(l,[u]),this.h+=1,this},a.get=function(l,u){return l?(l=ic(this,l),l.length>0?String(l[0]):u):u};function nc(l,u,g){ac(l,u),g.length>0&&(l.i=null,l.g.set(Da(l,u),v(g)),l.h+=g.length)}a.toString=function(){if(this.i)return this.i;if(!this.g)return"";const l=[],u=Array.from(this.g.keys());for(let b=0;b<u.length;b++){var g=u[b];const F=so(g);g=ic(this,g);for(let B=0;B<g.length;B++){let z=F;g[B]!==""&&(z+="="+so(g[B])),l.push(z)}}return this.i=l.join("&")};function sc(l){const u=new mo;return u.i=l.i,l.g&&(u.g=new Map(l.g),u.h=l.h),u}function Da(l,u){return u=String(u),l.j&&(u=u.toLowerCase()),u}function _m(l,u){u&&!l.j&&($r(l),l.i=null,l.g.forEach(function(g,b){const F=b.toLowerCase();b!=F&&(ac(this,b),nc(this,F,g))},l)),l.j=u}function Cm(l,u){const g=new no;if(s.Image){const b=new Image;b.onload=h(gr,g,"TestLoadImage: loaded",!0,u,b),b.onerror=h(gr,g,"TestLoadImage: error",!1,u,b),b.onabort=h(gr,g,"TestLoadImage: abort",!1,u,b),b.ontimeout=h(gr,g,"TestLoadImage: timeout",!1,u,b),s.setTimeout(function(){b.ontimeout&&b.ontimeout()},1e4),b.src=l}else u(!1)}function km(l,u){const g=new no,b=new AbortController,F=setTimeout(()=>{b.abort(),gr(g,"TestPingServer: timeout",!1,u)},1e4);fetch(l,{signal:b.signal}).then(B=>{clearTimeout(F),B.ok?gr(g,"TestPingServer: ok",!0,u):gr(g,"TestPingServer: server error",!1,u)}).catch(()=>{clearTimeout(F),gr(g,"TestPingServer: error",!1,u)})}function gr(l,u,g,b,F){try{F&&(F.onload=null,F.onerror=null,F.onabort=null,F.ontimeout=null),b(g)}catch{}}function Rm(){this.g=new Dn}function Vn(l){this.i=l.Sb||null,this.h=l.ab||!1}m(Vn,Sa),Vn.prototype.g=function(){return new ci(this.i,this.h)};function ci(l,u){Q.call(this),this.H=l,this.o=u,this.m=void 0,this.status=this.readyState=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.A=new Headers,this.h=null,this.F="GET",this.D="",this.g=!1,this.B=this.j=this.l=null,this.v=new AbortController}m(ci,Q),a=ci.prototype,a.open=function(l,u){if(this.readyState!=0)throw this.abort(),Error("Error reopening a connection");this.F=l,this.D=u,this.readyState=1,fo(this)},a.send=function(l){if(this.readyState!=1)throw this.abort(),Error("need to call open() first. ");if(this.v.signal.aborted)throw this.abort(),Error("Request was aborted.");this.g=!0;const u={headers:this.A,method:this.F,credentials:this.m,cache:void 0,signal:this.v.signal};l&&(u.body=l),(this.H||s).fetch(new Request(this.D,u)).then(this.Pa.bind(this),this.ga.bind(this))},a.abort=function(){this.response=this.responseText="",this.A=new Headers,this.status=0,this.v.abort(),this.j&&this.j.cancel("Request was aborted.").catch(()=>{}),this.readyState>=1&&this.g&&this.readyState!=4&&(this.g=!1,go(this)),this.readyState=0},a.Pa=function(l){if(this.g&&(this.l=l,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=l.headers,this.readyState=2,fo(this)),this.g&&(this.readyState=3,fo(this),this.g)))if(this.responseType==="arraybuffer")l.arrayBuffer().then(this.Na.bind(this),this.ga.bind(this));else if(typeof s.ReadableStream<"u"&&"body"in l){if(this.j=l.body.getReader(),this.o){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.B=new TextDecoder;lc(this)}else l.text().then(this.Oa.bind(this),this.ga.bind(this))};function lc(l){l.j.read().then(l.Ma.bind(l)).catch(l.ga.bind(l))}a.Ma=function(l){if(this.g){if(this.o&&l.value)this.response.push(l.value);else if(!this.o){var u=l.value?l.value:new Uint8Array(0);(u=this.B.decode(u,{stream:!l.done}))&&(this.response=this.responseText+=u)}l.done?go(this):fo(this),this.readyState==3&&lc(this)}},a.Oa=function(l){this.g&&(this.response=this.responseText=l,go(this))},a.Na=function(l){this.g&&(this.response=l,go(this))},a.ga=function(){this.g&&go(this)};function go(l){l.readyState=4,l.l=null,l.j=null,l.B=null,fo(l)}a.setRequestHeader=function(l,u){this.A.append(l,u)},a.getResponseHeader=function(l){return this.h&&this.h.get(l.toLowerCase())||""},a.getAllResponseHeaders=function(){if(!this.h)return"";const l=[],u=this.h.entries();for(var g=u.next();!g.done;)g=g.value,l.push(g[0]+": "+g[1]),g=u.next();return l.join(`\r
|
|
111
|
+
`)};function fo(l){l.onreadystatechange&&l.onreadystatechange.call(l)}Object.defineProperty(ci.prototype,"withCredentials",{get:function(){return this.m==="include"},set:function(l){this.m=l?"include":"same-origin"}});function cc(l){let u="";return Ce(l,function(g,b){u+=b,u+=":",u+=g,u+=`\r
|
|
112
|
+
`}),u}function wn(l,u,g){e:{for(b in g){var b=!1;break e}b=!0}b||(g=cc(g),typeof l=="string"?g!=null&&so(g):Se(l,u,g))}function ke(l){Q.call(this),this.headers=new Map,this.L=l||null,this.h=!1,this.g=null,this.D="",this.o=0,this.l="",this.j=this.B=this.v=this.A=!1,this.m=null,this.F="",this.H=!1}m(ke,Q);var Tm=/^https?$/i,Vm=["POST","PUT"];a=ke.prototype,a.Fa=function(l){this.H=l},a.ea=function(l,u,g,b){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.D+"; newUri="+l);u=u?u.toUpperCase():"GET",this.D=l,this.l="",this.o=0,this.A=!1,this.h=!0,this.g=this.L?this.L.g():Ll.g(),this.g.onreadystatechange=f(p(this.Ca,this));try{this.B=!0,this.g.open(u,String(l),!0),this.B=!1}catch(B){dc(this,B);return}if(l=g||"",g=new Map(this.headers),b)if(Object.getPrototypeOf(b)===Object.prototype)for(var F in b)g.set(F,b[F]);else if(typeof b.keys=="function"&&typeof b.get=="function")for(const B of b.keys())g.set(B,b.get(B));else throw Error("Unknown input type for opt_headers: "+String(b));b=Array.from(g.keys()).find(B=>B.toLowerCase()=="content-type"),F=s.FormData&&l instanceof s.FormData,!(Array.prototype.indexOf.call(Vm,u,void 0)>=0)||b||F||g.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[B,z]of g)this.g.setRequestHeader(B,z);this.F&&(this.g.responseType=this.F),"withCredentials"in this.g&&this.g.withCredentials!==this.H&&(this.g.withCredentials=this.H);try{this.m&&(clearTimeout(this.m),this.m=null),this.v=!0,this.g.send(l),this.v=!1}catch(B){dc(this,B)}};function dc(l,u){l.h=!1,l.g&&(l.j=!0,l.g.abort(),l.j=!1),l.l=u,l.o=5,pc(l),di(l)}function pc(l){l.A||(l.A=!0,Z(l,"complete"),Z(l,"error"))}a.abort=function(l){this.g&&this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1,this.o=l||7,Z(this,"complete"),Z(this,"abort"),di(this))},a.N=function(){this.g&&(this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1),di(this,!0)),ke.Z.N.call(this)},a.Ca=function(){this.u||(this.B||this.v||this.j?hc(this):this.Xa())},a.Xa=function(){hc(this)};function hc(l){if(l.h&&typeof i<"u"){if(l.v&&fr(l)==4)setTimeout(l.Ca.bind(l),0);else if(Z(l,"readystatechange"),fr(l)==4){l.h=!1;try{const B=l.ca();e:switch(B){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var u=!0;break e;default:u=!1}var g;if(!(g=u)){var b;if(b=B===0){let z=String(l.D).match(tc)[1]||null;!z&&s.self&&s.self.location&&(z=s.self.location.protocol.slice(0,-1)),b=!Tm.test(z?z.toLowerCase():"")}g=b}if(g)Z(l,"complete"),Z(l,"success");else{l.o=6;try{var F=fr(l)>2?l.g.statusText:""}catch{F=""}l.l=F+" ["+l.ca()+"]",pc(l)}}finally{di(l)}}}}function di(l,u){if(l.g){l.m&&(clearTimeout(l.m),l.m=null);const g=l.g;l.g=null,u||Z(l,"ready");try{g.onreadystatechange=null}catch{}}}a.isActive=function(){return!!this.g};function fr(l){return l.g?l.g.readyState:0}a.ca=function(){try{return fr(this)>2?this.g.status:-1}catch{return-1}},a.la=function(){try{return this.g?this.g.responseText:""}catch{return""}},a.La=function(l){if(this.g){var u=this.g.responseText;return l&&u.indexOf(l)==0&&(u=u.substring(l.length)),ii(u)}};function uc(l){try{if(!l.g)return null;if("response"in l.g)return l.g.response;switch(l.F){case"":case"text":return l.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in l.g)return l.g.mozResponseArrayBuffer}return null}catch{return null}}function wm(l){const u={};l=(l.g&&fr(l)>=2&&l.g.getAllResponseHeaders()||"").split(`\r
|
|
113
|
+
`);for(let b=0;b<l.length;b++){if(j(l[b]))continue;var g=ym(l[b]);const F=g[0];if(g=g[1],typeof g!="string")continue;g=g.trim();const B=u[F]||[];u[F]=B,B.push(g)}vt(u,function(b){return b.join(", ")})}a.ya=function(){return this.o},a.Ha=function(){return typeof this.l=="string"?this.l:String(this.l)};function yo(l,u,g){return g&&g.internalChannelParams&&g.internalChannelParams[l]||u}function mc(l){this.za=0,this.i=[],this.j=new no,this.ba=this.na=this.J=this.W=this.g=this.wa=this.G=this.H=this.u=this.U=this.o=null,this.Ya=this.V=0,this.Sa=yo("failFast",!1,l),this.F=this.C=this.v=this.m=this.l=null,this.X=!0,this.xa=this.K=-1,this.Y=this.A=this.D=0,this.Qa=yo("baseRetryDelayMs",5e3,l),this.Za=yo("retryDelaySeedMs",1e4,l),this.Ta=yo("forwardChannelMaxRetries",2,l),this.va=yo("forwardChannelRequestTimeoutMs",2e4,l),this.ma=l&&l.xmlHttpFactory||void 0,this.Ua=l&&l.Rb||void 0,this.Aa=l&&l.useFetchStreams||!1,this.O=void 0,this.L=l&&l.supportsCrossDomainXhr||!1,this.M="",this.h=new Ql(l&&l.concurrentRequestLimit),this.Ba=new Rm,this.S=l&&l.fastHandshake||!1,this.R=l&&l.encodeInitMessageHeaders||!1,this.S&&this.R&&(this.R=!1),this.Ra=l&&l.Pb||!1,l&&l.ua&&this.j.ua(),l&&l.forceLongPolling&&(this.X=!1),this.aa=!this.S&&this.X&&l&&l.detectBufferingProxy||!1,this.ia=void 0,l&&l.longPollingTimeout&&l.longPollingTimeout>0&&(this.ia=l.longPollingTimeout),this.ta=void 0,this.T=0,this.P=!1,this.ja=this.B=null}a=mc.prototype,a.ka=8,a.I=1,a.connect=function(l,u,g,b){st(0),this.W=l,this.H=u||{},g&&b!==void 0&&(this.H.OSID=g,this.H.OAID=b),this.F=this.X,this.J=Dc(this,null,this.W),hi(this)};function In(l){if(gc(l),l.I==3){var u=l.V++,g=Ot(l.J);if(Se(g,"SID",l.M),Se(g,"RID",u),Se(g,"TYPE","terminate"),vo(l,g),u=new ur(l,l.j,u),u.M=2,u.A=li(Ot(g)),g=!1,s.navigator&&s.navigator.sendBeacon)try{g=s.navigator.sendBeacon(u.A.toString(),"")}catch{}!g&&s.Image&&(new Image().src=u.A,g=!0),g||(u.g=Ac(u.j,null),u.g.ea(u.A)),u.F=Date.now(),si(u)}Pc(l)}function pi(l){l.g&&(Bn(l),l.g.cancel(),l.g=null)}function gc(l){pi(l),l.v&&(s.clearTimeout(l.v),l.v=null),ui(l),l.h.cancel(),l.m&&(typeof l.m=="number"&&s.clearTimeout(l.m),l.m=null)}function hi(l){if(!Kl(l.h)&&!l.m){l.m=!0;var u=l.Ea;k||S(),U||(k(),U=!0),D.add(u,l),l.D=0}}function Im(l,u){return Yl(l.h)>=l.h.j-(l.m?1:0)?!1:l.m?(l.i=u.G.concat(l.i),!0):l.I==1||l.I==2||l.D>=(l.Sa?0:l.Ta)?!1:(l.m=io(p(l.Ea,l,u),bc(l,l.D)),l.D++,!0)}a.Ea=function(l){if(this.m)if(this.m=null,this.I==1){if(!l){this.V=Math.floor(Math.random()*1e5),l=this.V++;const F=new ur(this,this.j,l);let B=this.o;if(this.U&&(B?(B=Oe(B),ct(B,this.U)):B=this.U),this.u!==null||this.R||(F.J=B,B=null),this.S)e:{for(var u=0,g=0;g<this.i.length;g++){t:{var b=this.i[g];if("__data__"in b.map&&(b=b.map.__data__,typeof b=="string")){b=b.length;break t}b=void 0}if(b===void 0)break;if(u+=b,u>4096){u=g;break e}if(u===4096||g===this.i.length-1){u=g+1;break e}}u=1e3}else u=1e3;u=yc(this,F,u),g=Ot(this.J),Se(g,"RID",l),Se(g,"CVER",22),this.G&&Se(g,"X-HTTP-Session-Id",this.G),vo(this,g),B&&(this.R?u="headers="+so(cc(B))+"&"+u:this.u&&wn(g,this.u,B)),Rn(this.h,F),this.Ra&&Se(g,"TYPE","init"),this.S?(Se(g,"$req",u),Se(g,"SID","null"),F.U=!0,En(F,g,null)):En(F,g,u),this.I=2}}else this.I==3&&(l?fc(this,l):this.i.length==0||Kl(this.h)||fc(this))};function fc(l,u){var g;u?g=u.l:g=l.V++;const b=Ot(l.J);Se(b,"SID",l.M),Se(b,"RID",g),Se(b,"AID",l.K),vo(l,b),l.u&&l.o&&wn(b,l.u,l.o),g=new ur(l,l.j,g,l.D+1),l.u===null&&(g.J=l.o),u&&(l.i=u.G.concat(l.i)),u=yc(l,g,1e3),g.H=Math.round(l.va*.5)+Math.round(l.va*.5*Math.random()),Rn(l.h,g),En(g,b,u)}function vo(l,u){l.H&&Ce(l.H,function(g,b){Se(u,b,g)}),l.l&&Ce({},function(g,b){Se(u,b,g)})}function yc(l,u,g){g=Math.min(l.i.length,g);const b=l.l?p(l.l.Ka,l.l,l):null;e:{var F=l.i;let ae=-1;for(;;){const Ge=["count="+g];ae==-1?g>0?(ae=F[0].g,Ge.push("ofs="+ae)):ae=0:Ge.push("ofs="+ae);let me=!0;for(let Le=0;Le<g;Le++){var B=F[Le].g;const Lt=F[Le].map;if(B-=ae,B<0)ae=Math.max(0,F[Le].g-100),me=!1;else try{B="req"+B+"_"||"";try{var z=Lt instanceof Map?Lt:Object.entries(Lt);for(const[Kr,yr]of z){let vr=yr;c(yr)&&(vr=va(yr)),Ge.push(B+Kr+"="+encodeURIComponent(vr))}}catch(Kr){throw Ge.push(B+"type="+encodeURIComponent("_badmap")),Kr}}catch{b&&b(Lt)}}if(me){z=Ge.join("&");break e}}z=void 0}return l=l.i.splice(0,g),u.G=l,z}function vc(l){if(!l.g&&!l.v){l.Y=1;var u=l.Da;k||S(),U||(k(),U=!0),D.add(u,l),l.A=0}}function Fn(l){return l.g||l.v||l.A>=3?!1:(l.Y++,l.v=io(p(l.Da,l),bc(l,l.A)),l.A++,!0)}a.Da=function(){if(this.v=null,Sc(this),this.aa&&!(this.P||this.g==null||this.T<=0)){var l=4*this.T;this.j.info("BP detection timer enabled: "+l),this.B=io(p(this.Wa,this),l)}},a.Wa=function(){this.B&&(this.B=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.F=!1,this.P=!0,st(10),pi(this),Sc(this))};function Bn(l){l.B!=null&&(s.clearTimeout(l.B),l.B=null)}function Sc(l){l.g=new ur(l,l.j,"rpc",l.Y),l.u===null&&(l.g.J=l.o),l.g.P=0;var u=Ot(l.na);Se(u,"RID","rpc"),Se(u,"SID",l.M),Se(u,"AID",l.K),Se(u,"CI",l.F?"0":"1"),!l.F&&l.ia&&Se(u,"TO",l.ia),Se(u,"TYPE","xmlhttp"),vo(l,u),l.u&&l.o&&wn(u,l.u,l.o),l.O&&(l.g.H=l.O);var g=l.g;l=l.ba,g.M=1,g.A=li(Ot(u)),g.u=null,g.R=!0,Zl(g,l)}a.Va=function(){this.C!=null&&(this.C=null,pi(this),Fn(this),st(19))};function ui(l){l.C!=null&&(s.clearTimeout(l.C),l.C=null)}function xc(l,u){var g=null;if(l.g==u){ui(l),Bn(l),l.g=null;var b=2}else if(kn(l.h,u))g=u.G,Jl(l.h,u),b=1;else return;if(l.I!=0){if(u.o)if(b==1){g=u.u?u.u.length:0,u=Date.now()-u.F;var F=l.D;b=Xr(),Z(b,new zl(b,g)),hi(l)}else vc(l);else if(F=u.m,F==3||F==0&&u.X>0||!(b==1&&Im(l,u)||b==2&&Fn(l)))switch(g&&g.length>0&&(u=l.h,u.i=u.i.concat(g)),F){case 1:Qr(l,5);break;case 4:Qr(l,10);break;case 3:Qr(l,6);break;default:Qr(l,2)}}}function bc(l,u){let g=l.Qa+Math.floor(Math.random()*l.Za);return l.isActive()||(g*=2),g*u}function Qr(l,u){if(l.j.info("Error code "+u),u==2){var g=p(l.bb,l),b=l.Ua;const F=!b;b=new mr(b||"//www.google.com/images/cleardot.gif"),s.location&&s.location.protocol=="http"||co(b,"https"),li(b),F?Cm(b.toString(),g):km(b.toString(),g)}else st(2);l.I=0,l.l&&l.l.pa(u),Pc(l),gc(l)}a.bb=function(l){l?(this.j.info("Successfully pinged google.com"),st(2)):(this.j.info("Failed to ping google.com"),st(1))};function Pc(l){if(l.I=0,l.ja=[],l.l){const u=ec(l.h);(u.length!=0||l.i.length!=0)&&(P(l.ja,u),P(l.ja,l.i),l.h.i.length=0,v(l.i),l.i.length=0),l.l.oa()}}function Dc(l,u,g){var b=g instanceof mr?Ot(g):new mr(g);if(b.g!="")u&&(b.g=u+"."+b.g),po(b,b.u);else{var F=s.location;b=F.protocol,u=u?u+"."+F.hostname:F.hostname,F=+F.port;const B=new mr(null);b&&co(B,b),u&&(B.g=u),F&&po(B,F),g&&(B.h=g),b=B}return g=l.G,u=l.wa,g&&u&&Se(b,g,u),Se(b,"VER",l.ka),vo(l,b),b}function Ac(l,u,g){if(u&&!l.L)throw Error("Can't create secondary domain capable XhrIo object.");return u=l.Aa&&!l.ma?new ke(new Vn({ab:g})):new ke(l.ma),u.Fa(l.L),u}a.isActive=function(){return!!this.l&&this.l.isActive(this)};function jc(){}a=jc.prototype,a.ra=function(){},a.qa=function(){},a.pa=function(){},a.oa=function(){},a.isActive=function(){return!0},a.Ka=function(){};function mi(){}mi.prototype.g=function(l,u){return new St(l,u)};function St(l,u){Q.call(this),this.g=new mc(u),this.l=l,this.h=u&&u.messageUrlParams||null,l=u&&u.messageHeaders||null,u&&u.clientProtocolHeaderRequired&&(l?l["X-Client-Protocol"]="webchannel":l={"X-Client-Protocol":"webchannel"}),this.g.o=l,l=u&&u.initMessageHeaders||null,u&&u.messageContentType&&(l?l["X-WebChannel-Content-Type"]=u.messageContentType:l={"X-WebChannel-Content-Type":u.messageContentType}),u&&u.sa&&(l?l["X-WebChannel-Client-Profile"]=u.sa:l={"X-WebChannel-Client-Profile":u.sa}),this.g.U=l,(l=u&&u.Qb)&&!j(l)&&(this.g.u=l),this.A=u&&u.supportsCrossDomainXhr||!1,this.v=u&&u.sendRawJson||!1,(u=u&&u.httpSessionIdParam)&&!j(u)&&(this.g.G=u,l=this.h,l!==null&&u in l&&(l=this.h,u in l&&delete l[u])),this.j=new Aa(this)}m(St,Q),St.prototype.m=function(){this.g.l=this.j,this.A&&(this.g.L=!0),this.g.connect(this.l,this.h||void 0)},St.prototype.close=function(){In(this.g)},St.prototype.o=function(l){var u=this.g;if(typeof l=="string"){var g={};g.__data__=l,l=g}else this.v&&(g={},g.__data__=va(l),l=g);u.i.push(new xm(u.Ya++,l)),u.I==3&&hi(u)},St.prototype.N=function(){this.g.l=null,delete this.j,In(this.g),delete this.g,St.Z.N.call(this)};function Ec(l){xa.call(this),l.__headers__&&(this.headers=l.__headers__,this.statusCode=l.__status__,delete l.__headers__,delete l.__status__);var u=l.__sm__;if(u){e:{for(const g in u){l=g;break e}l=void 0}(this.i=l)&&(l=this.i,u=u!==null&&l in u?u[l]:void 0),this.data=u}else this.data=l}m(Ec,xa);function _c(){ba.call(this),this.status=1}m(_c,ba);function Aa(l){this.g=l}m(Aa,jc),Aa.prototype.ra=function(){Z(this.g,"a")},Aa.prototype.qa=function(l){Z(this.g,new Ec(l))},Aa.prototype.pa=function(l){Z(this.g,new _c)},Aa.prototype.oa=function(){Z(this.g,"b")},mi.prototype.createWebChannel=mi.prototype.g,St.prototype.send=St.prototype.o,St.prototype.open=St.prototype.m,St.prototype.close=St.prototype.close,Bh=function(){return new mi},Fh=function(){return Xr()},Ih=Nt,Ss={jb:0,mb:1,nb:2,Hb:3,Mb:4,Jb:5,Kb:6,Ib:7,Gb:8,Lb:9,PROXY:10,NOPROXY:11,Eb:12,Ab:13,Bb:14,zb:15,Cb:16,Db:17,fb:18,eb:19,gb:20},ni.NO_ERROR=0,ni.TIMEOUT=8,ni.HTTP_ERROR=6,Ei=ni,Ol.COMPLETE="complete",wh=Ol,zt.EventType=Lr,Lr.OPEN="a",Lr.CLOSE="b",Lr.ERROR="c",Lr.MESSAGE="d",Q.prototype.listen=Q.prototype.J,Do=zt,ke.prototype.listenOnce=ke.prototype.K,ke.prototype.getLastError=ke.prototype.Ha,ke.prototype.getLastErrorCode=ke.prototype.ya,ke.prototype.getStatus=ke.prototype.ca,ke.prototype.getResponseJson=ke.prototype.La,ke.prototype.getResponseText=ke.prototype.la,ke.prototype.send=ke.prototype.ea,ke.prototype.setWithCredentials=ke.prototype.Fa,Vh=ke}).apply(typeof yi<"u"?yi:typeof self<"u"?self:typeof window<"u"?window:{});const id="@firebase/firestore",nd="4.9.3";class Je{constructor(e){this.uid=e}isAuthenticated(){return this.uid!=null}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}Je.UNAUTHENTICATED=new Je(null),Je.GOOGLE_CREDENTIALS=new Je("google-credentials-uid"),Je.FIRST_PARTY=new Je("first-party-uid"),Je.MOCK_USER=new Je("mock-user");let Qa="12.7.0";const pa=new Vg("@firebase/firestore");function Ca(){return pa.logLevel}function L(a,...e){if(pa.logLevel<=nr.DEBUG){const t=e.map(al);pa.debug(`Firestore (${Qa}): ${a}`,...t)}}function cr(a,...e){if(pa.logLevel<=nr.ERROR){const t=e.map(al);pa.error(`Firestore (${Qa}): ${a}`,...t)}}function La(a,...e){if(pa.logLevel<=nr.WARN){const t=e.map(al);pa.warn(`Firestore (${Qa}): ${a}`,...t)}}function al(a){if(typeof a=="string")return a;try{return(function(t){return JSON.stringify(t)})(a)}catch{return a}}function J(a,e,t){let r="Unexpected state";typeof e=="string"?r=e:t=e,Uh(a,r,t)}function Uh(a,e,t){let r=`FIRESTORE (${Qa}) INTERNAL ASSERTION FAILED: ${e} (ID: ${a.toString(16)})`;if(t!==void 0)try{r+=" CONTEXT: "+JSON.stringify(t)}catch{r+=" CONTEXT: "+t}throw cr(r),new Error(r)}function he(a,e,t,r){let o="Unexpected state";typeof t=="string"?o=t:r=t,a||Uh(e,o,r)}function re(a,e){return a}const M={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class O extends Bg{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class _r{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}class Mh{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class py{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable((()=>t(Je.UNAUTHENTICATED)))}shutdown(){}}class hy{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable((()=>t(this.token.user)))}shutdown(){this.changeListener=null}}class uy{constructor(e){this.t=e,this.currentUser=Je.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,t){he(this.o===void 0,42304);let r=this.i;const o=d=>this.i!==r?(r=this.i,t(d)):Promise.resolve();let i=new _r;this.o=()=>{this.i++,this.currentUser=this.u(),i.resolve(),i=new _r,e.enqueueRetryable((()=>o(this.currentUser)))};const s=()=>{const d=i;e.enqueueRetryable((async()=>{await d.promise,await o(this.currentUser)}))},c=d=>{L("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=d,this.o&&(this.auth.addAuthTokenListener(this.o),s())};this.t.onInit((d=>c(d))),setTimeout((()=>{if(!this.auth){const d=this.t.getImmediate({optional:!0});d?c(d):(L("FirebaseAuthCredentialsProvider","Auth not yet detected"),i.resolve(),i=new _r)}}),0),s()}getToken(){const e=this.i,t=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(t).then((r=>this.i!==e?(L("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):r?(he(typeof r.accessToken=="string",31837,{l:r}),new Mh(r.accessToken,this.currentUser)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.o&&this.auth.removeAuthTokenListener(this.o),this.o=void 0}u(){const e=this.auth&&this.auth.getUid();return he(e===null||typeof e=="string",2055,{h:e}),new Je(e)}}class my{constructor(e,t,r){this.P=e,this.T=t,this.I=r,this.type="FirstParty",this.user=Je.FIRST_PARTY,this.A=new Map}R(){return this.I?this.I():null}get headers(){this.A.set("X-Goog-AuthUser",this.P);const e=this.R();return e&&this.A.set("Authorization",e),this.T&&this.A.set("X-Goog-Iam-Authorization-Token",this.T),this.A}}class gy{constructor(e,t,r){this.P=e,this.T=t,this.I=r}getToken(){return Promise.resolve(new my(this.P,this.T,this.I))}start(e,t){e.enqueueRetryable((()=>t(Je.FIRST_PARTY)))}shutdown(){}invalidateToken(){}}class sd{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class fy{constructor(e,t){this.V=t,this.forceRefresh=!1,this.appCheck=null,this.m=null,this.p=null,Fg(e)&&e.settings.appCheckToken&&(this.p=e.settings.appCheckToken)}start(e,t){he(this.o===void 0,3512);const r=i=>{i.error!=null&&L("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${i.error.message}`);const s=i.token!==this.m;return this.m=i.token,L("FirebaseAppCheckTokenProvider",`Received ${s?"new":"existing"} token.`),s?t(i.token):Promise.resolve()};this.o=i=>{e.enqueueRetryable((()=>r(i)))};const o=i=>{L("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=i,this.o&&this.appCheck.addTokenListener(this.o)};this.V.onInit((i=>o(i))),setTimeout((()=>{if(!this.appCheck){const i=this.V.getImmediate({optional:!0});i?o(i):L("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}}),0)}getToken(){if(this.p)return Promise.resolve(new sd(this.p));const e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then((t=>t?(he(typeof t.token=="string",44558,{tokenResult:t}),this.m=t.token,new sd(t.token)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.o&&this.appCheck.removeTokenListener(this.o),this.o=void 0}}function yy(a){const e=typeof self<"u"&&(self.crypto||self.msCrypto),t=new Uint8Array(a);if(e&&typeof e.getRandomValues=="function")e.getRandomValues(t);else for(let r=0;r<a;r++)t[r]=Math.floor(256*Math.random());return t}class ol{static newId(){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=62*Math.floor(4.129032258064516);let r="";for(;r.length<20;){const o=yy(40);for(let i=0;i<o.length;++i)r.length<20&&o[i]<t&&(r+=e.charAt(o[i]%62))}return r}}function se(a,e){return a<e?-1:a>e?1:0}function xs(a,e){const t=Math.min(a.length,e.length);for(let r=0;r<t;r++){const o=a.charAt(r),i=e.charAt(r);if(o!==i)return Kn(o)===Kn(i)?se(o,i):Kn(o)?1:-1}return se(a.length,e.length)}const vy=55296,Sy=57343;function Kn(a){const e=a.charCodeAt(0);return e>=vy&&e<=Sy}function Ha(a,e,t){return a.length===e.length&&a.every(((r,o)=>t(r,e[o])))}const ld="__name__";class Zt{constructor(e,t,r){t===void 0?t=0:t>e.length&&J(637,{offset:t,range:e.length}),r===void 0?r=e.length-t:r>e.length-t&&J(1746,{length:r,range:e.length-t}),this.segments=e,this.offset=t,this.len=r}get length(){return this.len}isEqual(e){return Zt.comparator(this,e)===0}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof Zt?e.forEach((r=>{t.push(r)})):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return e=e===void 0?1:e,this.construct(this.segments,this.offset+e,this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return this.length===0}isPrefixOf(e){if(e.length<this.length)return!1;for(let t=0;t<this.length;t++)if(this.get(t)!==e.get(t))return!1;return!0}isImmediateParentOf(e){if(this.length+1!==e.length)return!1;for(let t=0;t<this.length;t++)if(this.get(t)!==e.get(t))return!1;return!0}forEach(e){for(let t=this.offset,r=this.limit();t<r;t++)e(this.segments[t])}toArray(){return this.segments.slice(this.offset,this.limit())}static comparator(e,t){const r=Math.min(e.length,t.length);for(let o=0;o<r;o++){const i=Zt.compareSegments(e.get(o),t.get(o));if(i!==0)return i}return se(e.length,t.length)}static compareSegments(e,t){const r=Zt.isNumericId(e),o=Zt.isNumericId(t);return r&&!o?-1:!r&&o?1:r&&o?Zt.extractNumericId(e).compare(Zt.extractNumericId(t)):xs(e,t)}static isNumericId(e){return e.startsWith("__id")&&e.endsWith("__")}static extractNumericId(e){return Er.fromString(e.substring(4,e.length-2))}}class ve extends Zt{construct(e,t,r){return new ve(e,t,r)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...e){const t=[];for(const r of e){if(r.indexOf("//")>=0)throw new O(M.INVALID_ARGUMENT,`Invalid segment (${r}). Paths must not contain // in them.`);t.push(...r.split("/").filter((o=>o.length>0)))}return new ve(t)}static emptyPath(){return new ve([])}}const xy=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class qe extends Zt{construct(e,t,r){return new qe(e,t,r)}static isValidIdentifier(e){return xy.test(e)}canonicalString(){return this.toArray().map((e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),qe.isValidIdentifier(e)||(e="`"+e+"`"),e))).join(".")}toString(){return this.canonicalString()}isKeyField(){return this.length===1&&this.get(0)===ld}static keyField(){return new qe([ld])}static fromServerFormat(e){const t=[];let r="",o=0;const i=()=>{if(r.length===0)throw new O(M.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(r),r=""};let s=!1;for(;o<e.length;){const c=e[o];if(c==="\\"){if(o+1===e.length)throw new O(M.INVALID_ARGUMENT,"Path has trailing escape character: "+e);const d=e[o+1];if(d!=="\\"&&d!=="."&&d!=="`")throw new O(M.INVALID_ARGUMENT,"Path has invalid escape sequence: "+e);r+=d,o+=2}else c==="`"?(s=!s,o++):c!=="."||s?(r+=c,o++):(i(),o++)}if(i(),s)throw new O(M.INVALID_ARGUMENT,"Unterminated ` in path: "+e);return new qe(t)}static emptyPath(){return new qe([])}}class ${constructor(e){this.path=e}static fromPath(e){return new $(ve.fromString(e))}static fromName(e){return new $(ve.fromString(e).popFirst(5))}static empty(){return new $(ve.emptyPath())}get collectionGroup(){return this.path.popLast().lastSegment()}hasCollectionId(e){return this.path.length>=2&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return e!==null&&ve.comparator(this.path,e.path)===0}toString(){return this.path.toString()}static comparator(e,t){return ve.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new $(new ve(e.slice()))}}function Nh(a,e,t){if(!t)throw new O(M.INVALID_ARGUMENT,`Function ${a}() cannot be called with an empty ${e}.`)}function by(a,e,t,r){if(e===!0&&r===!0)throw new O(M.INVALID_ARGUMENT,`${a} and ${t} cannot be used together.`)}function cd(a){if(!$.isDocumentKey(a))throw new O(M.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${a} has ${a.length}.`)}function dd(a){if($.isDocumentKey(a))throw new O(M.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${a} has ${a.length}.`)}function Wh(a){return typeof a=="object"&&a!==null&&(Object.getPrototypeOf(a)===Object.prototype||Object.getPrototypeOf(a)===null)}function nn(a){if(a===void 0)return"undefined";if(a===null)return"null";if(typeof a=="string")return a.length>20&&(a=`${a.substring(0,20)}...`),JSON.stringify(a);if(typeof a=="number"||typeof a=="boolean")return""+a;if(typeof a=="object"){if(a instanceof Array)return"an array";{const e=(function(r){return r.constructor?r.constructor.name:null})(a);return e?`a custom ${e} object`:"an object"}}return typeof a=="function"?"a function":J(12329,{type:typeof a})}function Ut(a,e){if("_delegate"in a&&(a=a._delegate),!(a instanceof e)){if(e.name===a.constructor.name)throw new O(M.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const t=nn(a);throw new O(M.INVALID_ARGUMENT,`Expected type '${e.name}', but it was: ${t}`)}}return a}function Ne(a,e){const t={typeString:a};return e&&(t.value=e),t}function Yo(a,e){if(!Wh(a))throw new O(M.INVALID_ARGUMENT,"JSON must be an object");let t;for(const r in e)if(e[r]){const o=e[r].typeString,i="value"in e[r]?{value:e[r].value}:void 0;if(!(r in a)){t=`JSON missing required field: '${r}'`;break}const s=a[r];if(o&&typeof s!==o){t=`JSON field '${r}' must be a ${o}.`;break}if(i!==void 0&&s!==i.value){t=`Expected '${r}' field to equal '${i.value}'`;break}}if(t)throw new O(M.INVALID_ARGUMENT,t);return!0}const pd=-62135596800,hd=1e6;class xe{static now(){return xe.fromMillis(Date.now())}static fromDate(e){return xe.fromMillis(e.getTime())}static fromMillis(e){const t=Math.floor(e/1e3),r=Math.floor((e-1e3*t)*hd);return new xe(t,r)}constructor(e,t){if(this.seconds=e,this.nanoseconds=t,t<0)throw new O(M.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(t>=1e9)throw new O(M.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<pd)throw new O(M.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(e>=253402300800)throw new O(M.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/hd}_compareTo(e){return this.seconds===e.seconds?se(this.nanoseconds,e.nanoseconds):se(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{type:xe._jsonSchemaVersion,seconds:this.seconds,nanoseconds:this.nanoseconds}}static fromJSON(e){if(Yo(e,xe._jsonSchema))return new xe(e.seconds,e.nanoseconds)}valueOf(){const e=this.seconds-pd;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}xe._jsonSchemaVersion="firestore/timestamp/1.0",xe._jsonSchema={type:Ne("string",xe._jsonSchemaVersion),seconds:Ne("number"),nanoseconds:Ne("number")};class te{static fromTimestamp(e){return new te(e)}static min(){return new te(new xe(0,0))}static max(){return new te(new xe(253402300799,999999999))}constructor(e){this.timestamp=e}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}const zo=-1;function Py(a,e){const t=a.toTimestamp().seconds,r=a.toTimestamp().nanoseconds+1,o=te.fromTimestamp(r===1e9?new xe(t+1,0):new xe(t,r));return new Vr(o,$.empty(),e)}function Dy(a){return new Vr(a.readTime,a.key,zo)}class Vr{constructor(e,t,r){this.readTime=e,this.documentKey=t,this.largestBatchId=r}static min(){return new Vr(te.min(),$.empty(),zo)}static max(){return new Vr(te.max(),$.empty(),zo)}}function Ay(a,e){let t=a.readTime.compareTo(e.readTime);return t!==0?t:(t=$.comparator(a.documentKey,e.documentKey),t!==0?t:se(a.largestBatchId,e.largestBatchId))}const jy="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class Ey{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach((e=>e()))}}async function Ka(a){if(a.code!==M.FAILED_PRECONDITION||a.message!==jy)throw a;L("LocalStore","Unexpectedly lost primary lease")}class N{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e((t=>{this.isDone=!0,this.result=t,this.nextCallback&&this.nextCallback(t)}),(t=>{this.isDone=!0,this.error=t,this.catchCallback&&this.catchCallback(t)}))}catch(e){return this.next(void 0,e)}next(e,t){return this.callbackAttached&&J(59440),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(t,this.error):this.wrapSuccess(e,this.result):new N(((r,o)=>{this.nextCallback=i=>{this.wrapSuccess(e,i).next(r,o)},this.catchCallback=i=>{this.wrapFailure(t,i).next(r,o)}}))}toPromise(){return new Promise(((e,t)=>{this.next(e,t)}))}wrapUserFunction(e){try{const t=e();return t instanceof N?t:N.resolve(t)}catch(t){return N.reject(t)}}wrapSuccess(e,t){return e?this.wrapUserFunction((()=>e(t))):N.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction((()=>e(t))):N.reject(t)}static resolve(e){return new N(((t,r)=>{t(e)}))}static reject(e){return new N(((t,r)=>{r(e)}))}static waitFor(e){return new N(((t,r)=>{let o=0,i=0,s=!1;e.forEach((c=>{++o,c.next((()=>{++i,s&&i===o&&t()}),(d=>r(d)))})),s=!0,i===o&&t()}))}static or(e){let t=N.resolve(!1);for(const r of e)t=t.next((o=>o?N.resolve(o):r()));return t}static forEach(e,t){const r=[];return e.forEach(((o,i)=>{r.push(t.call(this,o,i))})),this.waitFor(r)}static mapArray(e,t){return new N(((r,o)=>{const i=e.length,s=new Array(i);let c=0;for(let d=0;d<i;d++){const p=d;t(e[p]).next((h=>{s[p]=h,++c,c===i&&r(s)}),(h=>o(h)))}}))}static doWhile(e,t){return new N(((r,o)=>{const i=()=>{e()===!0?t().next((()=>{i()}),o):r()};i()}))}}function _y(a){const e=a.match(/Android ([\d.]+)/i),t=e?e[1].split(".").slice(0,2).join("."):"-1";return Number(t)}function Ya(a){return a.name==="IndexedDbTransactionError"}class sn{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=r=>this.ae(r),this.ue=r=>t.writeSequenceNumber(r))}ae(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){const e=++this.previousValue;return this.ue&&this.ue(e),e}}sn.ce=-1;const il=-1;function ln(a){return a==null}function Wi(a){return a===0&&1/a==-1/0}function Cy(a){return typeof a=="number"&&Number.isInteger(a)&&!Wi(a)&&a<=Number.MAX_SAFE_INTEGER&&a>=Number.MIN_SAFE_INTEGER}const Gh="";function ky(a){let e="";for(let t=0;t<a.length;t++)e.length>0&&(e=ud(e)),e=Ry(a.get(t),e);return ud(e)}function Ry(a,e){let t=e;const r=a.length;for(let o=0;o<r;o++){const i=a.charAt(o);switch(i){case"\0":t+="";break;case Gh:t+="";break;default:t+=i}}return t}function ud(a){return a+Gh+""}function md(a){let e=0;for(const t in a)Object.prototype.hasOwnProperty.call(a,t)&&e++;return e}function Wr(a,e){for(const t in a)Object.prototype.hasOwnProperty.call(a,t)&&e(t,a[t])}function zh(a){for(const e in a)if(Object.prototype.hasOwnProperty.call(a,e))return!1;return!0}class _e{constructor(e,t){this.comparator=e,this.root=t||Ze.EMPTY}insert(e,t){return new _e(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,Ze.BLACK,null,null))}remove(e){return new _e(this.comparator,this.root.remove(e,this.comparator).copy(null,null,Ze.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){const r=this.comparator(e,t.key);if(r===0)return t.value;r<0?t=t.left:r>0&&(t=t.right)}return null}indexOf(e){let t=0,r=this.root;for(;!r.isEmpty();){const o=this.comparator(e,r.key);if(o===0)return t+r.left.size;o<0?r=r.left:(t+=r.left.size+1,r=r.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(e){this.inorderTraversal(((t,r)=>(e(t,r),!1)))}toString(){const e=[];return this.inorderTraversal(((t,r)=>(e.push(`${t}:${r}`),!1))),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new vi(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new vi(this.root,e,this.comparator,!1)}getReverseIterator(){return new vi(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new vi(this.root,e,this.comparator,!0)}}class vi{constructor(e,t,r,o){this.isReverse=o,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?r(e.key,t):1,t&&o&&(i*=-1),i<0)e=this.isReverse?e.left:e.right;else{if(i===0){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();const t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return this.nodeStack.length>0}peek(){if(this.nodeStack.length===0)return null;const e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class Ze{constructor(e,t,r,o,i){this.key=e,this.value=t,this.color=r??Ze.RED,this.left=o??Ze.EMPTY,this.right=i??Ze.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,r,o,i){return new Ze(e??this.key,t??this.value,r??this.color,o??this.left,i??this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,r){let o=this;const i=r(e,o.key);return o=i<0?o.copy(null,null,null,o.left.insert(e,t,r),null):i===0?o.copy(null,t,null,null,null):o.copy(null,null,null,null,o.right.insert(e,t,r)),o.fixUp()}removeMin(){if(this.left.isEmpty())return Ze.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,t){let r,o=this;if(t(e,o.key)<0)o.left.isEmpty()||o.left.isRed()||o.left.left.isRed()||(o=o.moveRedLeft()),o=o.copy(null,null,null,o.left.remove(e,t),null);else{if(o.left.isRed()&&(o=o.rotateRight()),o.right.isEmpty()||o.right.isRed()||o.right.left.isRed()||(o=o.moveRedRight()),t(e,o.key)===0){if(o.right.isEmpty())return Ze.EMPTY;r=o.right.min(),o=o.copy(r.key,r.value,null,null,o.right.removeMin())}o=o.copy(null,null,null,null,o.right.remove(e,t))}return o.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){const e=this.copy(null,null,Ze.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){const e=this.copy(null,null,Ze.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){const e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){const e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw J(43730,{key:this.key,value:this.value});if(this.right.isRed())throw J(14113,{key:this.key,value:this.value});const e=this.left.check();if(e!==this.right.check())throw J(27949);return e+(this.isRed()?0:1)}}Ze.EMPTY=null,Ze.RED=!0,Ze.BLACK=!1;Ze.EMPTY=new class{constructor(){this.size=0}get key(){throw J(57766)}get value(){throw J(16141)}get color(){throw J(16727)}get left(){throw J(29726)}get right(){throw J(36894)}copy(e,t,r,o,i){return this}insert(e,t,r){return new Ze(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class ze{constructor(e){this.comparator=e,this.data=new _e(this.comparator)}has(e){return this.data.get(e)!==null}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(e){this.data.inorderTraversal(((t,r)=>(e(t),!1)))}forEachInRange(e,t){const r=this.data.getIteratorFrom(e[0]);for(;r.hasNext();){const o=r.getNext();if(this.comparator(o.key,e[1])>=0)return;t(o.key)}}forEachWhile(e,t){let r;for(r=t!==void 0?this.data.getIteratorFrom(t):this.data.getIterator();r.hasNext();)if(!e(r.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new gd(this.data.getIterator())}getIteratorFrom(e){return new gd(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size<e.size&&(t=e,e=this),e.forEach((r=>{t=t.add(r)})),t}isEqual(e){if(!(e instanceof ze)||this.size!==e.size)return!1;const t=this.data.getIterator(),r=e.data.getIterator();for(;t.hasNext();){const o=t.getNext().key,i=r.getNext().key;if(this.comparator(o,i)!==0)return!1}return!0}toArray(){const e=[];return this.forEach((t=>{e.push(t)})),e}toString(){const e=[];return this.forEach((t=>e.push(t))),"SortedSet("+e.toString()+")"}copy(e){const t=new ze(this.comparator);return t.data=e,t}}class gd{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}class jt{constructor(e){this.fields=e,e.sort(qe.comparator)}static empty(){return new jt([])}unionWith(e){let t=new ze(qe.comparator);for(const r of this.fields)t=t.add(r);for(const r of e)t=t.add(r);return new jt(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return Ha(this.fields,e.fields,((t,r)=>t.isEqual(r)))}}class Oh extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class Qe{constructor(e){this.binaryString=e}static fromBase64String(e){const t=(function(o){try{return atob(o)}catch(i){throw typeof DOMException<"u"&&i instanceof DOMException?new Oh("Invalid base64 string: "+i):i}})(e);return new Qe(t)}static fromUint8Array(e){const t=(function(o){let i="";for(let s=0;s<o.length;++s)i+=String.fromCharCode(o[s]);return i})(e);return new Qe(t)}[Symbol.iterator](){let e=0;return{next:()=>e<this.binaryString.length?{value:this.binaryString.charCodeAt(e++),done:!1}:{value:void 0,done:!0}}}toBase64(){return(function(t){return btoa(t)})(this.binaryString)}toUint8Array(){return(function(t){const r=new Uint8Array(t.length);for(let o=0;o<t.length;o++)r[o]=t.charCodeAt(o);return r})(this.binaryString)}approximateByteSize(){return 2*this.binaryString.length}compareTo(e){return se(this.binaryString,e.binaryString)}isEqual(e){return this.binaryString===e.binaryString}}Qe.EMPTY_BYTE_STRING=new Qe("");const Ty=new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);function wr(a){if(he(!!a,39018),typeof a=="string"){let e=0;const t=Ty.exec(a);if(he(!!t,46558,{timestamp:a}),t[1]){let o=t[1];o=(o+"000000000").substr(0,9),e=Number(o)}const r=new Date(a);return{seconds:Math.floor(r.getTime()/1e3),nanos:e}}return{seconds:Ie(a.seconds),nanos:Ie(a.nanos)}}function Ie(a){return typeof a=="number"?a:typeof a=="string"?Number(a):0}function Ir(a){return typeof a=="string"?Qe.fromBase64String(a):Qe.fromUint8Array(a)}const Lh="server_timestamp",Hh="__type__",Xh="__previous_value__",Zh="__local_write_time__";function nl(a){return(a?.mapValue?.fields||{})[Hh]?.stringValue===Lh}function cn(a){const e=a.mapValue.fields[Xh];return nl(e)?cn(e):e}function Oo(a){const e=wr(a.mapValue.fields[Zh].timestampValue);return new xe(e.seconds,e.nanos)}class Vy{constructor(e,t,r,o,i,s,c,d,p,h){this.databaseId=e,this.appId=t,this.persistenceKey=r,this.host=o,this.ssl=i,this.forceLongPolling=s,this.autoDetectLongPolling=c,this.longPollingOptions=d,this.useFetchStreams=p,this.isUsingEmulator=h}}const Gi="(default)";class Lo{constructor(e,t){this.projectId=e,this.database=t||Gi}static empty(){return new Lo("","")}get isDefaultDatabase(){return this.database===Gi}isEqual(e){return e instanceof Lo&&e.projectId===this.projectId&&e.database===this.database}}const qh="__type__",wy="__max__",Si={mapValue:{}},$h="__vector__",zi="value";function Fr(a){return"nullValue"in a?0:"booleanValue"in a?1:"integerValue"in a||"doubleValue"in a?2:"timestampValue"in a?3:"stringValue"in a?5:"bytesValue"in a?6:"referenceValue"in a?7:"geoPointValue"in a?8:"arrayValue"in a?9:"mapValue"in a?nl(a)?4:Fy(a)?9007199254740991:Iy(a)?10:11:J(28295,{value:a})}function rr(a,e){if(a===e)return!0;const t=Fr(a);if(t!==Fr(e))return!1;switch(t){case 0:case 9007199254740991:return!0;case 1:return a.booleanValue===e.booleanValue;case 4:return Oo(a).isEqual(Oo(e));case 3:return(function(o,i){if(typeof o.timestampValue=="string"&&typeof i.timestampValue=="string"&&o.timestampValue.length===i.timestampValue.length)return o.timestampValue===i.timestampValue;const s=wr(o.timestampValue),c=wr(i.timestampValue);return s.seconds===c.seconds&&s.nanos===c.nanos})(a,e);case 5:return a.stringValue===e.stringValue;case 6:return(function(o,i){return Ir(o.bytesValue).isEqual(Ir(i.bytesValue))})(a,e);case 7:return a.referenceValue===e.referenceValue;case 8:return(function(o,i){return Ie(o.geoPointValue.latitude)===Ie(i.geoPointValue.latitude)&&Ie(o.geoPointValue.longitude)===Ie(i.geoPointValue.longitude)})(a,e);case 2:return(function(o,i){if("integerValue"in o&&"integerValue"in i)return Ie(o.integerValue)===Ie(i.integerValue);if("doubleValue"in o&&"doubleValue"in i){const s=Ie(o.doubleValue),c=Ie(i.doubleValue);return s===c?Wi(s)===Wi(c):isNaN(s)&&isNaN(c)}return!1})(a,e);case 9:return Ha(a.arrayValue.values||[],e.arrayValue.values||[],rr);case 10:case 11:return(function(o,i){const s=o.mapValue.fields||{},c=i.mapValue.fields||{};if(md(s)!==md(c))return!1;for(const d in s)if(s.hasOwnProperty(d)&&(c[d]===void 0||!rr(s[d],c[d])))return!1;return!0})(a,e);default:return J(52216,{left:a})}}function Ho(a,e){return(a.values||[]).find((t=>rr(t,e)))!==void 0}function Xa(a,e){if(a===e)return 0;const t=Fr(a),r=Fr(e);if(t!==r)return se(t,r);switch(t){case 0:case 9007199254740991:return 0;case 1:return se(a.booleanValue,e.booleanValue);case 2:return(function(i,s){const c=Ie(i.integerValue||i.doubleValue),d=Ie(s.integerValue||s.doubleValue);return c<d?-1:c>d?1:c===d?0:isNaN(c)?isNaN(d)?0:-1:1})(a,e);case 3:return fd(a.timestampValue,e.timestampValue);case 4:return fd(Oo(a),Oo(e));case 5:return xs(a.stringValue,e.stringValue);case 6:return(function(i,s){const c=Ir(i),d=Ir(s);return c.compareTo(d)})(a.bytesValue,e.bytesValue);case 7:return(function(i,s){const c=i.split("/"),d=s.split("/");for(let p=0;p<c.length&&p<d.length;p++){const h=se(c[p],d[p]);if(h!==0)return h}return se(c.length,d.length)})(a.referenceValue,e.referenceValue);case 8:return(function(i,s){const c=se(Ie(i.latitude),Ie(s.latitude));return c!==0?c:se(Ie(i.longitude),Ie(s.longitude))})(a.geoPointValue,e.geoPointValue);case 9:return yd(a.arrayValue,e.arrayValue);case 10:return(function(i,s){const c=i.fields||{},d=s.fields||{},p=c[zi]?.arrayValue,h=d[zi]?.arrayValue,m=se(p?.values?.length||0,h?.values?.length||0);return m!==0?m:yd(p,h)})(a.mapValue,e.mapValue);case 11:return(function(i,s){if(i===Si.mapValue&&s===Si.mapValue)return 0;if(i===Si.mapValue)return 1;if(s===Si.mapValue)return-1;const c=i.fields||{},d=Object.keys(c),p=s.fields||{},h=Object.keys(p);d.sort(),h.sort();for(let m=0;m<d.length&&m<h.length;++m){const f=xs(d[m],h[m]);if(f!==0)return f;const v=Xa(c[d[m]],p[h[m]]);if(v!==0)return v}return se(d.length,h.length)})(a.mapValue,e.mapValue);default:throw J(23264,{he:t})}}function fd(a,e){if(typeof a=="string"&&typeof e=="string"&&a.length===e.length)return se(a,e);const t=wr(a),r=wr(e),o=se(t.seconds,r.seconds);return o!==0?o:se(t.nanos,r.nanos)}function yd(a,e){const t=a.values||[],r=e.values||[];for(let o=0;o<t.length&&o<r.length;++o){const i=Xa(t[o],r[o]);if(i)return i}return se(t.length,r.length)}function Za(a){return bs(a)}function bs(a){return"nullValue"in a?"null":"booleanValue"in a?""+a.booleanValue:"integerValue"in a?""+a.integerValue:"doubleValue"in a?""+a.doubleValue:"timestampValue"in a?(function(t){const r=wr(t);return`time(${r.seconds},${r.nanos})`})(a.timestampValue):"stringValue"in a?a.stringValue:"bytesValue"in a?(function(t){return Ir(t).toBase64()})(a.bytesValue):"referenceValue"in a?(function(t){return $.fromName(t).toString()})(a.referenceValue):"geoPointValue"in a?(function(t){return`geo(${t.latitude},${t.longitude})`})(a.geoPointValue):"arrayValue"in a?(function(t){let r="[",o=!0;for(const i of t.values||[])o?o=!1:r+=",",r+=bs(i);return r+"]"})(a.arrayValue):"mapValue"in a?(function(t){const r=Object.keys(t.fields||{}).sort();let o="{",i=!0;for(const s of r)i?i=!1:o+=",",o+=`${s}:${bs(t.fields[s])}`;return o+"}"})(a.mapValue):J(61005,{value:a})}function _i(a){switch(Fr(a)){case 0:case 1:return 4;case 2:return 8;case 3:case 8:return 16;case 4:const e=cn(a);return e?16+_i(e):16;case 5:return 2*a.stringValue.length;case 6:return Ir(a.bytesValue).approximateByteSize();case 7:return a.referenceValue.length;case 9:return(function(r){return(r.values||[]).reduce(((o,i)=>o+_i(i)),0)})(a.arrayValue);case 10:case 11:return(function(r){let o=0;return Wr(r.fields,((i,s)=>{o+=i.length+_i(s)})),o})(a.mapValue);default:throw J(13486,{value:a})}}function vd(a,e){return{referenceValue:`projects/${a.projectId}/databases/${a.database}/documents/${e.path.canonicalString()}`}}function Ps(a){return!!a&&"integerValue"in a}function sl(a){return!!a&&"arrayValue"in a}function Sd(a){return!!a&&"nullValue"in a}function xd(a){return!!a&&"doubleValue"in a&&isNaN(Number(a.doubleValue))}function Ci(a){return!!a&&"mapValue"in a}function Iy(a){return(a?.mapValue?.fields||{})[qh]?.stringValue===$h}function Ro(a){if(a.geoPointValue)return{geoPointValue:{...a.geoPointValue}};if(a.timestampValue&&typeof a.timestampValue=="object")return{timestampValue:{...a.timestampValue}};if(a.mapValue){const e={mapValue:{fields:{}}};return Wr(a.mapValue.fields,((t,r)=>e.mapValue.fields[t]=Ro(r))),e}if(a.arrayValue){const e={arrayValue:{values:[]}};for(let t=0;t<(a.arrayValue.values||[]).length;++t)e.arrayValue.values[t]=Ro(a.arrayValue.values[t]);return e}return{...a}}function Fy(a){return(((a.mapValue||{}).fields||{}).__type__||{}).stringValue===wy}class pt{constructor(e){this.value=e}static empty(){return new pt({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let t=this.value;for(let r=0;r<e.length-1;++r)if(t=(t.mapValue.fields||{})[e.get(r)],!Ci(t))return null;return t=(t.mapValue.fields||{})[e.lastSegment()],t||null}}set(e,t){this.getFieldsMap(e.popLast())[e.lastSegment()]=Ro(t)}setAll(e){let t=qe.emptyPath(),r={},o=[];e.forEach(((s,c)=>{if(!t.isImmediateParentOf(c)){const d=this.getFieldsMap(t);this.applyChanges(d,r,o),r={},o=[],t=c.popLast()}s?r[c.lastSegment()]=Ro(s):o.push(c.lastSegment())}));const i=this.getFieldsMap(t);this.applyChanges(i,r,o)}delete(e){const t=this.field(e.popLast());Ci(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return rr(this.value,e.value)}getFieldsMap(e){let t=this.value;t.mapValue.fields||(t.mapValue={fields:{}});for(let r=0;r<e.length;++r){let o=t.mapValue.fields[e.get(r)];Ci(o)&&o.mapValue.fields||(o={mapValue:{fields:{}}},t.mapValue.fields[e.get(r)]=o),t=o}return t.mapValue.fields}applyChanges(e,t,r){Wr(t,((o,i)=>e[o]=i));for(const o of r)delete e[o]}clone(){return new pt(Ro(this.value))}}function Qh(a){const e=[];return Wr(a.fields,((t,r)=>{const o=new qe([t]);if(Ci(r)){const i=Qh(r.mapValue).fields;if(i.length===0)e.push(o);else for(const s of i)e.push(o.child(s))}else e.push(o)})),new jt(e)}class et{constructor(e,t,r,o,i,s,c){this.key=e,this.documentType=t,this.version=r,this.readTime=o,this.createTime=i,this.data=s,this.documentState=c}static newInvalidDocument(e){return new et(e,0,te.min(),te.min(),te.min(),pt.empty(),0)}static newFoundDocument(e,t,r,o){return new et(e,1,t,te.min(),r,o,0)}static newNoDocument(e,t){return new et(e,2,t,te.min(),te.min(),pt.empty(),0)}static newUnknownDocument(e,t){return new et(e,3,t,te.min(),te.min(),pt.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(te.min())||this.documentType!==2&&this.documentType!==0||(this.createTime=e),this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=pt.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=pt.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=te.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return this.documentState===1}get hasCommittedMutations(){return this.documentState===2}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return this.documentType!==0}isFoundDocument(){return this.documentType===1}isNoDocument(){return this.documentType===2}isUnknownDocument(){return this.documentType===3}isEqual(e){return e instanceof et&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new et(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class Oi{constructor(e,t){this.position=e,this.inclusive=t}}function bd(a,e,t){let r=0;for(let o=0;o<a.position.length;o++){const i=e[o],s=a.position[o];if(i.field.isKeyField()?r=$.comparator($.fromName(s.referenceValue),t.key):r=Xa(s,t.data.field(i.field)),i.dir==="desc"&&(r*=-1),r!==0)break}return r}function Pd(a,e){if(a===null)return e===null;if(e===null||a.inclusive!==e.inclusive||a.position.length!==e.position.length)return!1;for(let t=0;t<a.position.length;t++)if(!rr(a.position[t],e.position[t]))return!1;return!0}class Xo{constructor(e,t="asc"){this.field=e,this.dir=t}}function By(a,e){return a.dir===e.dir&&a.field.isEqual(e.field)}class Kh{}class Me extends Kh{constructor(e,t,r){super(),this.field=e,this.op=t,this.value=r}static create(e,t,r){return e.isKeyField()?t==="in"||t==="not-in"?this.createKeyFieldInFilter(e,t,r):new My(e,t,r):t==="array-contains"?new Gy(e,r):t==="in"?new zy(e,r):t==="not-in"?new Oy(e,r):t==="array-contains-any"?new Ly(e,r):new Me(e,t,r)}static createKeyFieldInFilter(e,t,r){return t==="in"?new Ny(e,r):new Wy(e,r)}matches(e){const t=e.data.field(this.field);return this.op==="!="?t!==null&&t.nullValue===void 0&&this.matchesComparison(Xa(t,this.value)):t!==null&&Fr(this.value)===Fr(t)&&this.matchesComparison(Xa(t,this.value))}matchesComparison(e){switch(this.op){case"<":return e<0;case"<=":return e<=0;case"==":return e===0;case"!=":return e!==0;case">":return e>0;case">=":return e>=0;default:return J(47266,{operator:this.op})}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class Wt extends Kh{constructor(e,t){super(),this.filters=e,this.op=t,this.Pe=null}static create(e,t){return new Wt(e,t)}matches(e){return Yh(this)?this.filters.find((t=>!t.matches(e)))===void 0:this.filters.find((t=>t.matches(e)))!==void 0}getFlattenedFilters(){return this.Pe!==null||(this.Pe=this.filters.reduce(((e,t)=>e.concat(t.getFlattenedFilters())),[])),this.Pe}getFilters(){return Object.assign([],this.filters)}}function Yh(a){return a.op==="and"}function Jh(a){return Uy(a)&&Yh(a)}function Uy(a){for(const e of a.filters)if(e instanceof Wt)return!1;return!0}function Ds(a){if(a instanceof Me)return a.field.canonicalString()+a.op.toString()+Za(a.value);if(Jh(a))return a.filters.map((e=>Ds(e))).join(",");{const e=a.filters.map((t=>Ds(t))).join(",");return`${a.op}(${e})`}}function eu(a,e){return a instanceof Me?(function(r,o){return o instanceof Me&&r.op===o.op&&r.field.isEqual(o.field)&&rr(r.value,o.value)})(a,e):a instanceof Wt?(function(r,o){return o instanceof Wt&&r.op===o.op&&r.filters.length===o.filters.length?r.filters.reduce(((i,s,c)=>i&&eu(s,o.filters[c])),!0):!1})(a,e):void J(19439)}function tu(a){return a instanceof Me?(function(t){return`${t.field.canonicalString()} ${t.op} ${Za(t.value)}`})(a):a instanceof Wt?(function(t){return t.op.toString()+" {"+t.getFilters().map(tu).join(" ,")+"}"})(a):"Filter"}class My extends Me{constructor(e,t,r){super(e,t,r),this.key=$.fromName(r.referenceValue)}matches(e){const t=$.comparator(e.key,this.key);return this.matchesComparison(t)}}class Ny extends Me{constructor(e,t){super(e,"in",t),this.keys=ru("in",t)}matches(e){return this.keys.some((t=>t.isEqual(e.key)))}}class Wy extends Me{constructor(e,t){super(e,"not-in",t),this.keys=ru("not-in",t)}matches(e){return!this.keys.some((t=>t.isEqual(e.key)))}}function ru(a,e){return(e.arrayValue?.values||[]).map((t=>$.fromName(t.referenceValue)))}class Gy extends Me{constructor(e,t){super(e,"array-contains",t)}matches(e){const t=e.data.field(this.field);return sl(t)&&Ho(t.arrayValue,this.value)}}class zy extends Me{constructor(e,t){super(e,"in",t)}matches(e){const t=e.data.field(this.field);return t!==null&&Ho(this.value.arrayValue,t)}}class Oy extends Me{constructor(e,t){super(e,"not-in",t)}matches(e){if(Ho(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const t=e.data.field(this.field);return t!==null&&t.nullValue===void 0&&!Ho(this.value.arrayValue,t)}}class Ly extends Me{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!sl(t)||!t.arrayValue.values)&&t.arrayValue.values.some((r=>Ho(this.value.arrayValue,r)))}}class Hy{constructor(e,t=null,r=[],o=[],i=null,s=null,c=null){this.path=e,this.collectionGroup=t,this.orderBy=r,this.filters=o,this.limit=i,this.startAt=s,this.endAt=c,this.Te=null}}function Dd(a,e=null,t=[],r=[],o=null,i=null,s=null){return new Hy(a,e,t,r,o,i,s)}function ll(a){const e=re(a);if(e.Te===null){let t=e.path.canonicalString();e.collectionGroup!==null&&(t+="|cg:"+e.collectionGroup),t+="|f:",t+=e.filters.map((r=>Ds(r))).join(","),t+="|ob:",t+=e.orderBy.map((r=>(function(i){return i.field.canonicalString()+i.dir})(r))).join(","),ln(e.limit)||(t+="|l:",t+=e.limit),e.startAt&&(t+="|lb:",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map((r=>Za(r))).join(",")),e.endAt&&(t+="|ub:",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map((r=>Za(r))).join(",")),e.Te=t}return e.Te}function cl(a,e){if(a.limit!==e.limit||a.orderBy.length!==e.orderBy.length)return!1;for(let t=0;t<a.orderBy.length;t++)if(!By(a.orderBy[t],e.orderBy[t]))return!1;if(a.filters.length!==e.filters.length)return!1;for(let t=0;t<a.filters.length;t++)if(!eu(a.filters[t],e.filters[t]))return!1;return a.collectionGroup===e.collectionGroup&&!!a.path.isEqual(e.path)&&!!Pd(a.startAt,e.startAt)&&Pd(a.endAt,e.endAt)}function As(a){return $.isDocumentKey(a.path)&&a.collectionGroup===null&&a.filters.length===0}class Ja{constructor(e,t=null,r=[],o=[],i=null,s="F",c=null,d=null){this.path=e,this.collectionGroup=t,this.explicitOrderBy=r,this.filters=o,this.limit=i,this.limitType=s,this.startAt=c,this.endAt=d,this.Ie=null,this.Ee=null,this.de=null,this.startAt,this.endAt}}function Xy(a,e,t,r,o,i,s,c){return new Ja(a,e,t,r,o,i,s,c)}function dl(a){return new Ja(a)}function Ad(a){return a.filters.length===0&&a.limit===null&&a.startAt==null&&a.endAt==null&&(a.explicitOrderBy.length===0||a.explicitOrderBy.length===1&&a.explicitOrderBy[0].field.isKeyField())}function au(a){return a.collectionGroup!==null}function To(a){const e=re(a);if(e.Ie===null){e.Ie=[];const t=new Set;for(const i of e.explicitOrderBy)e.Ie.push(i),t.add(i.field.canonicalString());const r=e.explicitOrderBy.length>0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc";(function(s){let c=new ze(qe.comparator);return s.filters.forEach((d=>{d.getFlattenedFilters().forEach((p=>{p.isInequality()&&(c=c.add(p.field))}))})),c})(e).forEach((i=>{t.has(i.canonicalString())||i.isKeyField()||e.Ie.push(new Xo(i,r))})),t.has(qe.keyField().canonicalString())||e.Ie.push(new Xo(qe.keyField(),r))}return e.Ie}function Qt(a){const e=re(a);return e.Ee||(e.Ee=Zy(e,To(a))),e.Ee}function Zy(a,e){if(a.limitType==="F")return Dd(a.path,a.collectionGroup,e,a.filters,a.limit,a.startAt,a.endAt);{e=e.map((o=>{const i=o.dir==="desc"?"asc":"desc";return new Xo(o.field,i)}));const t=a.endAt?new Oi(a.endAt.position,a.endAt.inclusive):null,r=a.startAt?new Oi(a.startAt.position,a.startAt.inclusive):null;return Dd(a.path,a.collectionGroup,e,a.filters,a.limit,t,r)}}function js(a,e){const t=a.filters.concat([e]);return new Ja(a.path,a.collectionGroup,a.explicitOrderBy.slice(),t,a.limit,a.limitType,a.startAt,a.endAt)}function Es(a,e,t){return new Ja(a.path,a.collectionGroup,a.explicitOrderBy.slice(),a.filters.slice(),e,t,a.startAt,a.endAt)}function dn(a,e){return cl(Qt(a),Qt(e))&&a.limitType===e.limitType}function ou(a){return`${ll(Qt(a))}|lt:${a.limitType}`}function ka(a){return`Query(target=${(function(t){let r=t.path.canonicalString();return t.collectionGroup!==null&&(r+=" collectionGroup="+t.collectionGroup),t.filters.length>0&&(r+=`, filters: [${t.filters.map((o=>tu(o))).join(", ")}]`),ln(t.limit)||(r+=", limit: "+t.limit),t.orderBy.length>0&&(r+=`, orderBy: [${t.orderBy.map((o=>(function(s){return`${s.field.canonicalString()} (${s.dir})`})(o))).join(", ")}]`),t.startAt&&(r+=", startAt: ",r+=t.startAt.inclusive?"b:":"a:",r+=t.startAt.position.map((o=>Za(o))).join(",")),t.endAt&&(r+=", endAt: ",r+=t.endAt.inclusive?"a:":"b:",r+=t.endAt.position.map((o=>Za(o))).join(",")),`Target(${r})`})(Qt(a))}; limitType=${a.limitType})`}function pn(a,e){return e.isFoundDocument()&&(function(r,o){const i=o.key.path;return r.collectionGroup!==null?o.key.hasCollectionId(r.collectionGroup)&&r.path.isPrefixOf(i):$.isDocumentKey(r.path)?r.path.isEqual(i):r.path.isImmediateParentOf(i)})(a,e)&&(function(r,o){for(const i of To(r))if(!i.field.isKeyField()&&o.data.field(i.field)===null)return!1;return!0})(a,e)&&(function(r,o){for(const i of r.filters)if(!i.matches(o))return!1;return!0})(a,e)&&(function(r,o){return!(r.startAt&&!(function(s,c,d){const p=bd(s,c,d);return s.inclusive?p<=0:p<0})(r.startAt,To(r),o)||r.endAt&&!(function(s,c,d){const p=bd(s,c,d);return s.inclusive?p>=0:p>0})(r.endAt,To(r),o))})(a,e)}function qy(a){return a.collectionGroup||(a.path.length%2==1?a.path.lastSegment():a.path.get(a.path.length-2))}function iu(a){return(e,t)=>{let r=!1;for(const o of To(a)){const i=$y(o,e,t);if(i!==0)return i;r=r||o.field.isKeyField()}return 0}}function $y(a,e,t){const r=a.field.isKeyField()?$.comparator(e.key,t.key):(function(i,s,c){const d=s.data.field(i),p=c.data.field(i);return d!==null&&p!==null?Xa(d,p):J(42886)})(a.field,e,t);switch(a.dir){case"asc":return r;case"desc":return-1*r;default:return J(19790,{direction:a.dir})}}class ma{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){const t=this.mapKeyFn(e),r=this.inner[t];if(r!==void 0){for(const[o,i]of r)if(this.equalsFn(o,e))return i}}has(e){return this.get(e)!==void 0}set(e,t){const r=this.mapKeyFn(e),o=this.inner[r];if(o===void 0)return this.inner[r]=[[e,t]],void this.innerSize++;for(let i=0;i<o.length;i++)if(this.equalsFn(o[i][0],e))return void(o[i]=[e,t]);o.push([e,t]),this.innerSize++}delete(e){const t=this.mapKeyFn(e),r=this.inner[t];if(r===void 0)return!1;for(let o=0;o<r.length;o++)if(this.equalsFn(r[o][0],e))return r.length===1?delete this.inner[t]:r.splice(o,1),this.innerSize--,!0;return!1}forEach(e){Wr(this.inner,((t,r)=>{for(const[o,i]of r)e(o,i)}))}isEmpty(){return zh(this.inner)}size(){return this.innerSize}}const Qy=new _e($.comparator);function dr(){return Qy}const nu=new _e($.comparator);function Ao(...a){let e=nu;for(const t of a)e=e.insert(t.key,t);return e}function su(a){let e=nu;return a.forEach(((t,r)=>e=e.insert(t,r.overlayedDocument))),e}function ra(){return Vo()}function lu(){return Vo()}function Vo(){return new ma((a=>a.toString()),((a,e)=>a.isEqual(e)))}const Ky=new _e($.comparator),Yy=new ze($.comparator);function le(...a){let e=Yy;for(const t of a)e=e.add(t);return e}const Jy=new ze(se);function ev(){return Jy}function pl(a,e){if(a.useProto3Json){if(isNaN(e))return{doubleValue:"NaN"};if(e===1/0)return{doubleValue:"Infinity"};if(e===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Wi(e)?"-0":e}}function cu(a){return{integerValue:""+a}}function du(a,e){return Cy(e)?cu(e):pl(a,e)}class hn{constructor(){this._=void 0}}function tv(a,e,t){return a instanceof Zo?(function(o,i){const s={fields:{[Hh]:{stringValue:Lh},[Zh]:{timestampValue:{seconds:o.seconds,nanos:o.nanoseconds}}}};return i&&nl(i)&&(i=cn(i)),i&&(s.fields[Xh]=i),{mapValue:s}})(t,e):a instanceof qo?hu(a,e):a instanceof $o?uu(a,e):(function(o,i){const s=pu(o,i),c=jd(s)+jd(o.Ae);return Ps(s)&&Ps(o.Ae)?cu(c):pl(o.serializer,c)})(a,e)}function rv(a,e,t){return a instanceof qo?hu(a,e):a instanceof $o?uu(a,e):t}function pu(a,e){return a instanceof Qo?(function(r){return Ps(r)||(function(i){return!!i&&"doubleValue"in i})(r)})(e)?e:{integerValue:0}:null}class Zo extends hn{}class qo extends hn{constructor(e){super(),this.elements=e}}function hu(a,e){const t=mu(e);for(const r of a.elements)t.some((o=>rr(o,r)))||t.push(r);return{arrayValue:{values:t}}}class $o extends hn{constructor(e){super(),this.elements=e}}function uu(a,e){let t=mu(e);for(const r of a.elements)t=t.filter((o=>!rr(o,r)));return{arrayValue:{values:t}}}class Qo extends hn{constructor(e,t){super(),this.serializer=e,this.Ae=t}}function jd(a){return Ie(a.integerValue||a.doubleValue)}function mu(a){return sl(a)&&a.arrayValue.values?a.arrayValue.values.slice():[]}class gu{constructor(e,t){this.field=e,this.transform=t}}function av(a,e){return a.field.isEqual(e.field)&&(function(r,o){return r instanceof qo&&o instanceof qo||r instanceof $o&&o instanceof $o?Ha(r.elements,o.elements,rr):r instanceof Qo&&o instanceof Qo?rr(r.Ae,o.Ae):r instanceof Zo&&o instanceof Zo})(a.transform,e.transform)}class ov{constructor(e,t){this.version=e,this.transformResults=t}}class Mt{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new Mt}static exists(e){return new Mt(void 0,e)}static updateTime(e){return new Mt(e)}get isNone(){return this.updateTime===void 0&&this.exists===void 0}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function ki(a,e){return a.updateTime!==void 0?e.isFoundDocument()&&e.version.isEqual(a.updateTime):a.exists===void 0||a.exists===e.isFoundDocument()}class un{}function fu(a,e){if(!a.hasLocalMutations||e&&e.fields.length===0)return null;if(e===null)return a.isNoDocument()?new hl(a.key,Mt.none()):new Jo(a.key,a.data,Mt.none());{const t=a.data,r=pt.empty();let o=new ze(qe.comparator);for(let i of e.fields)if(!o.has(i)){let s=t.field(i);s===null&&i.length>1&&(i=i.popLast(),s=t.field(i)),s===null?r.delete(i):r.set(i,s),o=o.add(i)}return new Gr(a.key,r,new jt(o.toArray()),Mt.none())}}function iv(a,e,t){a instanceof Jo?(function(o,i,s){const c=o.value.clone(),d=_d(o.fieldTransforms,i,s.transformResults);c.setAll(d),i.convertToFoundDocument(s.version,c).setHasCommittedMutations()})(a,e,t):a instanceof Gr?(function(o,i,s){if(!ki(o.precondition,i))return void i.convertToUnknownDocument(s.version);const c=_d(o.fieldTransforms,i,s.transformResults),d=i.data;d.setAll(yu(o)),d.setAll(c),i.convertToFoundDocument(s.version,d).setHasCommittedMutations()})(a,e,t):(function(o,i,s){i.convertToNoDocument(s.version).setHasCommittedMutations()})(0,e,t)}function wo(a,e,t,r){return a instanceof Jo?(function(i,s,c,d){if(!ki(i.precondition,s))return c;const p=i.value.clone(),h=Cd(i.fieldTransforms,d,s);return p.setAll(h),s.convertToFoundDocument(s.version,p).setHasLocalMutations(),null})(a,e,t,r):a instanceof Gr?(function(i,s,c,d){if(!ki(i.precondition,s))return c;const p=Cd(i.fieldTransforms,d,s),h=s.data;return h.setAll(yu(i)),h.setAll(p),s.convertToFoundDocument(s.version,h).setHasLocalMutations(),c===null?null:c.unionWith(i.fieldMask.fields).unionWith(i.fieldTransforms.map((m=>m.field)))})(a,e,t,r):(function(i,s,c){return ki(i.precondition,s)?(s.convertToNoDocument(s.version).setHasLocalMutations(),null):c})(a,e,t)}function nv(a,e){let t=null;for(const r of a.fieldTransforms){const o=e.data.field(r.field),i=pu(r.transform,o||null);i!=null&&(t===null&&(t=pt.empty()),t.set(r.field,i))}return t||null}function Ed(a,e){return a.type===e.type&&!!a.key.isEqual(e.key)&&!!a.precondition.isEqual(e.precondition)&&!!(function(r,o){return r===void 0&&o===void 0||!(!r||!o)&&Ha(r,o,((i,s)=>av(i,s)))})(a.fieldTransforms,e.fieldTransforms)&&(a.type===0?a.value.isEqual(e.value):a.type!==1||a.data.isEqual(e.data)&&a.fieldMask.isEqual(e.fieldMask))}class Jo extends un{constructor(e,t,r,o=[]){super(),this.key=e,this.value=t,this.precondition=r,this.fieldTransforms=o,this.type=0}getFieldMask(){return null}}class Gr extends un{constructor(e,t,r,o,i=[]){super(),this.key=e,this.data=t,this.fieldMask=r,this.precondition=o,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function yu(a){const e=new Map;return a.fieldMask.fields.forEach((t=>{if(!t.isEmpty()){const r=a.data.field(t);e.set(t,r)}})),e}function _d(a,e,t){const r=new Map;he(a.length===t.length,32656,{Re:t.length,Ve:a.length});for(let o=0;o<t.length;o++){const i=a[o],s=i.transform,c=e.data.field(i.field);r.set(i.field,rv(s,c,t[o]))}return r}function Cd(a,e,t){const r=new Map;for(const o of a){const i=o.transform,s=t.data.field(o.field);r.set(o.field,tv(i,s,e))}return r}class hl extends un{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=2,this.fieldTransforms=[]}getFieldMask(){return null}}class sv extends un{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=3,this.fieldTransforms=[]}getFieldMask(){return null}}class lv{constructor(e,t,r,o){this.batchId=e,this.localWriteTime=t,this.baseMutations=r,this.mutations=o}applyToRemoteDocument(e,t){const r=t.mutationResults;for(let o=0;o<this.mutations.length;o++){const i=this.mutations[o];i.key.isEqual(e.key)&&iv(i,e,r[o])}}applyToLocalView(e,t){for(const r of this.baseMutations)r.key.isEqual(e.key)&&(t=wo(r,e,t,this.localWriteTime));for(const r of this.mutations)r.key.isEqual(e.key)&&(t=wo(r,e,t,this.localWriteTime));return t}applyToLocalDocumentSet(e,t){const r=lu();return this.mutations.forEach((o=>{const i=e.get(o.key),s=i.overlayedDocument;let c=this.applyToLocalView(s,i.mutatedFields);c=t.has(o.key)?null:c;const d=fu(s,c);d!==null&&r.set(o.key,d),s.isValidDocument()||s.convertToNoDocument(te.min())})),r}keys(){return this.mutations.reduce(((e,t)=>e.add(t.key)),le())}isEqual(e){return this.batchId===e.batchId&&Ha(this.mutations,e.mutations,((t,r)=>Ed(t,r)))&&Ha(this.baseMutations,e.baseMutations,((t,r)=>Ed(t,r)))}}class ul{constructor(e,t,r,o){this.batch=e,this.commitVersion=t,this.mutationResults=r,this.docVersions=o}static from(e,t,r){he(e.mutations.length===r.length,58842,{me:e.mutations.length,fe:r.length});let o=(function(){return Ky})();const i=e.mutations;for(let s=0;s<i.length;s++)o=o.insert(i[s].key,r[s].version);return new ul(e,t,r,o)}}class cv{constructor(e,t){this.largestBatchId=e,this.mutation=t}getKey(){return this.mutation.key}isEqual(e){return e!==null&&this.mutation===e.mutation}toString(){return`Overlay{
|
|
114
|
+
largestBatchId: ${this.largestBatchId},
|
|
115
|
+
mutation: ${this.mutation.toString()}
|
|
116
|
+
}`}}class dv{constructor(e,t){this.count=e,this.unchangedNames=t}}var Be,de;function pv(a){switch(a){case M.OK:return J(64938);case M.CANCELLED:case M.UNKNOWN:case M.DEADLINE_EXCEEDED:case M.RESOURCE_EXHAUSTED:case M.INTERNAL:case M.UNAVAILABLE:case M.UNAUTHENTICATED:return!1;case M.INVALID_ARGUMENT:case M.NOT_FOUND:case M.ALREADY_EXISTS:case M.PERMISSION_DENIED:case M.FAILED_PRECONDITION:case M.ABORTED:case M.OUT_OF_RANGE:case M.UNIMPLEMENTED:case M.DATA_LOSS:return!0;default:return J(15467,{code:a})}}function vu(a){if(a===void 0)return cr("GRPC error has no .code"),M.UNKNOWN;switch(a){case Be.OK:return M.OK;case Be.CANCELLED:return M.CANCELLED;case Be.UNKNOWN:return M.UNKNOWN;case Be.DEADLINE_EXCEEDED:return M.DEADLINE_EXCEEDED;case Be.RESOURCE_EXHAUSTED:return M.RESOURCE_EXHAUSTED;case Be.INTERNAL:return M.INTERNAL;case Be.UNAVAILABLE:return M.UNAVAILABLE;case Be.UNAUTHENTICATED:return M.UNAUTHENTICATED;case Be.INVALID_ARGUMENT:return M.INVALID_ARGUMENT;case Be.NOT_FOUND:return M.NOT_FOUND;case Be.ALREADY_EXISTS:return M.ALREADY_EXISTS;case Be.PERMISSION_DENIED:return M.PERMISSION_DENIED;case Be.FAILED_PRECONDITION:return M.FAILED_PRECONDITION;case Be.ABORTED:return M.ABORTED;case Be.OUT_OF_RANGE:return M.OUT_OF_RANGE;case Be.UNIMPLEMENTED:return M.UNIMPLEMENTED;case Be.DATA_LOSS:return M.DATA_LOSS;default:return J(39323,{code:a})}}(de=Be||(Be={}))[de.OK=0]="OK",de[de.CANCELLED=1]="CANCELLED",de[de.UNKNOWN=2]="UNKNOWN",de[de.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",de[de.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",de[de.NOT_FOUND=5]="NOT_FOUND",de[de.ALREADY_EXISTS=6]="ALREADY_EXISTS",de[de.PERMISSION_DENIED=7]="PERMISSION_DENIED",de[de.UNAUTHENTICATED=16]="UNAUTHENTICATED",de[de.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",de[de.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",de[de.ABORTED=10]="ABORTED",de[de.OUT_OF_RANGE=11]="OUT_OF_RANGE",de[de.UNIMPLEMENTED=12]="UNIMPLEMENTED",de[de.INTERNAL=13]="INTERNAL",de[de.UNAVAILABLE=14]="UNAVAILABLE",de[de.DATA_LOSS=15]="DATA_LOSS";function hv(){return new TextEncoder}const uv=new Er([4294967295,4294967295],0);function kd(a){const e=hv().encode(a),t=new Th;return t.update(e),new Uint8Array(t.digest())}function Rd(a){const e=new DataView(a.buffer),t=e.getUint32(0,!0),r=e.getUint32(4,!0),o=e.getUint32(8,!0),i=e.getUint32(12,!0);return[new Er([t,r],0),new Er([o,i],0)]}class ml{constructor(e,t,r){if(this.bitmap=e,this.padding=t,this.hashCount=r,t<0||t>=8)throw new jo(`Invalid padding: ${t}`);if(r<0)throw new jo(`Invalid hash count: ${r}`);if(e.length>0&&this.hashCount===0)throw new jo(`Invalid hash count: ${r}`);if(e.length===0&&t!==0)throw new jo(`Invalid padding when bitmap length is 0: ${t}`);this.ge=8*e.length-t,this.pe=Er.fromNumber(this.ge)}ye(e,t,r){let o=e.add(t.multiply(Er.fromNumber(r)));return o.compare(uv)===1&&(o=new Er([o.getBits(0),o.getBits(1)],0)),o.modulo(this.pe).toNumber()}we(e){return!!(this.bitmap[Math.floor(e/8)]&1<<e%8)}mightContain(e){if(this.ge===0)return!1;const t=kd(e),[r,o]=Rd(t);for(let i=0;i<this.hashCount;i++){const s=this.ye(r,o,i);if(!this.we(s))return!1}return!0}static create(e,t,r){const o=e%8==0?0:8-e%8,i=new Uint8Array(Math.ceil(e/8)),s=new ml(i,o,t);return r.forEach((c=>s.insert(c))),s}insert(e){if(this.ge===0)return;const t=kd(e),[r,o]=Rd(t);for(let i=0;i<this.hashCount;i++){const s=this.ye(r,o,i);this.Se(s)}}Se(e){const t=Math.floor(e/8),r=e%8;this.bitmap[t]|=1<<r}}class jo extends Error{constructor(){super(...arguments),this.name="BloomFilterError"}}class mn{constructor(e,t,r,o,i){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=r,this.documentUpdates=o,this.resolvedLimboDocuments=i}static createSynthesizedRemoteEventForCurrentChange(e,t,r){const o=new Map;return o.set(e,ei.createSynthesizedTargetChangeForCurrentChange(e,t,r)),new mn(te.min(),o,new _e(se),dr(),le())}}class ei{constructor(e,t,r,o,i){this.resumeToken=e,this.current=t,this.addedDocuments=r,this.modifiedDocuments=o,this.removedDocuments=i}static createSynthesizedTargetChangeForCurrentChange(e,t,r){return new ei(r,t,le(),le(),le())}}class Ri{constructor(e,t,r,o){this.be=e,this.removedTargetIds=t,this.key=r,this.De=o}}class Su{constructor(e,t){this.targetId=e,this.Ce=t}}class xu{constructor(e,t,r=Qe.EMPTY_BYTE_STRING,o=null){this.state=e,this.targetIds=t,this.resumeToken=r,this.cause=o}}class Td{constructor(){this.ve=0,this.Fe=Vd(),this.Me=Qe.EMPTY_BYTE_STRING,this.xe=!1,this.Oe=!0}get current(){return this.xe}get resumeToken(){return this.Me}get Ne(){return this.ve!==0}get Be(){return this.Oe}Le(e){e.approximateByteSize()>0&&(this.Oe=!0,this.Me=e)}ke(){let e=le(),t=le(),r=le();return this.Fe.forEach(((o,i)=>{switch(i){case 0:e=e.add(o);break;case 2:t=t.add(o);break;case 1:r=r.add(o);break;default:J(38017,{changeType:i})}})),new ei(this.Me,this.xe,e,t,r)}qe(){this.Oe=!1,this.Fe=Vd()}Qe(e,t){this.Oe=!0,this.Fe=this.Fe.insert(e,t)}$e(e){this.Oe=!0,this.Fe=this.Fe.remove(e)}Ue(){this.ve+=1}Ke(){this.ve-=1,he(this.ve>=0,3241,{ve:this.ve})}We(){this.Oe=!0,this.xe=!0}}class mv{constructor(e){this.Ge=e,this.ze=new Map,this.je=dr(),this.Je=xi(),this.He=xi(),this.Ye=new _e(se)}Ze(e){for(const t of e.be)e.De&&e.De.isFoundDocument()?this.Xe(t,e.De):this.et(t,e.key,e.De);for(const t of e.removedTargetIds)this.et(t,e.key,e.De)}tt(e){this.forEachTarget(e,(t=>{const r=this.nt(t);switch(e.state){case 0:this.rt(t)&&r.Le(e.resumeToken);break;case 1:r.Ke(),r.Ne||r.qe(),r.Le(e.resumeToken);break;case 2:r.Ke(),r.Ne||this.removeTarget(t);break;case 3:this.rt(t)&&(r.We(),r.Le(e.resumeToken));break;case 4:this.rt(t)&&(this.it(t),r.Le(e.resumeToken));break;default:J(56790,{state:e.state})}}))}forEachTarget(e,t){e.targetIds.length>0?e.targetIds.forEach(t):this.ze.forEach(((r,o)=>{this.rt(o)&&t(o)}))}st(e){const t=e.targetId,r=e.Ce.count,o=this.ot(t);if(o){const i=o.target;if(As(i))if(r===0){const s=new $(i.path);this.et(t,s,et.newNoDocument(s,te.min()))}else he(r===1,20013,{expectedCount:r});else{const s=this._t(t);if(s!==r){const c=this.ut(e),d=c?this.ct(c,e,s):1;if(d!==0){this.it(t);const p=d===2?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Ye=this.Ye.insert(t,p)}}}}}ut(e){const t=e.Ce.unchangedNames;if(!t||!t.bits)return null;const{bits:{bitmap:r="",padding:o=0},hashCount:i=0}=t;let s,c;try{s=Ir(r).toUint8Array()}catch(d){if(d instanceof Oh)return La("Decoding the base64 bloom filter in existence filter failed ("+d.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw d}try{c=new ml(s,o,i)}catch(d){return La(d instanceof jo?"BloomFilter error: ":"Applying bloom filter failed: ",d),null}return c.ge===0?null:c}ct(e,t,r){return t.Ce.count===r-this.Pt(e,t.targetId)?0:2}Pt(e,t){const r=this.Ge.getRemoteKeysForTarget(t);let o=0;return r.forEach((i=>{const s=this.Ge.ht(),c=`projects/${s.projectId}/databases/${s.database}/documents/${i.path.canonicalString()}`;e.mightContain(c)||(this.et(t,i,null),o++)})),o}Tt(e){const t=new Map;this.ze.forEach(((i,s)=>{const c=this.ot(s);if(c){if(i.current&&As(c.target)){const d=new $(c.target.path);this.It(d).has(s)||this.Et(s,d)||this.et(s,d,et.newNoDocument(d,e))}i.Be&&(t.set(s,i.ke()),i.qe())}}));let r=le();this.He.forEach(((i,s)=>{let c=!0;s.forEachWhile((d=>{const p=this.ot(d);return!p||p.purpose==="TargetPurposeLimboResolution"||(c=!1,!1)})),c&&(r=r.add(i))})),this.je.forEach(((i,s)=>s.setReadTime(e)));const o=new mn(e,t,this.Ye,this.je,r);return this.je=dr(),this.Je=xi(),this.He=xi(),this.Ye=new _e(se),o}Xe(e,t){if(!this.rt(e))return;const r=this.Et(e,t.key)?2:0;this.nt(e).Qe(t.key,r),this.je=this.je.insert(t.key,t),this.Je=this.Je.insert(t.key,this.It(t.key).add(e)),this.He=this.He.insert(t.key,this.dt(t.key).add(e))}et(e,t,r){if(!this.rt(e))return;const o=this.nt(e);this.Et(e,t)?o.Qe(t,1):o.$e(t),this.He=this.He.insert(t,this.dt(t).delete(e)),this.He=this.He.insert(t,this.dt(t).add(e)),r&&(this.je=this.je.insert(t,r))}removeTarget(e){this.ze.delete(e)}_t(e){const t=this.nt(e).ke();return this.Ge.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}Ue(e){this.nt(e).Ue()}nt(e){let t=this.ze.get(e);return t||(t=new Td,this.ze.set(e,t)),t}dt(e){let t=this.He.get(e);return t||(t=new ze(se),this.He=this.He.insert(e,t)),t}It(e){let t=this.Je.get(e);return t||(t=new ze(se),this.Je=this.Je.insert(e,t)),t}rt(e){const t=this.ot(e)!==null;return t||L("WatchChangeAggregator","Detected inactive target",e),t}ot(e){const t=this.ze.get(e);return t&&t.Ne?null:this.Ge.At(e)}it(e){this.ze.set(e,new Td),this.Ge.getRemoteKeysForTarget(e).forEach((t=>{this.et(e,t,null)}))}Et(e,t){return this.Ge.getRemoteKeysForTarget(e).has(t)}}function xi(){return new _e($.comparator)}function Vd(){return new _e($.comparator)}const gv={asc:"ASCENDING",desc:"DESCENDING"},fv={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"},yv={and:"AND",or:"OR"};class vv{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function _s(a,e){return a.useProto3Json||ln(e)?e:{value:e}}function Li(a,e){return a.useProto3Json?`${new Date(1e3*e.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+e.nanoseconds).slice(-9)}Z`:{seconds:""+e.seconds,nanos:e.nanoseconds}}function bu(a,e){return a.useProto3Json?e.toBase64():e.toUint8Array()}function Sv(a,e){return Li(a,e.toTimestamp())}function Kt(a){return he(!!a,49232),te.fromTimestamp((function(t){const r=wr(t);return new xe(r.seconds,r.nanos)})(a))}function gl(a,e){return Cs(a,e).canonicalString()}function Cs(a,e){const t=(function(o){return new ve(["projects",o.projectId,"databases",o.database])})(a).child("documents");return e===void 0?t:t.child(e)}function Pu(a){const e=ve.fromString(a);return he(_u(e),10190,{key:e.toString()}),e}function ks(a,e){return gl(a.databaseId,e.path)}function Yn(a,e){const t=Pu(e);if(t.get(1)!==a.databaseId.projectId)throw new O(M.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+t.get(1)+" vs "+a.databaseId.projectId);if(t.get(3)!==a.databaseId.database)throw new O(M.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+t.get(3)+" vs "+a.databaseId.database);return new $(Au(t))}function Du(a,e){return gl(a.databaseId,e)}function xv(a){const e=Pu(a);return e.length===4?ve.emptyPath():Au(e)}function Rs(a){return new ve(["projects",a.databaseId.projectId,"databases",a.databaseId.database]).canonicalString()}function Au(a){return he(a.length>4&&a.get(4)==="documents",29091,{key:a.toString()}),a.popFirst(5)}function wd(a,e,t){return{name:ks(a,e),fields:t.value.mapValue.fields}}function bv(a,e){let t;if("targetChange"in e){e.targetChange;const r=(function(p){return p==="NO_CHANGE"?0:p==="ADD"?1:p==="REMOVE"?2:p==="CURRENT"?3:p==="RESET"?4:J(39313,{state:p})})(e.targetChange.targetChangeType||"NO_CHANGE"),o=e.targetChange.targetIds||[],i=(function(p,h){return p.useProto3Json?(he(h===void 0||typeof h=="string",58123),Qe.fromBase64String(h||"")):(he(h===void 0||h instanceof Buffer||h instanceof Uint8Array,16193),Qe.fromUint8Array(h||new Uint8Array))})(a,e.targetChange.resumeToken),s=e.targetChange.cause,c=s&&(function(p){const h=p.code===void 0?M.UNKNOWN:vu(p.code);return new O(h,p.message||"")})(s);t=new xu(r,o,i,c||null)}else if("documentChange"in e){e.documentChange;const r=e.documentChange;r.document,r.document.name,r.document.updateTime;const o=Yn(a,r.document.name),i=Kt(r.document.updateTime),s=r.document.createTime?Kt(r.document.createTime):te.min(),c=new pt({mapValue:{fields:r.document.fields}}),d=et.newFoundDocument(o,i,s,c),p=r.targetIds||[],h=r.removedTargetIds||[];t=new Ri(p,h,d.key,d)}else if("documentDelete"in e){e.documentDelete;const r=e.documentDelete;r.document;const o=Yn(a,r.document),i=r.readTime?Kt(r.readTime):te.min(),s=et.newNoDocument(o,i),c=r.removedTargetIds||[];t=new Ri([],c,s.key,s)}else if("documentRemove"in e){e.documentRemove;const r=e.documentRemove;r.document;const o=Yn(a,r.document),i=r.removedTargetIds||[];t=new Ri([],i,o,null)}else{if(!("filter"in e))return J(11601,{Rt:e});{e.filter;const r=e.filter;r.targetId;const{count:o=0,unchangedNames:i}=r,s=new dv(o,i),c=r.targetId;t=new Su(c,s)}}return t}function Pv(a,e){let t;if(e instanceof Jo)t={update:wd(a,e.key,e.value)};else if(e instanceof hl)t={delete:ks(a,e.key)};else if(e instanceof Gr)t={update:wd(a,e.key,e.data),updateMask:Tv(e.fieldMask)};else{if(!(e instanceof sv))return J(16599,{Vt:e.type});t={verify:ks(a,e.key)}}return e.fieldTransforms.length>0&&(t.updateTransforms=e.fieldTransforms.map((r=>(function(i,s){const c=s.transform;if(c instanceof Zo)return{fieldPath:s.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(c instanceof qo)return{fieldPath:s.field.canonicalString(),appendMissingElements:{values:c.elements}};if(c instanceof $o)return{fieldPath:s.field.canonicalString(),removeAllFromArray:{values:c.elements}};if(c instanceof Qo)return{fieldPath:s.field.canonicalString(),increment:c.Ae};throw J(20930,{transform:s.transform})})(0,r)))),e.precondition.isNone||(t.currentDocument=(function(o,i){return i.updateTime!==void 0?{updateTime:Sv(o,i.updateTime)}:i.exists!==void 0?{exists:i.exists}:J(27497)})(a,e.precondition)),t}function Dv(a,e){return a&&a.length>0?(he(e!==void 0,14353),a.map((t=>(function(o,i){let s=o.updateTime?Kt(o.updateTime):Kt(i);return s.isEqual(te.min())&&(s=Kt(i)),new ov(s,o.transformResults||[])})(t,e)))):[]}function Av(a,e){return{documents:[Du(a,e.path)]}}function jv(a,e){const t={structuredQuery:{}},r=e.path;let o;e.collectionGroup!==null?(o=r,t.structuredQuery.from=[{collectionId:e.collectionGroup,allDescendants:!0}]):(o=r.popLast(),t.structuredQuery.from=[{collectionId:r.lastSegment()}]),t.parent=Du(a,o);const i=(function(p){if(p.length!==0)return Eu(Wt.create(p,"and"))})(e.filters);i&&(t.structuredQuery.where=i);const s=(function(p){if(p.length!==0)return p.map((h=>(function(f){return{field:Ra(f.field),direction:Cv(f.dir)}})(h)))})(e.orderBy);s&&(t.structuredQuery.orderBy=s);const c=_s(a,e.limit);return c!==null&&(t.structuredQuery.limit=c),e.startAt&&(t.structuredQuery.startAt=(function(p){return{before:p.inclusive,values:p.position}})(e.startAt)),e.endAt&&(t.structuredQuery.endAt=(function(p){return{before:!p.inclusive,values:p.position}})(e.endAt)),{ft:t,parent:o}}function Ev(a){let e=xv(a.parent);const t=a.structuredQuery,r=t.from?t.from.length:0;let o=null;if(r>0){he(r===1,65062);const h=t.from[0];h.allDescendants?o=h.collectionId:e=e.child(h.collectionId)}let i=[];t.where&&(i=(function(m){const f=ju(m);return f instanceof Wt&&Jh(f)?f.getFilters():[f]})(t.where));let s=[];t.orderBy&&(s=(function(m){return m.map((f=>(function(P){return new Xo(Ta(P.field),(function(A){switch(A){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}})(P.direction))})(f)))})(t.orderBy));let c=null;t.limit&&(c=(function(m){let f;return f=typeof m=="object"?m.value:m,ln(f)?null:f})(t.limit));let d=null;t.startAt&&(d=(function(m){const f=!!m.before,v=m.values||[];return new Oi(v,f)})(t.startAt));let p=null;return t.endAt&&(p=(function(m){const f=!m.before,v=m.values||[];return new Oi(v,f)})(t.endAt)),Xy(e,o,s,i,c,"F",d,p)}function _v(a,e){const t=(function(o){switch(o){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return J(28987,{purpose:o})}})(e.purpose);return t==null?null:{"goog-listen-tags":t}}function ju(a){return a.unaryFilter!==void 0?(function(t){switch(t.unaryFilter.op){case"IS_NAN":const r=Ta(t.unaryFilter.field);return Me.create(r,"==",{doubleValue:NaN});case"IS_NULL":const o=Ta(t.unaryFilter.field);return Me.create(o,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const i=Ta(t.unaryFilter.field);return Me.create(i,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const s=Ta(t.unaryFilter.field);return Me.create(s,"!=",{nullValue:"NULL_VALUE"});case"OPERATOR_UNSPECIFIED":return J(61313);default:return J(60726)}})(a):a.fieldFilter!==void 0?(function(t){return Me.create(Ta(t.fieldFilter.field),(function(o){switch(o){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";case"OPERATOR_UNSPECIFIED":return J(58110);default:return J(50506)}})(t.fieldFilter.op),t.fieldFilter.value)})(a):a.compositeFilter!==void 0?(function(t){return Wt.create(t.compositeFilter.filters.map((r=>ju(r))),(function(o){switch(o){case"AND":return"and";case"OR":return"or";default:return J(1026)}})(t.compositeFilter.op))})(a):J(30097,{filter:a})}function Cv(a){return gv[a]}function kv(a){return fv[a]}function Rv(a){return yv[a]}function Ra(a){return{fieldPath:a.canonicalString()}}function Ta(a){return qe.fromServerFormat(a.fieldPath)}function Eu(a){return a instanceof Me?(function(t){if(t.op==="=="){if(xd(t.value))return{unaryFilter:{field:Ra(t.field),op:"IS_NAN"}};if(Sd(t.value))return{unaryFilter:{field:Ra(t.field),op:"IS_NULL"}}}else if(t.op==="!="){if(xd(t.value))return{unaryFilter:{field:Ra(t.field),op:"IS_NOT_NAN"}};if(Sd(t.value))return{unaryFilter:{field:Ra(t.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:Ra(t.field),op:kv(t.op),value:t.value}}})(a):a instanceof Wt?(function(t){const r=t.getFilters().map((o=>Eu(o)));return r.length===1?r[0]:{compositeFilter:{op:Rv(t.op),filters:r}}})(a):J(54877,{filter:a})}function Tv(a){const e=[];return a.fields.forEach((t=>e.push(t.canonicalString()))),{fieldPaths:e}}function _u(a){return a.length>=4&&a.get(0)==="projects"&&a.get(2)==="databases"}class Dr{constructor(e,t,r,o,i=te.min(),s=te.min(),c=Qe.EMPTY_BYTE_STRING,d=null){this.target=e,this.targetId=t,this.purpose=r,this.sequenceNumber=o,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=s,this.resumeToken=c,this.expectedCount=d}withSequenceNumber(e){return new Dr(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new Dr(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new Dr(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new Dr(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}class Vv{constructor(e){this.yt=e}}function wv(a){const e=Ev({parent:a.parent,structuredQuery:a.structuredQuery});return a.limitType==="LAST"?Es(e,e.limit,"L"):e}class Iv{constructor(){this.Cn=new Fv}addToCollectionParentIndex(e,t){return this.Cn.add(t),N.resolve()}getCollectionParents(e,t){return N.resolve(this.Cn.getEntries(t))}addFieldIndex(e,t){return N.resolve()}deleteFieldIndex(e,t){return N.resolve()}deleteAllFieldIndexes(e){return N.resolve()}createTargetIndexes(e,t){return N.resolve()}getDocumentsMatchingTarget(e,t){return N.resolve(null)}getIndexType(e,t){return N.resolve(0)}getFieldIndexes(e,t){return N.resolve([])}getNextCollectionGroupToUpdate(e){return N.resolve(null)}getMinOffset(e,t){return N.resolve(Vr.min())}getMinOffsetFromCollectionGroup(e,t){return N.resolve(Vr.min())}updateCollectionGroup(e,t,r){return N.resolve()}updateIndexEntries(e,t){return N.resolve()}}class Fv{constructor(){this.index={}}add(e){const t=e.lastSegment(),r=e.popLast(),o=this.index[t]||new ze(ve.comparator),i=!o.has(r);return this.index[t]=o.add(r),i}has(e){const t=e.lastSegment(),r=e.popLast(),o=this.index[t];return o&&o.has(r)}getEntries(e){return(this.index[e]||new ze(ve.comparator)).toArray()}}const Id={didRun:!1,sequenceNumbersCollected:0,targetsRemoved:0,documentsRemoved:0},Cu=41943040;class dt{static withCacheSize(e){return new dt(e,dt.DEFAULT_COLLECTION_PERCENTILE,dt.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}constructor(e,t,r){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=r}}dt.DEFAULT_COLLECTION_PERCENTILE=10,dt.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,dt.DEFAULT=new dt(Cu,dt.DEFAULT_COLLECTION_PERCENTILE,dt.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),dt.DISABLED=new dt(-1,0,0);class qa{constructor(e){this.ar=e}next(){return this.ar+=2,this.ar}static ur(){return new qa(0)}static cr(){return new qa(-1)}}const Fd="LruGarbageCollector",Bv=1048576;function Bd([a,e],[t,r]){const o=se(a,t);return o===0?se(e,r):o}class Uv{constructor(e){this.Ir=e,this.buffer=new ze(Bd),this.Er=0}dr(){return++this.Er}Ar(e){const t=[e,this.dr()];if(this.buffer.size<this.Ir)this.buffer=this.buffer.add(t);else{const r=this.buffer.last();Bd(t,r)<0&&(this.buffer=this.buffer.delete(r).add(t))}}get maxValue(){return this.buffer.last()[0]}}class Mv{constructor(e,t,r){this.garbageCollector=e,this.asyncQueue=t,this.localStore=r,this.Rr=null}start(){this.garbageCollector.params.cacheSizeCollectionThreshold!==-1&&this.Vr(6e4)}stop(){this.Rr&&(this.Rr.cancel(),this.Rr=null)}get started(){return this.Rr!==null}Vr(e){L(Fd,`Garbage collection scheduled in ${e}ms`),this.Rr=this.asyncQueue.enqueueAfterDelay("lru_garbage_collection",e,(async()=>{this.Rr=null;try{await this.localStore.collectGarbage(this.garbageCollector)}catch(t){Ya(t)?L(Fd,"Ignoring IndexedDB error during garbage collection: ",t):await Ka(t)}await this.Vr(3e5)}))}}class Nv{constructor(e,t){this.mr=e,this.params=t}calculateTargetCount(e,t){return this.mr.gr(e).next((r=>Math.floor(t/100*r)))}nthSequenceNumber(e,t){if(t===0)return N.resolve(sn.ce);const r=new Uv(t);return this.mr.forEachTarget(e,(o=>r.Ar(o.sequenceNumber))).next((()=>this.mr.pr(e,(o=>r.Ar(o))))).next((()=>r.maxValue))}removeTargets(e,t,r){return this.mr.removeTargets(e,t,r)}removeOrphanedDocuments(e,t){return this.mr.removeOrphanedDocuments(e,t)}collect(e,t){return this.params.cacheSizeCollectionThreshold===-1?(L("LruGarbageCollector","Garbage collection skipped; disabled"),N.resolve(Id)):this.getCacheSize(e).next((r=>r<this.params.cacheSizeCollectionThreshold?(L("LruGarbageCollector",`Garbage collection skipped; Cache size ${r} is lower than threshold ${this.params.cacheSizeCollectionThreshold}`),Id):this.yr(e,t)))}getCacheSize(e){return this.mr.getCacheSize(e)}yr(e,t){let r,o,i,s,c,d,p;const h=Date.now();return this.calculateTargetCount(e,this.params.percentileToCollect).next((m=>(m>this.params.maximumSequenceNumbersToCollect?(L("LruGarbageCollector",`Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${m}`),o=this.params.maximumSequenceNumbersToCollect):o=m,s=Date.now(),this.nthSequenceNumber(e,o)))).next((m=>(r=m,c=Date.now(),this.removeTargets(e,r,t)))).next((m=>(i=m,d=Date.now(),this.removeOrphanedDocuments(e,r)))).next((m=>(p=Date.now(),Ca()<=nr.DEBUG&&L("LruGarbageCollector",`LRU Garbage Collection
|
|
117
|
+
Counted targets in ${s-h}ms
|
|
118
|
+
Determined least recently used ${o} in `+(c-s)+`ms
|
|
119
|
+
Removed ${i} targets in `+(d-c)+`ms
|
|
120
|
+
Removed ${m} documents in `+(p-d)+`ms
|
|
121
|
+
Total Duration: ${p-h}ms`),N.resolve({didRun:!0,sequenceNumbersCollected:o,targetsRemoved:i,documentsRemoved:m}))))}}function Wv(a,e){return new Nv(a,e)}class Gv{constructor(){this.changes=new ma((e=>e.toString()),((e,t)=>e.isEqual(t))),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,et.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();const r=this.changes.get(t);return r!==void 0?N.resolve(r):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}class zv{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}class Ov{constructor(e,t,r,o){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=r,this.indexManager=o}getDocument(e,t){let r=null;return this.documentOverlayCache.getOverlay(e,t).next((o=>(r=o,this.remoteDocumentCache.getEntry(e,t)))).next((o=>(r!==null&&wo(r.mutation,o,jt.empty(),xe.now()),o)))}getDocuments(e,t){return this.remoteDocumentCache.getEntries(e,t).next((r=>this.getLocalViewOfDocuments(e,r,le()).next((()=>r))))}getLocalViewOfDocuments(e,t,r=le()){const o=ra();return this.populateOverlays(e,o,t).next((()=>this.computeViews(e,t,o,r).next((i=>{let s=Ao();return i.forEach(((c,d)=>{s=s.insert(c,d.overlayedDocument)})),s}))))}getOverlayedDocuments(e,t){const r=ra();return this.populateOverlays(e,r,t).next((()=>this.computeViews(e,t,r,le())))}populateOverlays(e,t,r){const o=[];return r.forEach((i=>{t.has(i)||o.push(i)})),this.documentOverlayCache.getOverlays(e,o).next((i=>{i.forEach(((s,c)=>{t.set(s,c)}))}))}computeViews(e,t,r,o){let i=dr();const s=Vo(),c=(function(){return Vo()})();return t.forEach(((d,p)=>{const h=r.get(p.key);o.has(p.key)&&(h===void 0||h.mutation instanceof Gr)?i=i.insert(p.key,p):h!==void 0?(s.set(p.key,h.mutation.getFieldMask()),wo(h.mutation,p,h.mutation.getFieldMask(),xe.now())):s.set(p.key,jt.empty())})),this.recalculateAndSaveOverlays(e,i).next((d=>(d.forEach(((p,h)=>s.set(p,h))),t.forEach(((p,h)=>c.set(p,new zv(h,s.get(p)??null)))),c)))}recalculateAndSaveOverlays(e,t){const r=Vo();let o=new _e(((s,c)=>s-c)),i=le();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,t).next((s=>{for(const c of s)c.keys().forEach((d=>{const p=t.get(d);if(p===null)return;let h=r.get(d)||jt.empty();h=c.applyToLocalView(p,h),r.set(d,h);const m=(o.get(c.batchId)||le()).add(d);o=o.insert(c.batchId,m)}))})).next((()=>{const s=[],c=o.getReverseIterator();for(;c.hasNext();){const d=c.getNext(),p=d.key,h=d.value,m=lu();h.forEach((f=>{if(!i.has(f)){const v=fu(t.get(f),r.get(f));v!==null&&m.set(f,v),i=i.add(f)}})),s.push(this.documentOverlayCache.saveOverlays(e,p,m))}return N.waitFor(s)})).next((()=>r))}recalculateAndSaveOverlaysForDocumentKeys(e,t){return this.remoteDocumentCache.getEntries(e,t).next((r=>this.recalculateAndSaveOverlays(e,r)))}getDocumentsMatchingQuery(e,t,r,o){return(function(s){return $.isDocumentKey(s.path)&&s.collectionGroup===null&&s.filters.length===0})(t)?this.getDocumentsMatchingDocumentQuery(e,t.path):au(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,r,o):this.getDocumentsMatchingCollectionQuery(e,t,r,o)}getNextDocuments(e,t,r,o){return this.remoteDocumentCache.getAllFromCollectionGroup(e,t,r,o).next((i=>{const s=o-i.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,t,r.largestBatchId,o-i.size):N.resolve(ra());let c=zo,d=i;return s.next((p=>N.forEach(p,((h,m)=>(c<m.largestBatchId&&(c=m.largestBatchId),i.get(h)?N.resolve():this.remoteDocumentCache.getEntry(e,h).next((f=>{d=d.insert(h,f)}))))).next((()=>this.populateOverlays(e,p,i))).next((()=>this.computeViews(e,d,p,le()))).next((h=>({batchId:c,changes:su(h)})))))}))}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new $(t)).next((r=>{let o=Ao();return r.isFoundDocument()&&(o=o.insert(r.key,r)),o}))}getDocumentsMatchingCollectionGroupQuery(e,t,r,o){const i=t.collectionGroup;let s=Ao();return this.indexManager.getCollectionParents(e,i).next((c=>N.forEach(c,(d=>{const p=(function(m,f){return new Ja(f,null,m.explicitOrderBy.slice(),m.filters.slice(),m.limit,m.limitType,m.startAt,m.endAt)})(t,d.child(i));return this.getDocumentsMatchingCollectionQuery(e,p,r,o).next((h=>{h.forEach(((m,f)=>{s=s.insert(m,f)}))}))})).next((()=>s))))}getDocumentsMatchingCollectionQuery(e,t,r,o){let i;return this.documentOverlayCache.getOverlaysForCollection(e,t.path,r.largestBatchId).next((s=>(i=s,this.remoteDocumentCache.getDocumentsMatchingQuery(e,t,r,i,o)))).next((s=>{i.forEach(((d,p)=>{const h=p.getKey();s.get(h)===null&&(s=s.insert(h,et.newInvalidDocument(h)))}));let c=Ao();return s.forEach(((d,p)=>{const h=i.get(d);h!==void 0&&wo(h.mutation,p,jt.empty(),xe.now()),pn(t,p)&&(c=c.insert(d,p))})),c}))}}class Lv{constructor(e){this.serializer=e,this.Lr=new Map,this.kr=new Map}getBundleMetadata(e,t){return N.resolve(this.Lr.get(t))}saveBundleMetadata(e,t){return this.Lr.set(t.id,(function(o){return{id:o.id,version:o.version,createTime:Kt(o.createTime)}})(t)),N.resolve()}getNamedQuery(e,t){return N.resolve(this.kr.get(t))}saveNamedQuery(e,t){return this.kr.set(t.name,(function(o){return{name:o.name,query:wv(o.bundledQuery),readTime:Kt(o.readTime)}})(t)),N.resolve()}}class Hv{constructor(){this.overlays=new _e($.comparator),this.qr=new Map}getOverlay(e,t){return N.resolve(this.overlays.get(t))}getOverlays(e,t){const r=ra();return N.forEach(t,(o=>this.getOverlay(e,o).next((i=>{i!==null&&r.set(o,i)})))).next((()=>r))}saveOverlays(e,t,r){return r.forEach(((o,i)=>{this.St(e,t,i)})),N.resolve()}removeOverlaysForBatchId(e,t,r){const o=this.qr.get(r);return o!==void 0&&(o.forEach((i=>this.overlays=this.overlays.remove(i))),this.qr.delete(r)),N.resolve()}getOverlaysForCollection(e,t,r){const o=ra(),i=t.length+1,s=new $(t.child("")),c=this.overlays.getIteratorFrom(s);for(;c.hasNext();){const d=c.getNext().value,p=d.getKey();if(!t.isPrefixOf(p.path))break;p.path.length===i&&d.largestBatchId>r&&o.set(d.getKey(),d)}return N.resolve(o)}getOverlaysForCollectionGroup(e,t,r,o){let i=new _e(((p,h)=>p-h));const s=this.overlays.getIterator();for(;s.hasNext();){const p=s.getNext().value;if(p.getKey().getCollectionGroup()===t&&p.largestBatchId>r){let h=i.get(p.largestBatchId);h===null&&(h=ra(),i=i.insert(p.largestBatchId,h)),h.set(p.getKey(),p)}}const c=ra(),d=i.getIterator();for(;d.hasNext()&&(d.getNext().value.forEach(((p,h)=>c.set(p,h))),!(c.size()>=o)););return N.resolve(c)}St(e,t,r){const o=this.overlays.get(r.key);if(o!==null){const s=this.qr.get(o.largestBatchId).delete(r.key);this.qr.set(o.largestBatchId,s)}this.overlays=this.overlays.insert(r.key,new cv(t,r));let i=this.qr.get(t);i===void 0&&(i=le(),this.qr.set(t,i)),this.qr.set(t,i.add(r.key))}}class Xv{constructor(){this.sessionToken=Qe.EMPTY_BYTE_STRING}getSessionToken(e){return N.resolve(this.sessionToken)}setSessionToken(e,t){return this.sessionToken=t,N.resolve()}}class fl{constructor(){this.Qr=new ze(He.$r),this.Ur=new ze(He.Kr)}isEmpty(){return this.Qr.isEmpty()}addReference(e,t){const r=new He(e,t);this.Qr=this.Qr.add(r),this.Ur=this.Ur.add(r)}Wr(e,t){e.forEach((r=>this.addReference(r,t)))}removeReference(e,t){this.Gr(new He(e,t))}zr(e,t){e.forEach((r=>this.removeReference(r,t)))}jr(e){const t=new $(new ve([])),r=new He(t,e),o=new He(t,e+1),i=[];return this.Ur.forEachInRange([r,o],(s=>{this.Gr(s),i.push(s.key)})),i}Jr(){this.Qr.forEach((e=>this.Gr(e)))}Gr(e){this.Qr=this.Qr.delete(e),this.Ur=this.Ur.delete(e)}Hr(e){const t=new $(new ve([])),r=new He(t,e),o=new He(t,e+1);let i=le();return this.Ur.forEachInRange([r,o],(s=>{i=i.add(s.key)})),i}containsKey(e){const t=new He(e,0),r=this.Qr.firstAfterOrEqual(t);return r!==null&&e.isEqual(r.key)}}class He{constructor(e,t){this.key=e,this.Yr=t}static $r(e,t){return $.comparator(e.key,t.key)||se(e.Yr,t.Yr)}static Kr(e,t){return se(e.Yr,t.Yr)||$.comparator(e.key,t.key)}}class Zv{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.tr=1,this.Zr=new ze(He.$r)}checkEmpty(e){return N.resolve(this.mutationQueue.length===0)}addMutationBatch(e,t,r,o){const i=this.tr;this.tr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const s=new lv(i,t,r,o);this.mutationQueue.push(s);for(const c of o)this.Zr=this.Zr.add(new He(c.key,i)),this.indexManager.addToCollectionParentIndex(e,c.key.path.popLast());return N.resolve(s)}lookupMutationBatch(e,t){return N.resolve(this.Xr(t))}getNextMutationBatchAfterBatchId(e,t){const r=t+1,o=this.ei(r),i=o<0?0:o;return N.resolve(this.mutationQueue.length>i?this.mutationQueue[i]:null)}getHighestUnacknowledgedBatchId(){return N.resolve(this.mutationQueue.length===0?il:this.tr-1)}getAllMutationBatches(e){return N.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const r=new He(t,0),o=new He(t,Number.POSITIVE_INFINITY),i=[];return this.Zr.forEachInRange([r,o],(s=>{const c=this.Xr(s.Yr);i.push(c)})),N.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new ze(se);return t.forEach((o=>{const i=new He(o,0),s=new He(o,Number.POSITIVE_INFINITY);this.Zr.forEachInRange([i,s],(c=>{r=r.add(c.Yr)}))})),N.resolve(this.ti(r))}getAllMutationBatchesAffectingQuery(e,t){const r=t.path,o=r.length+1;let i=r;$.isDocumentKey(i)||(i=i.child(""));const s=new He(new $(i),0);let c=new ze(se);return this.Zr.forEachWhile((d=>{const p=d.key.path;return!!r.isPrefixOf(p)&&(p.length===o&&(c=c.add(d.Yr)),!0)}),s),N.resolve(this.ti(c))}ti(e){const t=[];return e.forEach((r=>{const o=this.Xr(r);o!==null&&t.push(o)})),t}removeMutationBatch(e,t){he(this.ni(t.batchId,"removed")===0,55003),this.mutationQueue.shift();let r=this.Zr;return N.forEach(t.mutations,(o=>{const i=new He(o.key,t.batchId);return r=r.delete(i),this.referenceDelegate.markPotentiallyOrphaned(e,o.key)})).next((()=>{this.Zr=r}))}ir(e){}containsKey(e,t){const r=new He(t,0),o=this.Zr.firstAfterOrEqual(r);return N.resolve(t.isEqual(o&&o.key))}performConsistencyCheck(e){return this.mutationQueue.length,N.resolve()}ni(e,t){return this.ei(e)}ei(e){return this.mutationQueue.length===0?0:e-this.mutationQueue[0].batchId}Xr(e){const t=this.ei(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class qv{constructor(e){this.ri=e,this.docs=(function(){return new _e($.comparator)})(),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const r=t.key,o=this.docs.get(r),i=o?o.size:0,s=this.ri(t);return this.docs=this.docs.insert(r,{document:t.mutableCopy(),size:s}),this.size+=s-i,this.indexManager.addToCollectionParentIndex(e,r.path.popLast())}removeEntry(e){const t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const r=this.docs.get(t);return N.resolve(r?r.document.mutableCopy():et.newInvalidDocument(t))}getEntries(e,t){let r=dr();return t.forEach((o=>{const i=this.docs.get(o);r=r.insert(o,i?i.document.mutableCopy():et.newInvalidDocument(o))})),N.resolve(r)}getDocumentsMatchingQuery(e,t,r,o){let i=dr();const s=t.path,c=new $(s.child("__id-9223372036854775808__")),d=this.docs.getIteratorFrom(c);for(;d.hasNext();){const{key:p,value:{document:h}}=d.getNext();if(!s.isPrefixOf(p.path))break;p.path.length>s.length+1||Ay(Dy(h),r)<=0||(o.has(h.key)||pn(t,h))&&(i=i.insert(h.key,h.mutableCopy()))}return N.resolve(i)}getAllFromCollectionGroup(e,t,r,o){J(9500)}ii(e,t){return N.forEach(this.docs,(r=>t(r)))}newChangeBuffer(e){return new $v(this)}getSize(e){return N.resolve(this.size)}}class $v extends Gv{constructor(e){super(),this.Nr=e}applyChanges(e){const t=[];return this.changes.forEach(((r,o)=>{o.isValidDocument()?t.push(this.Nr.addEntry(e,o)):this.Nr.removeEntry(r)})),N.waitFor(t)}getFromCache(e,t){return this.Nr.getEntry(e,t)}getAllFromCache(e,t){return this.Nr.getEntries(e,t)}}class Qv{constructor(e){this.persistence=e,this.si=new ma((t=>ll(t)),cl),this.lastRemoteSnapshotVersion=te.min(),this.highestTargetId=0,this.oi=0,this._i=new fl,this.targetCount=0,this.ai=qa.ur()}forEachTarget(e,t){return this.si.forEach(((r,o)=>t(o))),N.resolve()}getLastRemoteSnapshotVersion(e){return N.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return N.resolve(this.oi)}allocateTargetId(e){return this.highestTargetId=this.ai.next(),N.resolve(this.highestTargetId)}setTargetsMetadata(e,t,r){return r&&(this.lastRemoteSnapshotVersion=r),t>this.oi&&(this.oi=t),N.resolve()}Pr(e){this.si.set(e.target,e);const t=e.targetId;t>this.highestTargetId&&(this.ai=new qa(t),this.highestTargetId=t),e.sequenceNumber>this.oi&&(this.oi=e.sequenceNumber)}addTargetData(e,t){return this.Pr(t),this.targetCount+=1,N.resolve()}updateTargetData(e,t){return this.Pr(t),N.resolve()}removeTargetData(e,t){return this.si.delete(t.target),this._i.jr(t.targetId),this.targetCount-=1,N.resolve()}removeTargets(e,t,r){let o=0;const i=[];return this.si.forEach(((s,c)=>{c.sequenceNumber<=t&&r.get(c.targetId)===null&&(this.si.delete(s),i.push(this.removeMatchingKeysForTargetId(e,c.targetId)),o++)})),N.waitFor(i).next((()=>o))}getTargetCount(e){return N.resolve(this.targetCount)}getTargetData(e,t){const r=this.si.get(t)||null;return N.resolve(r)}addMatchingKeys(e,t,r){return this._i.Wr(t,r),N.resolve()}removeMatchingKeys(e,t,r){this._i.zr(t,r);const o=this.persistence.referenceDelegate,i=[];return o&&t.forEach((s=>{i.push(o.markPotentiallyOrphaned(e,s))})),N.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this._i.jr(t),N.resolve()}getMatchingKeysForTargetId(e,t){const r=this._i.Hr(t);return N.resolve(r)}containsKey(e,t){return N.resolve(this._i.containsKey(t))}}class ku{constructor(e,t){this.ui={},this.overlays={},this.ci=new sn(0),this.li=!1,this.li=!0,this.hi=new Xv,this.referenceDelegate=e(this),this.Pi=new Qv(this),this.indexManager=new Iv,this.remoteDocumentCache=(function(o){return new qv(o)})((r=>this.referenceDelegate.Ti(r))),this.serializer=new Vv(t),this.Ii=new Lv(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.li=!1,Promise.resolve()}get started(){return this.li}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new Hv,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let r=this.ui[e.toKey()];return r||(r=new Zv(t,this.referenceDelegate),this.ui[e.toKey()]=r),r}getGlobalsCache(){return this.hi}getTargetCache(){return this.Pi}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Ii}runTransaction(e,t,r){L("MemoryPersistence","Starting transaction:",e);const o=new Kv(this.ci.next());return this.referenceDelegate.Ei(),r(o).next((i=>this.referenceDelegate.di(o).next((()=>i)))).toPromise().then((i=>(o.raiseOnCommittedEvent(),i)))}Ai(e,t){return N.or(Object.values(this.ui).map((r=>()=>r.containsKey(e,t))))}}class Kv extends Ey{constructor(e){super(),this.currentSequenceNumber=e}}class yl{constructor(e){this.persistence=e,this.Ri=new fl,this.Vi=null}static mi(e){return new yl(e)}get fi(){if(this.Vi)return this.Vi;throw J(60996)}addReference(e,t,r){return this.Ri.addReference(r,t),this.fi.delete(r.toString()),N.resolve()}removeReference(e,t,r){return this.Ri.removeReference(r,t),this.fi.add(r.toString()),N.resolve()}markPotentiallyOrphaned(e,t){return this.fi.add(t.toString()),N.resolve()}removeTarget(e,t){this.Ri.jr(t.targetId).forEach((o=>this.fi.add(o.toString())));const r=this.persistence.getTargetCache();return r.getMatchingKeysForTargetId(e,t.targetId).next((o=>{o.forEach((i=>this.fi.add(i.toString())))})).next((()=>r.removeTargetData(e,t)))}Ei(){this.Vi=new Set}di(e){const t=this.persistence.getRemoteDocumentCache().newChangeBuffer();return N.forEach(this.fi,(r=>{const o=$.fromPath(r);return this.gi(e,o).next((i=>{i||t.removeEntry(o,te.min())}))})).next((()=>(this.Vi=null,t.apply(e))))}updateLimboDocument(e,t){return this.gi(e,t).next((r=>{r?this.fi.delete(t.toString()):this.fi.add(t.toString())}))}Ti(e){return 0}gi(e,t){return N.or([()=>N.resolve(this.Ri.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Ai(e,t)])}}class Hi{constructor(e,t){this.persistence=e,this.pi=new ma((r=>ky(r.path)),((r,o)=>r.isEqual(o))),this.garbageCollector=Wv(this,t)}static mi(e,t){return new Hi(e,t)}Ei(){}di(e){return N.resolve()}forEachTarget(e,t){return this.persistence.getTargetCache().forEachTarget(e,t)}gr(e){const t=this.wr(e);return this.persistence.getTargetCache().getTargetCount(e).next((r=>t.next((o=>r+o))))}wr(e){let t=0;return this.pr(e,(r=>{t++})).next((()=>t))}pr(e,t){return N.forEach(this.pi,((r,o)=>this.br(e,r,o).next((i=>i?N.resolve():t(o)))))}removeTargets(e,t,r){return this.persistence.getTargetCache().removeTargets(e,t,r)}removeOrphanedDocuments(e,t){let r=0;const o=this.persistence.getRemoteDocumentCache(),i=o.newChangeBuffer();return o.ii(e,(s=>this.br(e,s,t).next((c=>{c||(r++,i.removeEntry(s,te.min()))})))).next((()=>i.apply(e))).next((()=>r))}markPotentiallyOrphaned(e,t){return this.pi.set(t,e.currentSequenceNumber),N.resolve()}removeTarget(e,t){const r=t.withSequenceNumber(e.currentSequenceNumber);return this.persistence.getTargetCache().updateTargetData(e,r)}addReference(e,t,r){return this.pi.set(r,e.currentSequenceNumber),N.resolve()}removeReference(e,t,r){return this.pi.set(r,e.currentSequenceNumber),N.resolve()}updateLimboDocument(e,t){return this.pi.set(t,e.currentSequenceNumber),N.resolve()}Ti(e){let t=e.key.toString().length;return e.isFoundDocument()&&(t+=_i(e.data.value)),t}br(e,t,r){return N.or([()=>this.persistence.Ai(e,t),()=>this.persistence.getTargetCache().containsKey(e,t),()=>{const o=this.pi.get(t);return N.resolve(o!==void 0&&o>r)}])}getCacheSize(e){return this.persistence.getRemoteDocumentCache().getSize(e)}}class vl{constructor(e,t,r,o){this.targetId=e,this.fromCache=t,this.Es=r,this.ds=o}static As(e,t){let r=le(),o=le();for(const i of t.docChanges)switch(i.type){case 0:r=r.add(i.doc.key);break;case 1:o=o.add(i.doc.key)}return new vl(e,t.fromCache,r,o)}}class Yv{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}class Jv{constructor(){this.Rs=!1,this.Vs=!1,this.fs=100,this.gs=(function(){return Lg()?8:_y(Hg())>0?6:4})()}initialize(e,t){this.ps=e,this.indexManager=t,this.Rs=!0}getDocumentsMatchingQuery(e,t,r,o){const i={result:null};return this.ys(e,t).next((s=>{i.result=s})).next((()=>{if(!i.result)return this.ws(e,t,o,r).next((s=>{i.result=s}))})).next((()=>{if(i.result)return;const s=new Yv;return this.Ss(e,t,s).next((c=>{if(i.result=c,this.Vs)return this.bs(e,t,s,c.size)}))})).next((()=>i.result))}bs(e,t,r,o){return r.documentReadCount<this.fs?(Ca()<=nr.DEBUG&&L("QueryEngine","SDK will not create cache indexes for query:",ka(t),"since it only creates cache indexes for collection contains","more than or equal to",this.fs,"documents"),N.resolve()):(Ca()<=nr.DEBUG&&L("QueryEngine","Query:",ka(t),"scans",r.documentReadCount,"local documents and returns",o,"documents as results."),r.documentReadCount>this.gs*o?(Ca()<=nr.DEBUG&&L("QueryEngine","The SDK decides to create cache indexes for query:",ka(t),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,Qt(t))):N.resolve())}ys(e,t){if(Ad(t))return N.resolve(null);let r=Qt(t);return this.indexManager.getIndexType(e,r).next((o=>o===0?null:(t.limit!==null&&o===1&&(t=Es(t,null,"F"),r=Qt(t)),this.indexManager.getDocumentsMatchingTarget(e,r).next((i=>{const s=le(...i);return this.ps.getDocuments(e,s).next((c=>this.indexManager.getMinOffset(e,r).next((d=>{const p=this.Ds(t,c);return this.Cs(t,p,s,d.readTime)?this.ys(e,Es(t,null,"F")):this.vs(e,p,t,d)}))))})))))}ws(e,t,r,o){return Ad(t)||o.isEqual(te.min())?N.resolve(null):this.ps.getDocuments(e,r).next((i=>{const s=this.Ds(t,i);return this.Cs(t,s,r,o)?N.resolve(null):(Ca()<=nr.DEBUG&&L("QueryEngine","Re-using previous result from %s to execute query: %s",o.toString(),ka(t)),this.vs(e,s,t,Py(o,zo)).next((c=>c)))}))}Ds(e,t){let r=new ze(iu(e));return t.forEach(((o,i)=>{pn(e,i)&&(r=r.add(i))})),r}Cs(e,t,r,o){if(e.limit===null)return!1;if(r.size!==t.size)return!0;const i=e.limitType==="F"?t.last():t.first();return!!i&&(i.hasPendingWrites||i.version.compareTo(o)>0)}Ss(e,t,r){return Ca()<=nr.DEBUG&&L("QueryEngine","Using full collection scan to execute query:",ka(t)),this.ps.getDocumentsMatchingQuery(e,t,Vr.min(),r)}vs(e,t,r,o){return this.ps.getDocumentsMatchingQuery(e,r,o).next((i=>(t.forEach((s=>{i=i.insert(s.key,s)})),i)))}}const Sl="LocalStore",eS=3e8;class tS{constructor(e,t,r,o){this.persistence=e,this.Fs=t,this.serializer=o,this.Ms=new _e(se),this.xs=new ma((i=>ll(i)),cl),this.Os=new Map,this.Ns=e.getRemoteDocumentCache(),this.Pi=e.getTargetCache(),this.Ii=e.getBundleCache(),this.Bs(r)}Bs(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new Ov(this.Ns,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Ns.setIndexManager(this.indexManager),this.Fs.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",(t=>e.collect(t,this.Ms)))}}function rS(a,e,t,r){return new tS(a,e,t,r)}async function Ru(a,e){const t=re(a);return await t.persistence.runTransaction("Handle user change","readonly",(r=>{let o;return t.mutationQueue.getAllMutationBatches(r).next((i=>(o=i,t.Bs(e),t.mutationQueue.getAllMutationBatches(r)))).next((i=>{const s=[],c=[];let d=le();for(const p of o){s.push(p.batchId);for(const h of p.mutations)d=d.add(h.key)}for(const p of i){c.push(p.batchId);for(const h of p.mutations)d=d.add(h.key)}return t.localDocuments.getDocuments(r,d).next((p=>({Ls:p,removedBatchIds:s,addedBatchIds:c})))}))}))}function aS(a,e){const t=re(a);return t.persistence.runTransaction("Acknowledge batch","readwrite-primary",(r=>{const o=e.batch.keys(),i=t.Ns.newChangeBuffer({trackRemovals:!0});return(function(c,d,p,h){const m=p.batch,f=m.keys();let v=N.resolve();return f.forEach((P=>{v=v.next((()=>h.getEntry(d,P))).next((y=>{const A=p.docVersions.get(P);he(A!==null,48541),y.version.compareTo(A)<0&&(m.applyToRemoteDocument(y,p),y.isValidDocument()&&(y.setReadTime(p.commitVersion),h.addEntry(y)))}))})),v.next((()=>c.mutationQueue.removeMutationBatch(d,m)))})(t,r,e,i).next((()=>i.apply(r))).next((()=>t.mutationQueue.performConsistencyCheck(r))).next((()=>t.documentOverlayCache.removeOverlaysForBatchId(r,o,e.batch.batchId))).next((()=>t.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(r,(function(c){let d=le();for(let p=0;p<c.mutationResults.length;++p)c.mutationResults[p].transformResults.length>0&&(d=d.add(c.batch.mutations[p].key));return d})(e)))).next((()=>t.localDocuments.getDocuments(r,o)))}))}function Tu(a){const e=re(a);return e.persistence.runTransaction("Get last remote snapshot version","readonly",(t=>e.Pi.getLastRemoteSnapshotVersion(t)))}function oS(a,e){const t=re(a),r=e.snapshotVersion;let o=t.Ms;return t.persistence.runTransaction("Apply remote event","readwrite-primary",(i=>{const s=t.Ns.newChangeBuffer({trackRemovals:!0});o=t.Ms;const c=[];e.targetChanges.forEach(((h,m)=>{const f=o.get(m);if(!f)return;c.push(t.Pi.removeMatchingKeys(i,h.removedDocuments,m).next((()=>t.Pi.addMatchingKeys(i,h.addedDocuments,m))));let v=f.withSequenceNumber(i.currentSequenceNumber);e.targetMismatches.get(m)!==null?v=v.withResumeToken(Qe.EMPTY_BYTE_STRING,te.min()).withLastLimboFreeSnapshotVersion(te.min()):h.resumeToken.approximateByteSize()>0&&(v=v.withResumeToken(h.resumeToken,r)),o=o.insert(m,v),(function(y,A,V){return y.resumeToken.approximateByteSize()===0||A.snapshotVersion.toMicroseconds()-y.snapshotVersion.toMicroseconds()>=eS?!0:V.addedDocuments.size+V.modifiedDocuments.size+V.removedDocuments.size>0})(f,v,h)&&c.push(t.Pi.updateTargetData(i,v))}));let d=dr(),p=le();if(e.documentUpdates.forEach((h=>{e.resolvedLimboDocuments.has(h)&&c.push(t.persistence.referenceDelegate.updateLimboDocument(i,h))})),c.push(iS(i,s,e.documentUpdates).next((h=>{d=h.ks,p=h.qs}))),!r.isEqual(te.min())){const h=t.Pi.getLastRemoteSnapshotVersion(i).next((m=>t.Pi.setTargetsMetadata(i,i.currentSequenceNumber,r)));c.push(h)}return N.waitFor(c).next((()=>s.apply(i))).next((()=>t.localDocuments.getLocalViewOfDocuments(i,d,p))).next((()=>d))})).then((i=>(t.Ms=o,i)))}function iS(a,e,t){let r=le(),o=le();return t.forEach((i=>r=r.add(i))),e.getEntries(a,r).next((i=>{let s=dr();return t.forEach(((c,d)=>{const p=i.get(c);d.isFoundDocument()!==p.isFoundDocument()&&(o=o.add(c)),d.isNoDocument()&&d.version.isEqual(te.min())?(e.removeEntry(c,d.readTime),s=s.insert(c,d)):!p.isValidDocument()||d.version.compareTo(p.version)>0||d.version.compareTo(p.version)===0&&p.hasPendingWrites?(e.addEntry(d),s=s.insert(c,d)):L(Sl,"Ignoring outdated watch update for ",c,". Current version:",p.version," Watch version:",d.version)})),{ks:s,qs:o}}))}function nS(a,e){const t=re(a);return t.persistence.runTransaction("Get next mutation batch","readonly",(r=>(e===void 0&&(e=il),t.mutationQueue.getNextMutationBatchAfterBatchId(r,e))))}function sS(a,e){const t=re(a);return t.persistence.runTransaction("Allocate target","readwrite",(r=>{let o;return t.Pi.getTargetData(r,e).next((i=>i?(o=i,N.resolve(o)):t.Pi.allocateTargetId(r).next((s=>(o=new Dr(e,s,"TargetPurposeListen",r.currentSequenceNumber),t.Pi.addTargetData(r,o).next((()=>o)))))))})).then((r=>{const o=t.Ms.get(r.targetId);return(o===null||r.snapshotVersion.compareTo(o.snapshotVersion)>0)&&(t.Ms=t.Ms.insert(r.targetId,r),t.xs.set(e,r.targetId)),r}))}async function Ts(a,e,t){const r=re(a),o=r.Ms.get(e),i=t?"readwrite":"readwrite-primary";try{t||await r.persistence.runTransaction("Release target",i,(s=>r.persistence.referenceDelegate.removeTarget(s,o)))}catch(s){if(!Ya(s))throw s;L(Sl,`Failed to update sequence numbers for target ${e}: ${s}`)}r.Ms=r.Ms.remove(e),r.xs.delete(o.target)}function Ud(a,e,t){const r=re(a);let o=te.min(),i=le();return r.persistence.runTransaction("Execute query","readwrite",(s=>(function(d,p,h){const m=re(d),f=m.xs.get(h);return f!==void 0?N.resolve(m.Ms.get(f)):m.Pi.getTargetData(p,h)})(r,s,Qt(e)).next((c=>{if(c)return o=c.lastLimboFreeSnapshotVersion,r.Pi.getMatchingKeysForTargetId(s,c.targetId).next((d=>{i=d}))})).next((()=>r.Fs.getDocumentsMatchingQuery(s,e,t?o:te.min(),t?i:le()))).next((c=>(lS(r,qy(e),c),{documents:c,Qs:i})))))}function lS(a,e,t){let r=a.Os.get(e)||te.min();t.forEach(((o,i)=>{i.readTime.compareTo(r)>0&&(r=i.readTime)})),a.Os.set(e,r)}class Md{constructor(){this.activeTargetIds=ev()}zs(e){this.activeTargetIds=this.activeTargetIds.add(e)}js(e){this.activeTargetIds=this.activeTargetIds.delete(e)}Gs(){const e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class cS{constructor(){this.Mo=new Md,this.xo={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,r){}addLocalQueryTarget(e,t=!0){return t&&this.Mo.zs(e),this.xo[e]||"not-current"}updateQueryState(e,t,r){this.xo[e]=t}removeLocalQueryTarget(e){this.Mo.js(e)}isLocalQueryTarget(e){return this.Mo.activeTargetIds.has(e)}clearQueryState(e){delete this.xo[e]}getAllActiveQueryTargets(){return this.Mo.activeTargetIds}isActiveQueryTarget(e){return this.Mo.activeTargetIds.has(e)}start(){return this.Mo=new Md,Promise.resolve()}handleUserChange(e,t,r){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class dS{Oo(e){}shutdown(){}}const Nd="ConnectivityMonitor";class Wd{constructor(){this.No=()=>this.Bo(),this.Lo=()=>this.ko(),this.qo=[],this.Qo()}Oo(e){this.qo.push(e)}shutdown(){window.removeEventListener("online",this.No),window.removeEventListener("offline",this.Lo)}Qo(){window.addEventListener("online",this.No),window.addEventListener("offline",this.Lo)}Bo(){L(Nd,"Network connectivity changed: AVAILABLE");for(const e of this.qo)e(0)}ko(){L(Nd,"Network connectivity changed: UNAVAILABLE");for(const e of this.qo)e(1)}static v(){return typeof window<"u"&&window.addEventListener!==void 0&&window.removeEventListener!==void 0}}let bi=null;function Vs(){return bi===null?bi=(function(){return 268435456+Math.round(2147483648*Math.random())})():bi++,"0x"+bi.toString(16)}const Jn="RestConnection",pS={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class hS{get $o(){return!1}constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;const t=e.ssl?"https":"http",r=encodeURIComponent(this.databaseId.projectId),o=encodeURIComponent(this.databaseId.database);this.Uo=t+"://"+e.host,this.Ko=`projects/${r}/databases/${o}`,this.Wo=this.databaseId.database===Gi?`project_id=${r}`:`project_id=${r}&database_id=${o}`}Go(e,t,r,o,i){const s=Vs(),c=this.zo(e,t.toUriEncodedString());L(Jn,`Sending RPC '${e}' ${s}:`,c,r);const d={"google-cloud-resource-prefix":this.Ko,"x-goog-request-params":this.Wo};this.jo(d,o,i);const{host:p}=new URL(c),h=kp(p);return this.Jo(e,c,d,r,h).then((m=>(L(Jn,`Received RPC '${e}' ${s}: `,m),m)),(m=>{throw La(Jn,`RPC '${e}' ${s} failed with error: `,m,"url: ",c,"request:",r),m}))}Ho(e,t,r,o,i,s){return this.Go(e,t,r,o,i)}jo(e,t,r){e["X-Goog-Api-Client"]=(function(){return"gl-js/ fire/"+Qa})(),e["Content-Type"]="text/plain",this.databaseInfo.appId&&(e["X-Firebase-GMPID"]=this.databaseInfo.appId),t&&t.headers.forEach(((o,i)=>e[i]=o)),r&&r.headers.forEach(((o,i)=>e[i]=o))}zo(e,t){const r=pS[e];return`${this.Uo}/v1/${t}:${r}`}terminate(){}}class uS{constructor(e){this.Yo=e.Yo,this.Zo=e.Zo}Xo(e){this.e_=e}t_(e){this.n_=e}r_(e){this.i_=e}onMessage(e){this.s_=e}close(){this.Zo()}send(e){this.Yo(e)}o_(){this.e_()}__(){this.n_()}a_(e){this.i_(e)}u_(e){this.s_(e)}}const Ye="WebChannelConnection";class mS extends hS{constructor(e){super(e),this.c_=[],this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Jo(e,t,r,o,i){const s=Vs();return new Promise(((c,d)=>{const p=new Vh;p.setWithCredentials(!0),p.listenOnce(wh.COMPLETE,(()=>{try{switch(p.getLastErrorCode()){case Ei.NO_ERROR:const m=p.getResponseJson();L(Ye,`XHR for RPC '${e}' ${s} received:`,JSON.stringify(m)),c(m);break;case Ei.TIMEOUT:L(Ye,`RPC '${e}' ${s} timed out`),d(new O(M.DEADLINE_EXCEEDED,"Request time out"));break;case Ei.HTTP_ERROR:const f=p.getStatus();if(L(Ye,`RPC '${e}' ${s} failed with status:`,f,"response text:",p.getResponseText()),f>0){let v=p.getResponseJson();Array.isArray(v)&&(v=v[0]);const P=v?.error;if(P&&P.status&&P.message){const y=(function(V){const I=V.toLowerCase().replace(/_/g,"-");return Object.values(M).indexOf(I)>=0?I:M.UNKNOWN})(P.status);d(new O(y,P.message))}else d(new O(M.UNKNOWN,"Server responded with status "+p.getStatus()))}else d(new O(M.UNAVAILABLE,"Connection failed."));break;default:J(9055,{l_:e,streamId:s,h_:p.getLastErrorCode(),P_:p.getLastError()})}}finally{L(Ye,`RPC '${e}' ${s} completed.`)}}));const h=JSON.stringify(o);L(Ye,`RPC '${e}' ${s} sending request:`,o),p.send(t,"POST",h,r,15)}))}T_(e,t,r){const o=Vs(),i=[this.Uo,"/","google.firestore.v1.Firestore","/",e,"/channel"],s=Bh(),c=Fh(),d={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},p=this.longPollingOptions.timeoutSeconds;p!==void 0&&(d.longPollingTimeout=Math.round(1e3*p)),this.useFetchStreams&&(d.useFetchStreams=!0),this.jo(d.initMessageHeaders,t,r),d.encodeInitMessageHeaders=!0;const h=i.join("");L(Ye,`Creating RPC '${e}' stream ${o}: ${h}`,d);const m=s.createWebChannel(h,d);this.I_(m);let f=!1,v=!1;const P=new uS({Yo:A=>{v?L(Ye,`Not sending because RPC '${e}' stream ${o} is closed:`,A):(f||(L(Ye,`Opening RPC '${e}' stream ${o} transport.`),m.open(),f=!0),L(Ye,`RPC '${e}' stream ${o} sending:`,A),m.send(A))},Zo:()=>m.close()}),y=(A,V,I)=>{A.listen(V,(E=>{try{I(E)}catch(w){setTimeout((()=>{throw w}),0)}}))};return y(m,Do.EventType.OPEN,(()=>{v||(L(Ye,`RPC '${e}' stream ${o} transport opened.`),P.o_())})),y(m,Do.EventType.CLOSE,(()=>{v||(v=!0,L(Ye,`RPC '${e}' stream ${o} transport closed`),P.a_(),this.E_(m))})),y(m,Do.EventType.ERROR,(A=>{v||(v=!0,La(Ye,`RPC '${e}' stream ${o} transport errored. Name:`,A.name,"Message:",A.message),P.a_(new O(M.UNAVAILABLE,"The operation could not be completed")))})),y(m,Do.EventType.MESSAGE,(A=>{if(!v){const V=A.data[0];he(!!V,16349);const I=V,E=I?.error||I[0]?.error;if(E){L(Ye,`RPC '${e}' stream ${o} received error:`,E);const w=E.status;let k=(function(S){const x=Be[S];if(x!==void 0)return vu(x)})(w),U=E.message;k===void 0&&(k=M.INTERNAL,U="Unknown error status: "+w+" with message "+E.message),v=!0,P.a_(new O(k,U)),m.close()}else L(Ye,`RPC '${e}' stream ${o} received:`,V),P.u_(V)}})),y(c,Ih.STAT_EVENT,(A=>{A.stat===Ss.PROXY?L(Ye,`RPC '${e}' stream ${o} detected buffering proxy`):A.stat===Ss.NOPROXY&&L(Ye,`RPC '${e}' stream ${o} detected no buffering proxy`)})),setTimeout((()=>{P.__()}),0),P}terminate(){this.c_.forEach((e=>e.close())),this.c_=[]}I_(e){this.c_.push(e)}E_(e){this.c_=this.c_.filter((t=>t===e))}}function es(){return typeof document<"u"?document:null}function gn(a){return new vv(a,!0)}class Vu{constructor(e,t,r=1e3,o=1.5,i=6e4){this.Mi=e,this.timerId=t,this.d_=r,this.A_=o,this.R_=i,this.V_=0,this.m_=null,this.f_=Date.now(),this.reset()}reset(){this.V_=0}g_(){this.V_=this.R_}p_(e){this.cancel();const t=Math.floor(this.V_+this.y_()),r=Math.max(0,Date.now()-this.f_),o=Math.max(0,t-r);o>0&&L("ExponentialBackoff",`Backing off for ${o} ms (base delay: ${this.V_} ms, delay with jitter: ${t} ms, last attempt: ${r} ms ago)`),this.m_=this.Mi.enqueueAfterDelay(this.timerId,o,(()=>(this.f_=Date.now(),e()))),this.V_*=this.A_,this.V_<this.d_&&(this.V_=this.d_),this.V_>this.R_&&(this.V_=this.R_)}w_(){this.m_!==null&&(this.m_.skipDelay(),this.m_=null)}cancel(){this.m_!==null&&(this.m_.cancel(),this.m_=null)}y_(){return(Math.random()-.5)*this.V_}}const Gd="PersistentStream";class wu{constructor(e,t,r,o,i,s,c,d){this.Mi=e,this.S_=r,this.b_=o,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=c,this.listener=d,this.state=0,this.D_=0,this.C_=null,this.v_=null,this.stream=null,this.F_=0,this.M_=new Vu(e,t)}x_(){return this.state===1||this.state===5||this.O_()}O_(){return this.state===2||this.state===3}start(){this.F_=0,this.state!==4?this.auth():this.N_()}async stop(){this.x_()&&await this.close(0)}B_(){this.state=0,this.M_.reset()}L_(){this.O_()&&this.C_===null&&(this.C_=this.Mi.enqueueAfterDelay(this.S_,6e4,(()=>this.k_())))}q_(e){this.Q_(),this.stream.send(e)}async k_(){if(this.O_())return this.close(0)}Q_(){this.C_&&(this.C_.cancel(),this.C_=null)}U_(){this.v_&&(this.v_.cancel(),this.v_=null)}async close(e,t){this.Q_(),this.U_(),this.M_.cancel(),this.D_++,e!==4?this.M_.reset():t&&t.code===M.RESOURCE_EXHAUSTED?(cr(t.toString()),cr("Using maximum backoff delay to prevent overloading the backend."),this.M_.g_()):t&&t.code===M.UNAUTHENTICATED&&this.state!==3&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),this.stream!==null&&(this.K_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.r_(t)}K_(){}auth(){this.state=1;const e=this.W_(this.D_),t=this.D_;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then((([r,o])=>{this.D_===t&&this.G_(r,o)}),(r=>{e((()=>{const o=new O(M.UNKNOWN,"Fetching auth token failed: "+r.message);return this.z_(o)}))}))}G_(e,t){const r=this.W_(this.D_);this.stream=this.j_(e,t),this.stream.Xo((()=>{r((()=>this.listener.Xo()))})),this.stream.t_((()=>{r((()=>(this.state=2,this.v_=this.Mi.enqueueAfterDelay(this.b_,1e4,(()=>(this.O_()&&(this.state=3),Promise.resolve()))),this.listener.t_())))})),this.stream.r_((o=>{r((()=>this.z_(o)))})),this.stream.onMessage((o=>{r((()=>++this.F_==1?this.J_(o):this.onNext(o)))}))}N_(){this.state=5,this.M_.p_((async()=>{this.state=0,this.start()}))}z_(e){return L(Gd,`close with error: ${e}`),this.stream=null,this.close(4,e)}W_(e){return t=>{this.Mi.enqueueAndForget((()=>this.D_===e?t():(L(Gd,"stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve())))}}}class gS extends wu{constructor(e,t,r,o,i,s){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,r,o,s),this.serializer=i}j_(e,t){return this.connection.T_("Listen",e,t)}J_(e){return this.onNext(e)}onNext(e){this.M_.reset();const t=bv(this.serializer,e),r=(function(i){if(!("targetChange"in i))return te.min();const s=i.targetChange;return s.targetIds&&s.targetIds.length?te.min():s.readTime?Kt(s.readTime):te.min()})(e);return this.listener.H_(t,r)}Y_(e){const t={};t.database=Rs(this.serializer),t.addTarget=(function(i,s){let c;const d=s.target;if(c=As(d)?{documents:Av(i,d)}:{query:jv(i,d).ft},c.targetId=s.targetId,s.resumeToken.approximateByteSize()>0){c.resumeToken=bu(i,s.resumeToken);const p=_s(i,s.expectedCount);p!==null&&(c.expectedCount=p)}else if(s.snapshotVersion.compareTo(te.min())>0){c.readTime=Li(i,s.snapshotVersion.toTimestamp());const p=_s(i,s.expectedCount);p!==null&&(c.expectedCount=p)}return c})(this.serializer,e);const r=_v(this.serializer,e);r&&(t.labels=r),this.q_(t)}Z_(e){const t={};t.database=Rs(this.serializer),t.removeTarget=e,this.q_(t)}}class fS extends wu{constructor(e,t,r,o,i,s){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,r,o,s),this.serializer=i}get X_(){return this.F_>0}start(){this.lastStreamToken=void 0,super.start()}K_(){this.X_&&this.ea([])}j_(e,t){return this.connection.T_("Write",e,t)}J_(e){return he(!!e.streamToken,31322),this.lastStreamToken=e.streamToken,he(!e.writeResults||e.writeResults.length===0,55816),this.listener.ta()}onNext(e){he(!!e.streamToken,12678),this.lastStreamToken=e.streamToken,this.M_.reset();const t=Dv(e.writeResults,e.commitTime),r=Kt(e.commitTime);return this.listener.na(r,t)}ra(){const e={};e.database=Rs(this.serializer),this.q_(e)}ea(e){const t={streamToken:this.lastStreamToken,writes:e.map((r=>Pv(this.serializer,r)))};this.q_(t)}}class yS{}class vS extends yS{constructor(e,t,r,o){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=r,this.serializer=o,this.ia=!1}sa(){if(this.ia)throw new O(M.FAILED_PRECONDITION,"The client has already been terminated.")}Go(e,t,r,o){return this.sa(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([i,s])=>this.connection.Go(e,Cs(t,r),o,i,s))).catch((i=>{throw i.name==="FirebaseError"?(i.code===M.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),i):new O(M.UNKNOWN,i.toString())}))}Ho(e,t,r,o,i){return this.sa(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([s,c])=>this.connection.Ho(e,Cs(t,r),o,s,c,i))).catch((s=>{throw s.name==="FirebaseError"?(s.code===M.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),s):new O(M.UNKNOWN,s.toString())}))}terminate(){this.ia=!0,this.connection.terminate()}}class SS{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.oa=0,this._a=null,this.aa=!0}ua(){this.oa===0&&(this.ca("Unknown"),this._a=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,(()=>(this._a=null,this.la("Backend didn't respond within 10 seconds."),this.ca("Offline"),Promise.resolve()))))}ha(e){this.state==="Online"?this.ca("Unknown"):(this.oa++,this.oa>=1&&(this.Pa(),this.la(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.ca("Offline")))}set(e){this.Pa(),this.oa=0,e==="Online"&&(this.aa=!1),this.ca(e)}ca(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}la(e){const t=`Could not reach Cloud Firestore backend. ${e}
|
|
122
|
+
This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.aa?(cr(t),this.aa=!1):L("OnlineStateTracker",t)}Pa(){this._a!==null&&(this._a.cancel(),this._a=null)}}const ha="RemoteStore";class xS{constructor(e,t,r,o,i){this.localStore=e,this.datastore=t,this.asyncQueue=r,this.remoteSyncer={},this.Ta=[],this.Ia=new Map,this.Ea=new Set,this.da=[],this.Aa=i,this.Aa.Oo((s=>{r.enqueueAndForget((async()=>{ga(this)&&(L(ha,"Restarting streams for network reachability change."),await(async function(d){const p=re(d);p.Ea.add(4),await ti(p),p.Ra.set("Unknown"),p.Ea.delete(4),await fn(p)})(this))}))})),this.Ra=new SS(r,o)}}async function fn(a){if(ga(a))for(const e of a.da)await e(!0)}async function ti(a){for(const e of a.da)await e(!1)}function Iu(a,e){const t=re(a);t.Ia.has(e.targetId)||(t.Ia.set(e.targetId,e),Dl(t)?Pl(t):eo(t).O_()&&bl(t,e))}function xl(a,e){const t=re(a),r=eo(t);t.Ia.delete(e),r.O_()&&Fu(t,e),t.Ia.size===0&&(r.O_()?r.L_():ga(t)&&t.Ra.set("Unknown"))}function bl(a,e){if(a.Va.Ue(e.targetId),e.resumeToken.approximateByteSize()>0||e.snapshotVersion.compareTo(te.min())>0){const t=a.remoteSyncer.getRemoteKeysForTarget(e.targetId).size;e=e.withExpectedCount(t)}eo(a).Y_(e)}function Fu(a,e){a.Va.Ue(e),eo(a).Z_(e)}function Pl(a){a.Va=new mv({getRemoteKeysForTarget:e=>a.remoteSyncer.getRemoteKeysForTarget(e),At:e=>a.Ia.get(e)||null,ht:()=>a.datastore.serializer.databaseId}),eo(a).start(),a.Ra.ua()}function Dl(a){return ga(a)&&!eo(a).x_()&&a.Ia.size>0}function ga(a){return re(a).Ea.size===0}function Bu(a){a.Va=void 0}async function bS(a){a.Ra.set("Online")}async function PS(a){a.Ia.forEach(((e,t)=>{bl(a,e)}))}async function DS(a,e){Bu(a),Dl(a)?(a.Ra.ha(e),Pl(a)):a.Ra.set("Unknown")}async function AS(a,e,t){if(a.Ra.set("Online"),e instanceof xu&&e.state===2&&e.cause)try{await(async function(o,i){const s=i.cause;for(const c of i.targetIds)o.Ia.has(c)&&(await o.remoteSyncer.rejectListen(c,s),o.Ia.delete(c),o.Va.removeTarget(c))})(a,e)}catch(r){L(ha,"Failed to remove targets %s: %s ",e.targetIds.join(","),r),await Xi(a,r)}else if(e instanceof Ri?a.Va.Ze(e):e instanceof Su?a.Va.st(e):a.Va.tt(e),!t.isEqual(te.min()))try{const r=await Tu(a.localStore);t.compareTo(r)>=0&&await(function(i,s){const c=i.Va.Tt(s);return c.targetChanges.forEach(((d,p)=>{if(d.resumeToken.approximateByteSize()>0){const h=i.Ia.get(p);h&&i.Ia.set(p,h.withResumeToken(d.resumeToken,s))}})),c.targetMismatches.forEach(((d,p)=>{const h=i.Ia.get(d);if(!h)return;i.Ia.set(d,h.withResumeToken(Qe.EMPTY_BYTE_STRING,h.snapshotVersion)),Fu(i,d);const m=new Dr(h.target,d,p,h.sequenceNumber);bl(i,m)})),i.remoteSyncer.applyRemoteEvent(c)})(a,t)}catch(r){L(ha,"Failed to raise snapshot:",r),await Xi(a,r)}}async function Xi(a,e,t){if(!Ya(e))throw e;a.Ea.add(1),await ti(a),a.Ra.set("Offline"),t||(t=()=>Tu(a.localStore)),a.asyncQueue.enqueueRetryable((async()=>{L(ha,"Retrying IndexedDB access"),await t(),a.Ea.delete(1),await fn(a)}))}function Uu(a,e){return e().catch((t=>Xi(a,t,e)))}async function yn(a){const e=re(a),t=Br(e);let r=e.Ta.length>0?e.Ta[e.Ta.length-1].batchId:il;for(;jS(e);)try{const o=await nS(e.localStore,r);if(o===null){e.Ta.length===0&&t.L_();break}r=o.batchId,ES(e,o)}catch(o){await Xi(e,o)}Mu(e)&&Nu(e)}function jS(a){return ga(a)&&a.Ta.length<10}function ES(a,e){a.Ta.push(e);const t=Br(a);t.O_()&&t.X_&&t.ea(e.mutations)}function Mu(a){return ga(a)&&!Br(a).x_()&&a.Ta.length>0}function Nu(a){Br(a).start()}async function _S(a){Br(a).ra()}async function CS(a){const e=Br(a);for(const t of a.Ta)e.ea(t.mutations)}async function kS(a,e,t){const r=a.Ta.shift(),o=ul.from(r,e,t);await Uu(a,(()=>a.remoteSyncer.applySuccessfulWrite(o))),await yn(a)}async function RS(a,e){e&&Br(a).X_&&await(async function(r,o){if((function(s){return pv(s)&&s!==M.ABORTED})(o.code)){const i=r.Ta.shift();Br(r).B_(),await Uu(r,(()=>r.remoteSyncer.rejectFailedWrite(i.batchId,o))),await yn(r)}})(a,e),Mu(a)&&Nu(a)}async function zd(a,e){const t=re(a);t.asyncQueue.verifyOperationInProgress(),L(ha,"RemoteStore received new credentials");const r=ga(t);t.Ea.add(3),await ti(t),r&&t.Ra.set("Unknown"),await t.remoteSyncer.handleCredentialChange(e),t.Ea.delete(3),await fn(t)}async function TS(a,e){const t=re(a);e?(t.Ea.delete(2),await fn(t)):e||(t.Ea.add(2),await ti(t),t.Ra.set("Unknown"))}function eo(a){return a.ma||(a.ma=(function(t,r,o){const i=re(t);return i.sa(),new gS(r,i.connection,i.authCredentials,i.appCheckCredentials,i.serializer,o)})(a.datastore,a.asyncQueue,{Xo:bS.bind(null,a),t_:PS.bind(null,a),r_:DS.bind(null,a),H_:AS.bind(null,a)}),a.da.push((async e=>{e?(a.ma.B_(),Dl(a)?Pl(a):a.Ra.set("Unknown")):(await a.ma.stop(),Bu(a))}))),a.ma}function Br(a){return a.fa||(a.fa=(function(t,r,o){const i=re(t);return i.sa(),new fS(r,i.connection,i.authCredentials,i.appCheckCredentials,i.serializer,o)})(a.datastore,a.asyncQueue,{Xo:()=>Promise.resolve(),t_:_S.bind(null,a),r_:RS.bind(null,a),ta:CS.bind(null,a),na:kS.bind(null,a)}),a.da.push((async e=>{e?(a.fa.B_(),await yn(a)):(await a.fa.stop(),a.Ta.length>0&&(L(ha,`Stopping write stream with ${a.Ta.length} pending writes`),a.Ta=[]))}))),a.fa}class Al{constructor(e,t,r,o,i){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=r,this.op=o,this.removalCallback=i,this.deferred=new _r,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch((s=>{}))}get promise(){return this.deferred.promise}static createAndSchedule(e,t,r,o,i){const s=Date.now()+r,c=new Al(e,t,s,o,i);return c.start(r),c}start(e){this.timerHandle=setTimeout((()=>this.handleDelayElapsed()),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){this.timerHandle!==null&&(this.clearTimeout(),this.deferred.reject(new O(M.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget((()=>this.timerHandle!==null?(this.clearTimeout(),this.op().then((e=>this.deferred.resolve(e)))):Promise.resolve()))}clearTimeout(){this.timerHandle!==null&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function jl(a,e){if(cr("AsyncQueue",`${e}: ${a}`),Ya(a))return new O(M.UNAVAILABLE,`${e}: ${a}`);throw a}class Ua{static emptySet(e){return new Ua(e.comparator)}constructor(e){this.comparator=e?(t,r)=>e(t,r)||$.comparator(t.key,r.key):(t,r)=>$.comparator(t.key,r.key),this.keyedMap=Ao(),this.sortedSet=new _e(this.comparator)}has(e){return this.keyedMap.get(e)!=null}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){const t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal(((t,r)=>(e(t),!1)))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){const t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof Ua)||this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),r=e.sortedSet.getIterator();for(;t.hasNext();){const o=t.getNext().key,i=r.getNext().key;if(!o.isEqual(i))return!1}return!0}toString(){const e=[];return this.forEach((t=>{e.push(t.toString())})),e.length===0?"DocumentSet ()":`DocumentSet (
|
|
123
|
+
`+e.join(`
|
|
124
|
+
`)+`
|
|
125
|
+
)`}copy(e,t){const r=new Ua;return r.comparator=this.comparator,r.keyedMap=e,r.sortedSet=t,r}}class Od{constructor(){this.ga=new _e($.comparator)}track(e){const t=e.doc.key,r=this.ga.get(t);r?e.type!==0&&r.type===3?this.ga=this.ga.insert(t,e):e.type===3&&r.type!==1?this.ga=this.ga.insert(t,{type:r.type,doc:e.doc}):e.type===2&&r.type===2?this.ga=this.ga.insert(t,{type:2,doc:e.doc}):e.type===2&&r.type===0?this.ga=this.ga.insert(t,{type:0,doc:e.doc}):e.type===1&&r.type===0?this.ga=this.ga.remove(t):e.type===1&&r.type===2?this.ga=this.ga.insert(t,{type:1,doc:r.doc}):e.type===0&&r.type===1?this.ga=this.ga.insert(t,{type:2,doc:e.doc}):J(63341,{Rt:e,pa:r}):this.ga=this.ga.insert(t,e)}ya(){const e=[];return this.ga.inorderTraversal(((t,r)=>{e.push(r)})),e}}class $a{constructor(e,t,r,o,i,s,c,d,p){this.query=e,this.docs=t,this.oldDocs=r,this.docChanges=o,this.mutatedKeys=i,this.fromCache=s,this.syncStateChanged=c,this.excludesMetadataChanges=d,this.hasCachedResults=p}static fromInitialDocuments(e,t,r,o,i){const s=[];return t.forEach((c=>{s.push({type:0,doc:c})})),new $a(e,t,Ua.emptySet(t),s,r,o,!0,!1,i)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&dn(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,r=e.docChanges;if(t.length!==r.length)return!1;for(let o=0;o<t.length;o++)if(t[o].type!==r[o].type||!t[o].doc.isEqual(r[o].doc))return!1;return!0}}class VS{constructor(){this.wa=void 0,this.Sa=[]}ba(){return this.Sa.some((e=>e.Da()))}}class wS{constructor(){this.queries=Ld(),this.onlineState="Unknown",this.Ca=new Set}terminate(){(function(t,r){const o=re(t),i=o.queries;o.queries=Ld(),i.forEach(((s,c)=>{for(const d of c.Sa)d.onError(r)}))})(this,new O(M.ABORTED,"Firestore shutting down"))}}function Ld(){return new ma((a=>ou(a)),dn)}async function Wu(a,e){const t=re(a);let r=3;const o=e.query;let i=t.queries.get(o);i?!i.ba()&&e.Da()&&(r=2):(i=new VS,r=e.Da()?0:1);try{switch(r){case 0:i.wa=await t.onListen(o,!0);break;case 1:i.wa=await t.onListen(o,!1);break;case 2:await t.onFirstRemoteStoreListen(o)}}catch(s){const c=jl(s,`Initialization of query '${ka(e.query)}' failed`);return void e.onError(c)}t.queries.set(o,i),i.Sa.push(e),e.va(t.onlineState),i.wa&&e.Fa(i.wa)&&El(t)}async function Gu(a,e){const t=re(a),r=e.query;let o=3;const i=t.queries.get(r);if(i){const s=i.Sa.indexOf(e);s>=0&&(i.Sa.splice(s,1),i.Sa.length===0?o=e.Da()?0:1:!i.ba()&&e.Da()&&(o=2))}switch(o){case 0:return t.queries.delete(r),t.onUnlisten(r,!0);case 1:return t.queries.delete(r),t.onUnlisten(r,!1);case 2:return t.onLastRemoteStoreUnlisten(r);default:return}}function IS(a,e){const t=re(a);let r=!1;for(const o of e){const i=o.query,s=t.queries.get(i);if(s){for(const c of s.Sa)c.Fa(o)&&(r=!0);s.wa=o}}r&&El(t)}function FS(a,e,t){const r=re(a),o=r.queries.get(e);if(o)for(const i of o.Sa)i.onError(t);r.queries.delete(e)}function El(a){a.Ca.forEach((e=>{e.next()}))}var ws,Hd;(Hd=ws||(ws={})).Ma="default",Hd.Cache="cache";class zu{constructor(e,t,r){this.query=e,this.xa=t,this.Oa=!1,this.Na=null,this.onlineState="Unknown",this.options=r||{}}Fa(e){if(!this.options.includeMetadataChanges){const r=[];for(const o of e.docChanges)o.type!==3&&r.push(o);e=new $a(e.query,e.docs,e.oldDocs,r,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Oa?this.Ba(e)&&(this.xa.next(e),t=!0):this.La(e,this.onlineState)&&(this.ka(e),t=!0),this.Na=e,t}onError(e){this.xa.error(e)}va(e){this.onlineState=e;let t=!1;return this.Na&&!this.Oa&&this.La(this.Na,e)&&(this.ka(this.Na),t=!0),t}La(e,t){if(!e.fromCache||!this.Da())return!0;const r=t!=="Offline";return(!this.options.qa||!r)&&(!e.docs.isEmpty()||e.hasCachedResults||t==="Offline")}Ba(e){if(e.docChanges.length>0)return!0;const t=this.Na&&this.Na.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&this.options.includeMetadataChanges===!0}ka(e){e=$a.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.Oa=!0,this.xa.next(e)}Da(){return this.options.source!==ws.Cache}}class Ou{constructor(e){this.key=e}}class Lu{constructor(e){this.key=e}}class BS{constructor(e,t){this.query=e,this.Ya=t,this.Za=null,this.hasCachedResults=!1,this.current=!1,this.Xa=le(),this.mutatedKeys=le(),this.eu=iu(e),this.tu=new Ua(this.eu)}get nu(){return this.Ya}ru(e,t){const r=t?t.iu:new Od,o=t?t.tu:this.tu;let i=t?t.mutatedKeys:this.mutatedKeys,s=o,c=!1;const d=this.query.limitType==="F"&&o.size===this.query.limit?o.last():null,p=this.query.limitType==="L"&&o.size===this.query.limit?o.first():null;if(e.inorderTraversal(((h,m)=>{const f=o.get(h),v=pn(this.query,m)?m:null,P=!!f&&this.mutatedKeys.has(f.key),y=!!v&&(v.hasLocalMutations||this.mutatedKeys.has(v.key)&&v.hasCommittedMutations);let A=!1;f&&v?f.data.isEqual(v.data)?P!==y&&(r.track({type:3,doc:v}),A=!0):this.su(f,v)||(r.track({type:2,doc:v}),A=!0,(d&&this.eu(v,d)>0||p&&this.eu(v,p)<0)&&(c=!0)):!f&&v?(r.track({type:0,doc:v}),A=!0):f&&!v&&(r.track({type:1,doc:f}),A=!0,(d||p)&&(c=!0)),A&&(v?(s=s.add(v),i=y?i.add(h):i.delete(h)):(s=s.delete(h),i=i.delete(h)))})),this.query.limit!==null)for(;s.size>this.query.limit;){const h=this.query.limitType==="F"?s.last():s.first();s=s.delete(h.key),i=i.delete(h.key),r.track({type:1,doc:h})}return{tu:s,iu:r,Cs:c,mutatedKeys:i}}su(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,r,o){const i=this.tu;this.tu=e.tu,this.mutatedKeys=e.mutatedKeys;const s=e.iu.ya();s.sort(((h,m)=>(function(v,P){const y=A=>{switch(A){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return J(20277,{Rt:A})}};return y(v)-y(P)})(h.type,m.type)||this.eu(h.doc,m.doc))),this.ou(r),o=o??!1;const c=t&&!o?this._u():[],d=this.Xa.size===0&&this.current&&!o?1:0,p=d!==this.Za;return this.Za=d,s.length!==0||p?{snapshot:new $a(this.query,e.tu,i,s,e.mutatedKeys,d===0,p,!1,!!r&&r.resumeToken.approximateByteSize()>0),au:c}:{au:c}}va(e){return this.current&&e==="Offline"?(this.current=!1,this.applyChanges({tu:this.tu,iu:new Od,mutatedKeys:this.mutatedKeys,Cs:!1},!1)):{au:[]}}uu(e){return!this.Ya.has(e)&&!!this.tu.has(e)&&!this.tu.get(e).hasLocalMutations}ou(e){e&&(e.addedDocuments.forEach((t=>this.Ya=this.Ya.add(t))),e.modifiedDocuments.forEach((t=>{})),e.removedDocuments.forEach((t=>this.Ya=this.Ya.delete(t))),this.current=e.current)}_u(){if(!this.current)return[];const e=this.Xa;this.Xa=le(),this.tu.forEach((r=>{this.uu(r.key)&&(this.Xa=this.Xa.add(r.key))}));const t=[];return e.forEach((r=>{this.Xa.has(r)||t.push(new Lu(r))})),this.Xa.forEach((r=>{e.has(r)||t.push(new Ou(r))})),t}cu(e){this.Ya=e.Qs,this.Xa=le();const t=this.ru(e.documents);return this.applyChanges(t,!0)}lu(){return $a.fromInitialDocuments(this.query,this.tu,this.mutatedKeys,this.Za===0,this.hasCachedResults)}}const _l="SyncEngine";class US{constructor(e,t,r){this.query=e,this.targetId=t,this.view=r}}class MS{constructor(e){this.key=e,this.hu=!1}}class NS{constructor(e,t,r,o,i,s){this.localStore=e,this.remoteStore=t,this.eventManager=r,this.sharedClientState=o,this.currentUser=i,this.maxConcurrentLimboResolutions=s,this.Pu={},this.Tu=new ma((c=>ou(c)),dn),this.Iu=new Map,this.Eu=new Set,this.du=new _e($.comparator),this.Au=new Map,this.Ru=new fl,this.Vu={},this.mu=new Map,this.fu=qa.cr(),this.onlineState="Unknown",this.gu=void 0}get isPrimaryClient(){return this.gu===!0}}async function WS(a,e,t=!0){const r=Qu(a);let o;const i=r.Tu.get(e);return i?(r.sharedClientState.addLocalQueryTarget(i.targetId),o=i.view.lu()):o=await Hu(r,e,t,!0),o}async function GS(a,e){const t=Qu(a);await Hu(t,e,!0,!1)}async function Hu(a,e,t,r){const o=await sS(a.localStore,Qt(e)),i=o.targetId,s=a.sharedClientState.addLocalQueryTarget(i,t);let c;return r&&(c=await zS(a,e,i,s==="current",o.resumeToken)),a.isPrimaryClient&&t&&Iu(a.remoteStore,o),c}async function zS(a,e,t,r,o){a.pu=(m,f,v)=>(async function(y,A,V,I){let E=A.view.ru(V);E.Cs&&(E=await Ud(y.localStore,A.query,!1).then((({documents:D})=>A.view.ru(D,E))));const w=I&&I.targetChanges.get(A.targetId),k=I&&I.targetMismatches.get(A.targetId)!=null,U=A.view.applyChanges(E,y.isPrimaryClient,w,k);return Zd(y,A.targetId,U.au),U.snapshot})(a,m,f,v);const i=await Ud(a.localStore,e,!0),s=new BS(e,i.Qs),c=s.ru(i.documents),d=ei.createSynthesizedTargetChangeForCurrentChange(t,r&&a.onlineState!=="Offline",o),p=s.applyChanges(c,a.isPrimaryClient,d);Zd(a,t,p.au);const h=new US(e,t,s);return a.Tu.set(e,h),a.Iu.has(t)?a.Iu.get(t).push(e):a.Iu.set(t,[e]),p.snapshot}async function OS(a,e,t){const r=re(a),o=r.Tu.get(e),i=r.Iu.get(o.targetId);if(i.length>1)return r.Iu.set(o.targetId,i.filter((s=>!dn(s,e)))),void r.Tu.delete(e);r.isPrimaryClient?(r.sharedClientState.removeLocalQueryTarget(o.targetId),r.sharedClientState.isActiveQueryTarget(o.targetId)||await Ts(r.localStore,o.targetId,!1).then((()=>{r.sharedClientState.clearQueryState(o.targetId),t&&xl(r.remoteStore,o.targetId),Is(r,o.targetId)})).catch(Ka)):(Is(r,o.targetId),await Ts(r.localStore,o.targetId,!0))}async function LS(a,e){const t=re(a),r=t.Tu.get(e),o=t.Iu.get(r.targetId);t.isPrimaryClient&&o.length===1&&(t.sharedClientState.removeLocalQueryTarget(r.targetId),xl(t.remoteStore,r.targetId))}async function HS(a,e,t){const r=YS(a);try{const o=await(function(s,c){const d=re(s),p=xe.now(),h=c.reduce(((v,P)=>v.add(P.key)),le());let m,f;return d.persistence.runTransaction("Locally write mutations","readwrite",(v=>{let P=dr(),y=le();return d.Ns.getEntries(v,h).next((A=>{P=A,P.forEach(((V,I)=>{I.isValidDocument()||(y=y.add(V))}))})).next((()=>d.localDocuments.getOverlayedDocuments(v,P))).next((A=>{m=A;const V=[];for(const I of c){const E=nv(I,m.get(I.key).overlayedDocument);E!=null&&V.push(new Gr(I.key,E,Qh(E.value.mapValue),Mt.exists(!0)))}return d.mutationQueue.addMutationBatch(v,p,V,c)})).next((A=>{f=A;const V=A.applyToLocalDocumentSet(m,y);return d.documentOverlayCache.saveOverlays(v,A.batchId,V)}))})).then((()=>({batchId:f.batchId,changes:su(m)})))})(r.localStore,e);r.sharedClientState.addPendingMutation(o.batchId),(function(s,c,d){let p=s.Vu[s.currentUser.toKey()];p||(p=new _e(se)),p=p.insert(c,d),s.Vu[s.currentUser.toKey()]=p})(r,o.batchId,t),await ri(r,o.changes),await yn(r.remoteStore)}catch(o){const i=jl(o,"Failed to persist write");t.reject(i)}}async function Xu(a,e){const t=re(a);try{const r=await oS(t.localStore,e);e.targetChanges.forEach(((o,i)=>{const s=t.Au.get(i);s&&(he(o.addedDocuments.size+o.modifiedDocuments.size+o.removedDocuments.size<=1,22616),o.addedDocuments.size>0?s.hu=!0:o.modifiedDocuments.size>0?he(s.hu,14607):o.removedDocuments.size>0&&(he(s.hu,42227),s.hu=!1))})),await ri(t,r,e)}catch(r){await Ka(r)}}function Xd(a,e,t){const r=re(a);if(r.isPrimaryClient&&t===0||!r.isPrimaryClient&&t===1){const o=[];r.Tu.forEach(((i,s)=>{const c=s.view.va(e);c.snapshot&&o.push(c.snapshot)})),(function(s,c){const d=re(s);d.onlineState=c;let p=!1;d.queries.forEach(((h,m)=>{for(const f of m.Sa)f.va(c)&&(p=!0)})),p&&El(d)})(r.eventManager,e),o.length&&r.Pu.H_(o),r.onlineState=e,r.isPrimaryClient&&r.sharedClientState.setOnlineState(e)}}async function XS(a,e,t){const r=re(a);r.sharedClientState.updateQueryState(e,"rejected",t);const o=r.Au.get(e),i=o&&o.key;if(i){let s=new _e($.comparator);s=s.insert(i,et.newNoDocument(i,te.min()));const c=le().add(i),d=new mn(te.min(),new Map,new _e(se),s,c);await Xu(r,d),r.du=r.du.remove(i),r.Au.delete(e),Cl(r)}else await Ts(r.localStore,e,!1).then((()=>Is(r,e,t))).catch(Ka)}async function ZS(a,e){const t=re(a),r=e.batch.batchId;try{const o=await aS(t.localStore,e);qu(t,r,null),Zu(t,r),t.sharedClientState.updateMutationState(r,"acknowledged"),await ri(t,o)}catch(o){await Ka(o)}}async function qS(a,e,t){const r=re(a);try{const o=await(function(s,c){const d=re(s);return d.persistence.runTransaction("Reject batch","readwrite-primary",(p=>{let h;return d.mutationQueue.lookupMutationBatch(p,c).next((m=>(he(m!==null,37113),h=m.keys(),d.mutationQueue.removeMutationBatch(p,m)))).next((()=>d.mutationQueue.performConsistencyCheck(p))).next((()=>d.documentOverlayCache.removeOverlaysForBatchId(p,h,c))).next((()=>d.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(p,h))).next((()=>d.localDocuments.getDocuments(p,h)))}))})(r.localStore,e);qu(r,e,t),Zu(r,e),r.sharedClientState.updateMutationState(e,"rejected",t),await ri(r,o)}catch(o){await Ka(o)}}function Zu(a,e){(a.mu.get(e)||[]).forEach((t=>{t.resolve()})),a.mu.delete(e)}function qu(a,e,t){const r=re(a);let o=r.Vu[r.currentUser.toKey()];if(o){const i=o.get(e);i&&(t?i.reject(t):i.resolve(),o=o.remove(e)),r.Vu[r.currentUser.toKey()]=o}}function Is(a,e,t=null){a.sharedClientState.removeLocalQueryTarget(e);for(const r of a.Iu.get(e))a.Tu.delete(r),t&&a.Pu.yu(r,t);a.Iu.delete(e),a.isPrimaryClient&&a.Ru.jr(e).forEach((r=>{a.Ru.containsKey(r)||$u(a,r)}))}function $u(a,e){a.Eu.delete(e.path.canonicalString());const t=a.du.get(e);t!==null&&(xl(a.remoteStore,t),a.du=a.du.remove(e),a.Au.delete(t),Cl(a))}function Zd(a,e,t){for(const r of t)r instanceof Ou?(a.Ru.addReference(r.key,e),$S(a,r)):r instanceof Lu?(L(_l,"Document no longer in limbo: "+r.key),a.Ru.removeReference(r.key,e),a.Ru.containsKey(r.key)||$u(a,r.key)):J(19791,{wu:r})}function $S(a,e){const t=e.key,r=t.path.canonicalString();a.du.get(t)||a.Eu.has(r)||(L(_l,"New document in limbo: "+t),a.Eu.add(r),Cl(a))}function Cl(a){for(;a.Eu.size>0&&a.du.size<a.maxConcurrentLimboResolutions;){const e=a.Eu.values().next().value;a.Eu.delete(e);const t=new $(ve.fromString(e)),r=a.fu.next();a.Au.set(r,new MS(t)),a.du=a.du.insert(t,r),Iu(a.remoteStore,new Dr(Qt(dl(t.path)),r,"TargetPurposeLimboResolution",sn.ce))}}async function ri(a,e,t){const r=re(a),o=[],i=[],s=[];r.Tu.isEmpty()||(r.Tu.forEach(((c,d)=>{s.push(r.pu(d,e,t).then((p=>{if((p||t)&&r.isPrimaryClient){const h=p?!p.fromCache:t?.targetChanges.get(d.targetId)?.current;r.sharedClientState.updateQueryState(d.targetId,h?"current":"not-current")}if(p){o.push(p);const h=vl.As(d.targetId,p);i.push(h)}})))})),await Promise.all(s),r.Pu.H_(o),await(async function(d,p){const h=re(d);try{await h.persistence.runTransaction("notifyLocalViewChanges","readwrite",(m=>N.forEach(p,(f=>N.forEach(f.Es,(v=>h.persistence.referenceDelegate.addReference(m,f.targetId,v))).next((()=>N.forEach(f.ds,(v=>h.persistence.referenceDelegate.removeReference(m,f.targetId,v)))))))))}catch(m){if(!Ya(m))throw m;L(Sl,"Failed to update sequence numbers: "+m)}for(const m of p){const f=m.targetId;if(!m.fromCache){const v=h.Ms.get(f),P=v.snapshotVersion,y=v.withLastLimboFreeSnapshotVersion(P);h.Ms=h.Ms.insert(f,y)}}})(r.localStore,i))}async function QS(a,e){const t=re(a);if(!t.currentUser.isEqual(e)){L(_l,"User change. New user:",e.toKey());const r=await Ru(t.localStore,e);t.currentUser=e,(function(i,s){i.mu.forEach((c=>{c.forEach((d=>{d.reject(new O(M.CANCELLED,s))}))})),i.mu.clear()})(t,"'waitForPendingWrites' promise is rejected due to a user change."),t.sharedClientState.handleUserChange(e,r.removedBatchIds,r.addedBatchIds),await ri(t,r.Ls)}}function KS(a,e){const t=re(a),r=t.Au.get(e);if(r&&r.hu)return le().add(r.key);{let o=le();const i=t.Iu.get(e);if(!i)return o;for(const s of i){const c=t.Tu.get(s);o=o.unionWith(c.view.nu)}return o}}function Qu(a){const e=re(a);return e.remoteStore.remoteSyncer.applyRemoteEvent=Xu.bind(null,e),e.remoteStore.remoteSyncer.getRemoteKeysForTarget=KS.bind(null,e),e.remoteStore.remoteSyncer.rejectListen=XS.bind(null,e),e.Pu.H_=IS.bind(null,e.eventManager),e.Pu.yu=FS.bind(null,e.eventManager),e}function YS(a){const e=re(a);return e.remoteStore.remoteSyncer.applySuccessfulWrite=ZS.bind(null,e),e.remoteStore.remoteSyncer.rejectFailedWrite=qS.bind(null,e),e}class Zi{constructor(){this.kind="memory",this.synchronizeTabs=!1}async initialize(e){this.serializer=gn(e.databaseInfo.databaseId),this.sharedClientState=this.Du(e),this.persistence=this.Cu(e),await this.persistence.start(),this.localStore=this.vu(e),this.gcScheduler=this.Fu(e,this.localStore),this.indexBackfillerScheduler=this.Mu(e,this.localStore)}Fu(e,t){return null}Mu(e,t){return null}vu(e){return rS(this.persistence,new Jv,e.initialUser,this.serializer)}Cu(e){return new ku(yl.mi,this.serializer)}Du(e){return new cS}async terminate(){this.gcScheduler?.stop(),this.indexBackfillerScheduler?.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}Zi.provider={build:()=>new Zi};class JS extends Zi{constructor(e){super(),this.cacheSizeBytes=e}Fu(e,t){he(this.persistence.referenceDelegate instanceof Hi,46915);const r=this.persistence.referenceDelegate.garbageCollector;return new Mv(r,e.asyncQueue,t)}Cu(e){const t=this.cacheSizeBytes!==void 0?dt.withCacheSize(this.cacheSizeBytes):dt.DEFAULT;return new ku((r=>Hi.mi(r,t)),this.serializer)}}class Fs{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=r=>Xd(this.syncEngine,r,1),this.remoteStore.remoteSyncer.handleCredentialChange=QS.bind(null,this.syncEngine),await TS(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return(function(){return new wS})()}createDatastore(e){const t=gn(e.databaseInfo.databaseId),r=(function(i){return new mS(i)})(e.databaseInfo);return(function(i,s,c,d){return new vS(i,s,c,d)})(e.authCredentials,e.appCheckCredentials,r,t)}createRemoteStore(e){return(function(r,o,i,s,c){return new xS(r,o,i,s,c)})(this.localStore,this.datastore,e.asyncQueue,(t=>Xd(this.syncEngine,t,0)),(function(){return Wd.v()?new Wd:new dS})())}createSyncEngine(e,t){return(function(o,i,s,c,d,p,h){const m=new NS(o,i,s,c,d,p);return h&&(m.gu=!0),m})(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){await(async function(t){const r=re(t);L(ha,"RemoteStore shutting down."),r.Ea.add(5),await ti(r),r.Aa.shutdown(),r.Ra.set("Unknown")})(this.remoteStore),this.datastore?.terminate(),this.eventManager?.terminate()}}Fs.provider={build:()=>new Fs};class Ku{constructor(e){this.observer=e,this.muted=!1}next(e){this.muted||this.observer.next&&this.Ou(this.observer.next,e)}error(e){this.muted||(this.observer.error?this.Ou(this.observer.error,e):cr("Uncaught Error in snapshot listener:",e.toString()))}Nu(){this.muted=!0}Ou(e,t){setTimeout((()=>{this.muted||e(t)}),0)}}const Ur="FirestoreClient";class e2{constructor(e,t,r,o,i){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=r,this.databaseInfo=o,this.user=Je.UNAUTHENTICATED,this.clientId=ol.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this._uninitializedComponentsProvider=i,this.authCredentials.start(r,(async s=>{L(Ur,"Received user=",s.uid),await this.authCredentialListener(s),this.user=s})),this.appCheckCredentials.start(r,(s=>(L(Ur,"Received new app check token=",s),this.appCheckCredentialListener(s,this.user))))}get configuration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}terminate(){this.asyncQueue.enterRestrictedMode();const e=new _r;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(t){const r=jl(t,"Failed to shutdown persistence");e.reject(r)}})),e.promise}}async function ts(a,e){a.asyncQueue.verifyOperationInProgress(),L(Ur,"Initializing OfflineComponentProvider");const t=a.configuration;await e.initialize(t);let r=t.initialUser;a.setCredentialChangeListener((async o=>{r.isEqual(o)||(await Ru(e.localStore,o),r=o)})),e.persistence.setDatabaseDeletedListener((()=>a.terminate())),a._offlineComponents=e}async function qd(a,e){a.asyncQueue.verifyOperationInProgress();const t=await t2(a);L(Ur,"Initializing OnlineComponentProvider"),await e.initialize(t,a.configuration),a.setCredentialChangeListener((r=>zd(e.remoteStore,r))),a.setAppCheckTokenChangeListener(((r,o)=>zd(e.remoteStore,o))),a._onlineComponents=e}async function t2(a){if(!a._offlineComponents)if(a._uninitializedComponentsProvider){L(Ur,"Using user provided OfflineComponentProvider");try{await ts(a,a._uninitializedComponentsProvider._offline)}catch(e){const t=e;if(!(function(o){return o.name==="FirebaseError"?o.code===M.FAILED_PRECONDITION||o.code===M.UNIMPLEMENTED:!(typeof DOMException<"u"&&o instanceof DOMException)||o.code===22||o.code===20||o.code===11})(t))throw t;La("Error using user provided cache. Falling back to memory cache: "+t),await ts(a,new Zi)}}else L(Ur,"Using default OfflineComponentProvider"),await ts(a,new JS(void 0));return a._offlineComponents}async function Yu(a){return a._onlineComponents||(a._uninitializedComponentsProvider?(L(Ur,"Using user provided OnlineComponentProvider"),await qd(a,a._uninitializedComponentsProvider._online)):(L(Ur,"Using default OnlineComponentProvider"),await qd(a,new Fs))),a._onlineComponents}function r2(a){return Yu(a).then((e=>e.syncEngine))}async function Bs(a){const e=await Yu(a),t=e.eventManager;return t.onListen=WS.bind(null,e.syncEngine),t.onUnlisten=OS.bind(null,e.syncEngine),t.onFirstRemoteStoreListen=GS.bind(null,e.syncEngine),t.onLastRemoteStoreUnlisten=LS.bind(null,e.syncEngine),t}function a2(a,e,t={}){const r=new _r;return a.asyncQueue.enqueueAndForget((async()=>(function(i,s,c,d,p){const h=new Ku({next:f=>{h.Nu(),s.enqueueAndForget((()=>Gu(i,m))),f.fromCache&&d.source==="server"?p.reject(new O(M.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):p.resolve(f)},error:f=>p.reject(f)}),m=new zu(c,h,{includeMetadataChanges:!0,qa:!0});return Wu(i,m)})(await Bs(a),a.asyncQueue,e,t,r))),r.promise}function Ju(a){const e={};return a.timeoutSeconds!==void 0&&(e.timeoutSeconds=a.timeoutSeconds),e}const $d=new Map;const em="firestore.googleapis.com",Qd=!0;class Kd{constructor(e){if(e.host===void 0){if(e.ssl!==void 0)throw new O(M.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host=em,this.ssl=Qd}else this.host=e.host,this.ssl=e.ssl??Qd;if(this.isUsingEmulator=e.emulatorOptions!==void 0,this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,this.localCache=e.localCache,e.cacheSizeBytes===void 0)this.cacheSizeBytes=Cu;else{if(e.cacheSizeBytes!==-1&&e.cacheSizeBytes<Bv)throw new O(M.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}by("experimentalForceLongPolling",e.experimentalForceLongPolling,"experimentalAutoDetectLongPolling",e.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:e.experimentalAutoDetectLongPolling===void 0?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=Ju(e.experimentalLongPollingOptions??{}),(function(r){if(r.timeoutSeconds!==void 0){if(isNaN(r.timeoutSeconds))throw new O(M.INVALID_ARGUMENT,`invalid long polling timeout: ${r.timeoutSeconds} (must not be NaN)`);if(r.timeoutSeconds<5)throw new O(M.INVALID_ARGUMENT,`invalid long polling timeout: ${r.timeoutSeconds} (minimum allowed value is 5)`);if(r.timeoutSeconds>30)throw new O(M.INVALID_ARGUMENT,`invalid long polling timeout: ${r.timeoutSeconds} (maximum allowed value is 30)`)}})(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&(function(r,o){return r.timeoutSeconds===o.timeoutSeconds})(this.experimentalLongPollingOptions,e.experimentalLongPollingOptions)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class vn{constructor(e,t,r,o){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=r,this._app=o,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new Kd({}),this._settingsFrozen=!1,this._emulatorOptions={},this._terminateTask="notTerminated"}get app(){if(!this._app)throw new O(M.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return this._terminateTask!=="notTerminated"}_setSettings(e){if(this._settingsFrozen)throw new O(M.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new Kd(e),this._emulatorOptions=e.emulatorOptions||{},e.credentials!==void 0&&(this._authCredentials=(function(r){if(!r)return new py;switch(r.type){case"firstParty":return new gy(r.sessionIndex||"0",r.iamToken||null,r.authTokenFactory||null);case"provider":return r.client;default:throw new O(M.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}})(e.credentials))}_getSettings(){return this._settings}_getEmulatorOptions(){return this._emulatorOptions}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask==="notTerminated"&&(this._terminateTask=this._terminate()),this._terminateTask}async _restart(){this._terminateTask==="notTerminated"?await this._terminate():this._terminateTask="notTerminated"}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return(function(t){const r=$d.get(t);r&&(L("ComponentProvider","Removing Datastore"),$d.delete(t),r.terminate())})(this),Promise.resolve()}}function o2(a,e,t,r={}){a=Ut(a,vn);const o=kp(e),i=a._getSettings(),s={...i,emulatorOptions:a._getEmulatorOptions()},c=`${e}:${t}`;o&&(Wg(`https://${c}`),Gg("Firestore",!0)),i.host!==em&&i.host!==c&&La("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used.");const d={...i,host:c,ssl:o,emulatorOptions:r};if(!zg(d,s)&&(a._setSettings(d),r.mockUserToken)){let p,h;if(typeof r.mockUserToken=="string")p=r.mockUserToken,h=Je.MOCK_USER;else{p=Og(r.mockUserToken,a._app?.options.projectId);const m=r.mockUserToken.sub||r.mockUserToken.user_id;if(!m)throw new O(M.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");h=new Je(m)}a._authCredentials=new hy(new Mh(p,h))}}class zr{constructor(e,t,r){this.converter=t,this._query=r,this.type="query",this.firestore=e}withConverter(e){return new zr(this.firestore,e,this._query)}}class Fe{constructor(e,t,r){this.converter=t,this._key=r,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new Cr(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new Fe(this.firestore,e,this._key)}toJSON(){return{type:Fe._jsonSchemaVersion,referencePath:this._key.toString()}}static fromJSON(e,t,r){if(Yo(t,Fe._jsonSchema))return new Fe(e,r||null,new $(ve.fromString(t.referencePath)))}}Fe._jsonSchemaVersion="firestore/documentReference/1.0",Fe._jsonSchema={type:Ne("string",Fe._jsonSchemaVersion),referencePath:Ne("string")};class Cr extends zr{constructor(e,t,r){super(e,t,dl(r)),this._path=r,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new Fe(this.firestore,null,new $(e))}withConverter(e){return new Cr(this.firestore,e,this._path)}}function i2(a,e,...t){if(a=er(a),Nh("collection","path",e),a instanceof vn){const r=ve.fromString(e,...t);return dd(r),new Cr(a,null,r)}{if(!(a instanceof Fe||a instanceof Cr))throw new O(M.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const r=a._path.child(ve.fromString(e,...t));return dd(r),new Cr(a.firestore,null,r)}}function n2(a,e,...t){if(a=er(a),arguments.length===1&&(e=ol.newId()),Nh("doc","path",e),a instanceof vn){const r=ve.fromString(e,...t);return cd(r),new Fe(a,null,new $(r))}{if(!(a instanceof Fe||a instanceof Cr))throw new O(M.INVALID_ARGUMENT,"Expected first argument to doc() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const r=a._path.child(ve.fromString(e,...t));return cd(r),new Fe(a.firestore,a instanceof Cr?a.converter:null,new $(r))}}const Yd="AsyncQueue";class Jd{constructor(e=Promise.resolve()){this.Xu=[],this.ec=!1,this.tc=[],this.nc=null,this.rc=!1,this.sc=!1,this.oc=[],this.M_=new Vu(this,"async_queue_retry"),this._c=()=>{const r=es();r&&L(Yd,"Visibility state changed to "+r.visibilityState),this.M_.w_()},this.ac=e;const t=es();t&&typeof t.addEventListener=="function"&&t.addEventListener("visibilitychange",this._c)}get isShuttingDown(){return this.ec}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.uc(),this.cc(e)}enterRestrictedMode(e){if(!this.ec){this.ec=!0,this.sc=e||!1;const t=es();t&&typeof t.removeEventListener=="function"&&t.removeEventListener("visibilitychange",this._c)}}enqueue(e){if(this.uc(),this.ec)return new Promise((()=>{}));const t=new _r;return this.cc((()=>this.ec&&this.sc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise))).then((()=>t.promise))}enqueueRetryable(e){this.enqueueAndForget((()=>(this.Xu.push(e),this.lc())))}async lc(){if(this.Xu.length!==0){try{await this.Xu[0](),this.Xu.shift(),this.M_.reset()}catch(e){if(!Ya(e))throw e;L(Yd,"Operation failed with retryable error: "+e)}this.Xu.length>0&&this.M_.p_((()=>this.lc()))}}cc(e){const t=this.ac.then((()=>(this.rc=!0,e().catch((r=>{throw this.nc=r,this.rc=!1,cr("INTERNAL UNHANDLED ERROR: ",ep(r)),r})).then((r=>(this.rc=!1,r))))));return this.ac=t,t}enqueueAfterDelay(e,t,r){this.uc(),this.oc.indexOf(e)>-1&&(t=0);const o=Al.createAndSchedule(this,e,t,r,(i=>this.hc(i)));return this.tc.push(o),o}uc(){this.nc&&J(47125,{Pc:ep(this.nc)})}verifyOperationInProgress(){}async Tc(){let e;do e=this.ac,await e;while(e!==this.ac)}Ic(e){for(const t of this.tc)if(t.timerId===e)return!0;return!1}Ec(e){return this.Tc().then((()=>{this.tc.sort(((t,r)=>t.targetTimeMs-r.targetTimeMs));for(const t of this.tc)if(t.skipDelay(),e!=="all"&&t.timerId===e)break;return this.Tc()}))}dc(e){this.oc.push(e)}hc(e){const t=this.tc.indexOf(e);this.tc.splice(t,1)}}function ep(a){let e=a.message||"";return a.stack&&(e=a.stack.includes(a.message)?a.stack:a.message+`
|
|
126
|
+
`+a.stack),e}function tp(a){return(function(t,r){if(typeof t!="object"||t===null)return!1;const o=t;for(const i of r)if(i in o&&typeof o[i]=="function")return!0;return!1})(a,["next","error","complete"])}class Mr extends vn{constructor(e,t,r,o){super(e,t,r,o),this.type="firestore",this._queue=new Jd,this._persistenceKey=o?.name||"[DEFAULT]"}async _terminate(){if(this._firestoreClient){const e=this._firestoreClient.terminate();this._queue=new Jd(e),this._firestoreClient=void 0,await e}}}function s2(a,e){const t=typeof a=="object"?a:Ug(),r=typeof a=="string"?a:Gi,o=Mg(t,"firestore").getImmediate({identifier:r});if(!o._initialized){const i=Ng("firestore");i&&o2(o,...i)}return o}function kl(a){if(a._terminated)throw new O(M.FAILED_PRECONDITION,"The client has already been terminated.");return a._firestoreClient||l2(a),a._firestoreClient}function l2(a){const e=a._freezeSettings(),t=(function(o,i,s,c){return new Vy(o,i,s,c.host,c.ssl,c.experimentalForceLongPolling,c.experimentalAutoDetectLongPolling,Ju(c.experimentalLongPollingOptions),c.useFetchStreams,c.isUsingEmulator)})(a._databaseId,a._app?.options.appId||"",a._persistenceKey,e);a._componentsProvider||e.localCache?._offlineComponentProvider&&e.localCache?._onlineComponentProvider&&(a._componentsProvider={_offline:e.localCache._offlineComponentProvider,_online:e.localCache._onlineComponentProvider}),a._firestoreClient=new e2(a._authCredentials,a._appCheckCredentials,a._queue,t,a._componentsProvider&&(function(o){const i=o?._online.build();return{_offline:o?._offline.build(i),_online:i}})(a._componentsProvider))}class Vt{constructor(e){this._byteString=e}static fromBase64String(e){try{return new Vt(Qe.fromBase64String(e))}catch(t){throw new O(M.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+t)}}static fromUint8Array(e){return new Vt(Qe.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}toJSON(){return{type:Vt._jsonSchemaVersion,bytes:this.toBase64()}}static fromJSON(e){if(Yo(e,Vt._jsonSchema))return Vt.fromBase64String(e.bytes)}}Vt._jsonSchemaVersion="firestore/bytes/1.0",Vt._jsonSchema={type:Ne("string",Vt._jsonSchemaVersion),bytes:Ne("string")};class Sn{constructor(...e){for(let t=0;t<e.length;++t)if(e[t].length===0)throw new O(M.INVALID_ARGUMENT,"Invalid field name at argument $(i + 1). Field names must not be empty.");this._internalPath=new qe(e)}isEqual(e){return this._internalPath.isEqual(e._internalPath)}}class ai{constructor(e){this._methodName=e}}class Yt{constructor(e,t){if(!isFinite(e)||e<-90||e>90)throw new O(M.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||t>180)throw new O(M.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}_compareTo(e){return se(this._lat,e._lat)||se(this._long,e._long)}toJSON(){return{latitude:this._lat,longitude:this._long,type:Yt._jsonSchemaVersion}}static fromJSON(e){if(Yo(e,Yt._jsonSchema))return new Yt(e.latitude,e.longitude)}}Yt._jsonSchemaVersion="firestore/geoPoint/1.0",Yt._jsonSchema={type:Ne("string",Yt._jsonSchemaVersion),latitude:Ne("number"),longitude:Ne("number")};class Jt{constructor(e){this._values=(e||[]).map((t=>t))}toArray(){return this._values.map((e=>e))}isEqual(e){return(function(r,o){if(r.length!==o.length)return!1;for(let i=0;i<r.length;++i)if(r[i]!==o[i])return!1;return!0})(this._values,e._values)}toJSON(){return{type:Jt._jsonSchemaVersion,vectorValues:this._values}}static fromJSON(e){if(Yo(e,Jt._jsonSchema)){if(Array.isArray(e.vectorValues)&&e.vectorValues.every((t=>typeof t=="number")))return new Jt(e.vectorValues);throw new O(M.INVALID_ARGUMENT,"Expected 'vectorValues' field to be a number array")}}}Jt._jsonSchemaVersion="firestore/vectorValue/1.0",Jt._jsonSchema={type:Ne("string",Jt._jsonSchemaVersion),vectorValues:Ne("object")};const c2=/^__.*__$/;class d2{constructor(e,t,r){this.data=e,this.fieldMask=t,this.fieldTransforms=r}toMutation(e,t){return this.fieldMask!==null?new Gr(e,this.data,this.fieldMask,t,this.fieldTransforms):new Jo(e,this.data,t,this.fieldTransforms)}}class tm{constructor(e,t,r){this.data=e,this.fieldMask=t,this.fieldTransforms=r}toMutation(e,t){return new Gr(e,this.data,this.fieldMask,t,this.fieldTransforms)}}function rm(a){switch(a){case 0:case 2:case 1:return!0;case 3:case 4:return!1;default:throw J(40011,{Ac:a})}}class Rl{constructor(e,t,r,o,i,s){this.settings=e,this.databaseId=t,this.serializer=r,this.ignoreUndefinedProperties=o,i===void 0&&this.Rc(),this.fieldTransforms=i||[],this.fieldMask=s||[]}get path(){return this.settings.path}get Ac(){return this.settings.Ac}Vc(e){return new Rl({...this.settings,...e},this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}mc(e){const t=this.path?.child(e),r=this.Vc({path:t,fc:!1});return r.gc(e),r}yc(e){const t=this.path?.child(e),r=this.Vc({path:t,fc:!1});return r.Rc(),r}wc(e){return this.Vc({path:void 0,fc:!0})}Sc(e){return qi(e,this.settings.methodName,this.settings.bc||!1,this.path,this.settings.Dc)}contains(e){return this.fieldMask.find((t=>e.isPrefixOf(t)))!==void 0||this.fieldTransforms.find((t=>e.isPrefixOf(t.field)))!==void 0}Rc(){if(this.path)for(let e=0;e<this.path.length;e++)this.gc(this.path.get(e))}gc(e){if(e.length===0)throw this.Sc("Document fields must not be empty");if(rm(this.Ac)&&c2.test(e))throw this.Sc('Document fields cannot begin and end with "__"')}}class p2{constructor(e,t,r){this.databaseId=e,this.ignoreUndefinedProperties=t,this.serializer=r||gn(e)}Cc(e,t,r,o=!1){return new Rl({Ac:e,methodName:t,Dc:r,path:qe.emptyPath(),fc:!1,bc:o},this.databaseId,this.serializer,this.ignoreUndefinedProperties)}}function xn(a){const e=a._freezeSettings(),t=gn(a._databaseId);return new p2(a._databaseId,!!e.ignoreUndefinedProperties,t)}function am(a,e,t,r,o,i={}){const s=a.Cc(i.merge||i.mergeFields?2:0,e,t,o);wl("Data must be an object, but it was:",s,r);const c=om(r,s);let d,p;if(i.merge)d=new jt(s.fieldMask),p=s.fieldTransforms;else if(i.mergeFields){const h=[];for(const m of i.mergeFields){const f=Us(e,m,t);if(!s.contains(f))throw new O(M.INVALID_ARGUMENT,`Field '${f}' is specified in your field mask but missing from your input data.`);nm(h,f)||h.push(f)}d=new jt(h),p=s.fieldTransforms.filter((m=>d.covers(m.field)))}else d=null,p=s.fieldTransforms;return new d2(new pt(c),d,p)}class bn extends ai{_toFieldTransform(e){if(e.Ac!==2)throw e.Ac===1?e.Sc(`${this._methodName}() can only appear at the top level of your update data`):e.Sc(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof bn}}class Tl extends ai{_toFieldTransform(e){return new gu(e.path,new Zo)}isEqual(e){return e instanceof Tl}}class Vl extends ai{constructor(e,t){super(e),this.Fc=t}_toFieldTransform(e){const t=new Qo(e.serializer,du(e.serializer,this.Fc));return new gu(e.path,t)}isEqual(e){return e instanceof Vl&&this.Fc===e.Fc}}function h2(a,e,t,r){const o=a.Cc(1,e,t);wl("Data must be an object, but it was:",o,r);const i=[],s=pt.empty();Wr(r,((d,p)=>{const h=Il(e,d,t);p=er(p);const m=o.yc(h);if(p instanceof bn)i.push(h);else{const f=oi(p,m);f!=null&&(i.push(h),s.set(h,f))}}));const c=new jt(i);return new tm(s,c,o.fieldTransforms)}function u2(a,e,t,r,o,i){const s=a.Cc(1,e,t),c=[Us(e,r,t)],d=[o];if(i.length%2!=0)throw new O(M.INVALID_ARGUMENT,`Function ${e}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let f=0;f<i.length;f+=2)c.push(Us(e,i[f])),d.push(i[f+1]);const p=[],h=pt.empty();for(let f=c.length-1;f>=0;--f)if(!nm(p,c[f])){const v=c[f];let P=d[f];P=er(P);const y=s.yc(v);if(P instanceof bn)p.push(v);else{const A=oi(P,y);A!=null&&(p.push(v),h.set(v,A))}}const m=new jt(p);return new tm(h,m,s.fieldTransforms)}function m2(a,e,t,r=!1){return oi(t,a.Cc(r?4:3,e))}function oi(a,e){if(im(a=er(a)))return wl("Unsupported field value:",e,a),om(a,e);if(a instanceof ai)return(function(r,o){if(!rm(o.Ac))throw o.Sc(`${r._methodName}() can only be used with update() and set()`);if(!o.path)throw o.Sc(`${r._methodName}() is not currently supported inside arrays`);const i=r._toFieldTransform(o);i&&o.fieldTransforms.push(i)})(a,e),null;if(a===void 0&&e.ignoreUndefinedProperties)return null;if(e.path&&e.fieldMask.push(e.path),a instanceof Array){if(e.settings.fc&&e.Ac!==4)throw e.Sc("Nested arrays are not supported");return(function(r,o){const i=[];let s=0;for(const c of r){let d=oi(c,o.wc(s));d==null&&(d={nullValue:"NULL_VALUE"}),i.push(d),s++}return{arrayValue:{values:i}}})(a,e)}return(function(r,o){if((r=er(r))===null)return{nullValue:"NULL_VALUE"};if(typeof r=="number")return du(o.serializer,r);if(typeof r=="boolean")return{booleanValue:r};if(typeof r=="string")return{stringValue:r};if(r instanceof Date){const i=xe.fromDate(r);return{timestampValue:Li(o.serializer,i)}}if(r instanceof xe){const i=new xe(r.seconds,1e3*Math.floor(r.nanoseconds/1e3));return{timestampValue:Li(o.serializer,i)}}if(r instanceof Yt)return{geoPointValue:{latitude:r.latitude,longitude:r.longitude}};if(r instanceof Vt)return{bytesValue:bu(o.serializer,r._byteString)};if(r instanceof Fe){const i=o.databaseId,s=r.firestore._databaseId;if(!s.isEqual(i))throw o.Sc(`Document reference is for database ${s.projectId}/${s.database} but should be for database ${i.projectId}/${i.database}`);return{referenceValue:gl(r.firestore._databaseId||o.databaseId,r._key.path)}}if(r instanceof Jt)return(function(s,c){return{mapValue:{fields:{[qh]:{stringValue:$h},[zi]:{arrayValue:{values:s.toArray().map((p=>{if(typeof p!="number")throw c.Sc("VectorValues must only contain numeric values.");return pl(c.serializer,p)}))}}}}}})(r,o);throw o.Sc(`Unsupported field value: ${nn(r)}`)})(a,e)}function om(a,e){const t={};return zh(a)?e.path&&e.path.length>0&&e.fieldMask.push(e.path):Wr(a,((r,o)=>{const i=oi(o,e.mc(r));i!=null&&(t[r]=i)})),{mapValue:{fields:t}}}function im(a){return!(typeof a!="object"||a===null||a instanceof Array||a instanceof Date||a instanceof xe||a instanceof Yt||a instanceof Vt||a instanceof Fe||a instanceof ai||a instanceof Jt)}function wl(a,e,t){if(!im(t)||!Wh(t)){const r=nn(t);throw r==="an object"?e.Sc(a+" a custom object"):e.Sc(a+" "+r)}}function Us(a,e,t){if((e=er(e))instanceof Sn)return e._internalPath;if(typeof e=="string")return Il(a,e);throw qi("Field path arguments must be of type string or ",a,!1,void 0,t)}const g2=new RegExp("[~\\*/\\[\\]]");function Il(a,e,t){if(e.search(g2)>=0)throw qi(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`,a,!1,void 0,t);try{return new Sn(...e.split("."))._internalPath}catch{throw qi(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,a,!1,void 0,t)}}function qi(a,e,t,r,o){const i=r&&!r.isEmpty(),s=o!==void 0;let c=`Function ${e}() called with invalid data`;t&&(c+=" (via `toFirestore()`)"),c+=". ";let d="";return(i||s)&&(d+=" (found",i&&(d+=` in field ${r}`),s&&(d+=` in document ${o}`),d+=")"),new O(M.INVALID_ARGUMENT,c+a+d)}function nm(a,e){return a.some((t=>t.isEqual(e)))}class sm{constructor(e,t,r,o,i){this._firestore=e,this._userDataWriter=t,this._key=r,this._document=o,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new Fe(this._firestore,this._converter,this._key)}exists(){return this._document!==null}data(){if(this._document){if(this._converter){const e=new f2(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){const t=this._document.data.field(Fl("DocumentSnapshot.get",e));if(t!==null)return this._userDataWriter.convertValue(t)}}}class f2 extends sm{data(){return super.data()}}function Fl(a,e){return typeof e=="string"?Il(a,e):e instanceof Sn?e._internalPath:e._delegate._internalPath}function lm(a){if(a.limitType==="L"&&a.explicitOrderBy.length===0)throw new O(M.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class Bl{}class cm extends Bl{}function T1(a,e,...t){let r=[];e instanceof Bl&&r.push(e),r=r.concat(t),(function(i){const s=i.filter((d=>d instanceof Ml)).length,c=i.filter((d=>d instanceof Ul)).length;if(s>1||s>0&&c>0)throw new O(M.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")})(r);for(const o of r)a=o._apply(a);return a}class Ul extends cm{constructor(e,t,r){super(),this._field=e,this._op=t,this._value=r,this.type="where"}static _create(e,t,r){return new Ul(e,t,r)}_apply(e){const t=this._parse(e);return dm(e._query,t),new zr(e.firestore,e.converter,js(e._query,t))}_parse(e){const t=xn(e.firestore);return(function(i,s,c,d,p,h,m){let f;if(p.isKeyField()){if(h==="array-contains"||h==="array-contains-any")throw new O(M.INVALID_ARGUMENT,`Invalid Query. You can't perform '${h}' queries on documentId().`);if(h==="in"||h==="not-in"){ap(m,h);const P=[];for(const y of m)P.push(rp(d,i,y));f={arrayValue:{values:P}}}else f=rp(d,i,m)}else h!=="in"&&h!=="not-in"&&h!=="array-contains-any"||ap(m,h),f=m2(c,s,m,h==="in"||h==="not-in");return Me.create(p,h,f)})(e._query,"where",t,e.firestore._databaseId,this._field,this._op,this._value)}}class Ml extends Bl{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(e,t){return new Ml(e,t)}_parse(e){const t=this._queryConstraints.map((r=>r._parse(e))).filter((r=>r.getFilters().length>0));return t.length===1?t[0]:Wt.create(t,this._getOperator())}_apply(e){const t=this._parse(e);return t.getFilters().length===0?e:((function(o,i){let s=o;const c=i.getFlattenedFilters();for(const d of c)dm(s,d),s=js(s,d)})(e._query,t),new zr(e.firestore,e.converter,js(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return this.type==="and"?"and":"or"}}class Nl extends cm{constructor(e,t){super(),this._field=e,this._direction=t,this.type="orderBy"}static _create(e,t){return new Nl(e,t)}_apply(e){const t=(function(o,i,s){if(o.startAt!==null)throw new O(M.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(o.endAt!==null)throw new O(M.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");return new Xo(i,s)})(e._query,this._field,this._direction);return new zr(e.firestore,e.converter,(function(o,i){const s=o.explicitOrderBy.concat([i]);return new Ja(o.path,o.collectionGroup,s,o.filters.slice(),o.limit,o.limitType,o.startAt,o.endAt)})(e._query,t))}}function V1(a,e="asc"){const t=e,r=Fl("orderBy",a);return Nl._create(r,t)}function rp(a,e,t){if(typeof(t=er(t))=="string"){if(t==="")throw new O(M.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!au(e)&&t.indexOf("/")!==-1)throw new O(M.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${t}' contains a '/' character.`);const r=e.path.child(ve.fromString(t));if(!$.isDocumentKey(r))throw new O(M.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${r}' is not because it has an odd number of segments (${r.length}).`);return vd(a,new $(r))}if(t instanceof Fe)return vd(a,t._key);throw new O(M.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${nn(t)}.`)}function ap(a,e){if(!Array.isArray(a)||a.length===0)throw new O(M.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${e.toString()}' filters.`)}function dm(a,e){const t=(function(o,i){for(const s of o)for(const c of s.getFlattenedFilters())if(i.indexOf(c.op)>=0)return c.op;return null})(a.filters,(function(o){switch(o){case"!=":return["!=","not-in"];case"array-contains-any":case"in":return["not-in"];case"not-in":return["array-contains-any","in","not-in","!="];default:return[]}})(e.op));if(t!==null)throw t===e.op?new O(M.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${e.op.toString()}' filter.`):new O(M.INVALID_ARGUMENT,`Invalid query. You cannot use '${e.op.toString()}' filters with '${t.toString()}' filters.`)}class y2{convertValue(e,t="none"){switch(Fr(e)){case 0:return null;case 1:return e.booleanValue;case 2:return Ie(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(Ir(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 11:return this.convertObject(e.mapValue,t);case 10:return this.convertVectorValue(e.mapValue);default:throw J(62114,{value:e})}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,t="none"){const r={};return Wr(e,((o,i)=>{r[o]=this.convertValue(i,t)})),r}convertVectorValue(e){const t=e.fields?.[zi].arrayValue?.values?.map((r=>Ie(r.doubleValue)));return new Jt(t)}convertGeoPoint(e){return new Yt(Ie(e.latitude),Ie(e.longitude))}convertArray(e,t){return(e.values||[]).map((r=>this.convertValue(r,t)))}convertServerTimestamp(e,t){switch(t){case"previous":const r=cn(e);return r==null?null:this.convertValue(r,t);case"estimate":return this.convertTimestamp(Oo(e));default:return null}}convertTimestamp(e){const t=wr(e);return new xe(t.seconds,t.nanos)}convertDocumentKey(e,t){const r=ve.fromString(e);he(_u(r),9688,{name:e});const o=new Lo(r.get(1),r.get(3)),i=new $(r.popFirst(5));return o.isEqual(t)||cr(`Document ${i} contains a document reference within a different database (${o.projectId}/${o.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}}function pm(a,e,t){let r;return r=a?t&&(t.merge||t.mergeFields)?a.toFirestore(e,t):a.toFirestore(e):e,r}class Eo{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class sa extends sm{constructor(e,t,r,o,i,s){super(e,t,r,o,s),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){const t=new Ti(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){const r=this._document.data.field(Fl("DocumentSnapshot.get",e));if(r!==null)return this._userDataWriter.convertValue(r,t.serverTimestamps)}}toJSON(){if(this.metadata.hasPendingWrites)throw new O(M.FAILED_PRECONDITION,"DocumentSnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().");const e=this._document,t={};return t.type=sa._jsonSchemaVersion,t.bundle="",t.bundleSource="DocumentSnapshot",t.bundleName=this._key.toString(),!e||!e.isValidDocument()||!e.isFoundDocument()?t:(this._userDataWriter.convertObjectMap(e.data.value.mapValue.fields,"previous"),t.bundle=(this._firestore,this.ref.path,"NOT SUPPORTED"),t)}}sa._jsonSchemaVersion="firestore/documentSnapshot/1.0",sa._jsonSchema={type:Ne("string",sa._jsonSchemaVersion),bundleSource:Ne("string","DocumentSnapshot"),bundleName:Ne("string"),bundle:Ne("string")};class Ti extends sa{data(e={}){return super.data(e)}}class la{constructor(e,t,r,o){this._firestore=e,this._userDataWriter=t,this._snapshot=o,this.metadata=new Eo(o.hasPendingWrites,o.fromCache),this.query=r}get docs(){const e=[];return this.forEach((t=>e.push(t))),e}get size(){return this._snapshot.docs.size}get empty(){return this.size===0}forEach(e,t){this._snapshot.docs.forEach((r=>{e.call(t,new Ti(this._firestore,this._userDataWriter,r.key,r,new Eo(this._snapshot.mutatedKeys.has(r.key),this._snapshot.fromCache),this.query.converter))}))}docChanges(e={}){const t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new O(M.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=(function(o,i){if(o._snapshot.oldDocs.isEmpty()){let s=0;return o._snapshot.docChanges.map((c=>{const d=new Ti(o._firestore,o._userDataWriter,c.doc.key,c.doc,new Eo(o._snapshot.mutatedKeys.has(c.doc.key),o._snapshot.fromCache),o.query.converter);return c.doc,{type:"added",doc:d,oldIndex:-1,newIndex:s++}}))}{let s=o._snapshot.oldDocs;return o._snapshot.docChanges.filter((c=>i||c.type!==3)).map((c=>{const d=new Ti(o._firestore,o._userDataWriter,c.doc.key,c.doc,new Eo(o._snapshot.mutatedKeys.has(c.doc.key),o._snapshot.fromCache),o.query.converter);let p=-1,h=-1;return c.type!==0&&(p=s.indexOf(c.doc.key),s=s.delete(c.doc.key)),c.type!==1&&(s=s.add(c.doc),h=s.indexOf(c.doc.key)),{type:v2(c.type),doc:d,oldIndex:p,newIndex:h}}))}})(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}toJSON(){if(this.metadata.hasPendingWrites)throw new O(M.FAILED_PRECONDITION,"QuerySnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().");const e={};e.type=la._jsonSchemaVersion,e.bundleSource="QuerySnapshot",e.bundleName=ol.newId(),this._firestore._databaseId.database,this._firestore._databaseId.projectId;const t=[],r=[],o=[];return this.docs.forEach((i=>{i._document!==null&&(t.push(i._document),r.push(this._userDataWriter.convertObjectMap(i._document.data.value.mapValue.fields,"previous")),o.push(i.ref.path))})),e.bundle=(this._firestore,this.query._query,e.bundleName,"NOT SUPPORTED"),e}}function v2(a){switch(a){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return J(61501,{type:a})}}la._jsonSchemaVersion="firestore/querySnapshot/1.0",la._jsonSchema={type:Ne("string",la._jsonSchemaVersion),bundleSource:Ne("string","QuerySnapshot"),bundleName:Ne("string"),bundle:Ne("string")};class Wl extends y2{constructor(e){super(),this.firestore=e}convertBytes(e){return new Vt(e)}convertReference(e){const t=this.convertDocumentKey(e,this.firestore._databaseId);return new Fe(this.firestore,null,t)}}function w1(a){a=Ut(a,zr);const e=Ut(a.firestore,Mr),t=kl(e),r=new Wl(e);return lm(a._query),a2(t,a._query).then((o=>new la(e,r,a,o)))}function I1(a,e,t){a=Ut(a,Fe);const r=Ut(a.firestore,Mr),o=pm(a.converter,e,t);return Pn(r,[am(xn(r),"setDoc",a._key,o,a.converter!==null,t).toMutation(a._key,Mt.none())])}function F1(a,e,t,...r){a=Ut(a,Fe);const o=Ut(a.firestore,Mr),i=xn(o);let s;return s=typeof(e=er(e))=="string"||e instanceof Sn?u2(i,"updateDoc",a._key,e,t,r):h2(i,"updateDoc",a._key,e),Pn(o,[s.toMutation(a._key,Mt.exists(!0))])}function B1(a){return Pn(Ut(a.firestore,Mr),[new hl(a._key,Mt.none())])}function U1(a,e){const t=Ut(a.firestore,Mr),r=n2(a),o=pm(a.converter,e);return Pn(t,[am(xn(a.firestore),"addDoc",r._key,o,a.converter!==null,{}).toMutation(r._key,Mt.exists(!1))]).then((()=>r))}function S2(a,...e){a=er(a);let t={includeMetadataChanges:!1,source:"default"},r=0;typeof e[r]!="object"||tp(e[r])||(t=e[r++]);const o={includeMetadataChanges:t.includeMetadataChanges,source:t.source};if(tp(e[r])){const d=e[r];e[r]=d.next?.bind(d),e[r+1]=d.error?.bind(d),e[r+2]=d.complete?.bind(d)}let i,s,c;if(a instanceof Fe)s=Ut(a.firestore,Mr),c=dl(a._key.path),i={next:d=>{e[r]&&e[r](x2(s,a,d))},error:e[r+1],complete:e[r+2]};else{const d=Ut(a,zr);s=Ut(d.firestore,Mr),c=d._query;const p=new Wl(s);i={next:h=>{e[r]&&e[r](new la(s,p,d,h))},error:e[r+1],complete:e[r+2]},lm(a._query)}return(function(p,h,m,f){const v=new Ku(f),P=new zu(h,v,m);return p.asyncQueue.enqueueAndForget((async()=>Wu(await Bs(p),P))),()=>{v.Nu(),p.asyncQueue.enqueueAndForget((async()=>Gu(await Bs(p),P)))}})(kl(s),c,o,i)}function Pn(a,e){return(function(r,o){const i=new _r;return r.asyncQueue.enqueueAndForget((async()=>HS(await r2(r),o,i))),i.promise})(kl(a),e)}function x2(a,e,t){const r=t.docs.get(e._key),o=new Wl(a);return new sa(a,o,e._key,r,new Eo(t.hasPendingWrites,t.fromCache),e.converter)}function M1(){return new Tl("serverTimestamp")}function N1(a){return new Vl("increment",a)}(function(e,t=!0){(function(o){Qa=o})(Xg),wg(new Ig("firestore",((r,{instanceIdentifier:o,options:i})=>{const s=r.getProvider("app").getImmediate(),c=new Mr(new uy(r.getProvider("auth-internal")),new fy(s,r.getProvider("app-check-internal")),(function(p,h){if(!Object.prototype.hasOwnProperty.apply(p.options,["projectId"]))throw new O(M.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Lo(p.options.projectId,h)})(s,o),s);return i={useFetchStreams:t,...i},c._setSettings(i),c}),"PUBLIC").setMultipleInstances(!0)),Vc(id,nd,e),Vc(id,nd,"esm2020")})();const b2={apiKey:"AIzaSyCRt9MewdayUI-5p3OnAU7rYn8ea_7QsAg",authDomain:"tusharbr-online.firebaseapp.com",projectId:"tusharbr-online",storageBucket:"tusharbr-online.firebasestorage.app",messagingSenderId:"482187356255",appId:"1:482187356255:web:6d698c8002607d94fa93ea",measurementId:"G-P9BM8Q5WJ7"},hm=Ep(b2,"ChatApp"),P2=s2(hm),W1=_p(hm),D2=({onNavigate:a})=>{const[e,t]=T.useState(""),[r,o]=T.useState(0),i=["sudo su","nmap -T4 -p- 10.10.10.5","hydra -L users.txt ssh://10.10.10.5","[+] ROOT ACCESS GRANTED"];T.useEffect(()=>{const v=localStorage.getItem("user_session_id")||localStorage.getItem("terminal_uid");if(!v)return;const P=i2(P2,`chats/${v}/messages`),y=S2(P,A=>{let V=0;const I=localStorage.getItem("chat_last_opened"),E=I?parseInt(I):0;A.forEach(w=>{const k=w.data();k.sender==="admin"&&!k.isDeleted&&(k.time?.toMillis?k.time.toMillis():Date.now())>E&&V++}),o(V)});return()=>y()},[]),T.useEffect(()=>{let v=0,P=0,y=!1,A=100;const V=()=>{const E=i[v];y?(t(E.substring(0,P-1)),P--,A=50):(t(E.substring(0,P+1)),P++,A=100+Math.random()*50),!y&&P===E.length?(y=!0,A=3e3):y&&P===0&&(y=!1,v=(v+1)%i.length,A=500),setTimeout(V,A)},I=setTimeout(V,500);return()=>clearTimeout(I)},[]);const s=T.useRef(null),c=v=>{if(!s.current)return;const P=s.current.getBoundingClientRect(),y=v.clientX-P.left,A=v.clientY-P.top;s.current.style.setProperty("--mouse-x",`${y}px`),s.current.style.setProperty("--mouse-y",`${A}px`)},d=()=>n.jsxs("svg",{viewBox:"0 0 64 64",width:"34",height:"34",style:{filter:"drop-shadow(0 0 6px rgba(255, 215, 0, 0.6))"},children:[n.jsx("defs",{children:n.jsxs("linearGradient",{id:"goldGrad",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[n.jsx("stop",{offset:"0%",stopColor:"#ffd700"}),n.jsx("stop",{offset:"100%",stopColor:"#b8860b"})]})}),n.jsx("rect",{x:"12",y:"6",width:"40",height:"50",rx:"4",fill:"rgba(255,215,0,0.06)",stroke:"url(#goldGrad)",strokeWidth:"2"}),n.jsx("path",{d:"M20 18 H44 M20 26 H44 M20 34 H30",stroke:"rgba(255,255,255,0.5)",strokeWidth:"1.8",strokeLinecap:"round"}),n.jsx("circle",{cx:"44",cy:"44",r:"9",fill:"url(#goldGrad)"}),n.jsx("path",{d:"M40 44 L43 47 L48 41",stroke:"#000",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),p=()=>n.jsxs("svg",{viewBox:"0 0 64 64",width:"34",height:"34",style:{filter:"drop-shadow(0 0 6px rgba(0, 229, 255, 0.5))"},children:[n.jsx("defs",{children:n.jsxs("linearGradient",{id:"blueGrad2",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[n.jsx("stop",{offset:"0%",stopColor:"#00e5ff"}),n.jsx("stop",{offset:"100%",stopColor:"#2979ff"})]})}),n.jsx("rect",{x:"8",y:"12",width:"48",height:"40",rx:"6",fill:"rgba(0, 229, 255, 0.06)",stroke:"url(#blueGrad2)",strokeWidth:"2"}),n.jsx("rect",{x:"14",y:"20",width:"18",height:"22",rx:"2",fill:"url(#blueGrad2)",opacity:"0.5"}),n.jsx("path",{d:"M38 22 H50 M38 30 H50 M38 38 H46",stroke:"rgba(255,255,255,0.6)",strokeWidth:"1.8",strokeLinecap:"round"})]}),h=()=>n.jsxs("svg",{viewBox:"0 0 64 64",width:"34",height:"34",style:{filter:"drop-shadow(0 0 6px rgba(0, 255, 136, 0.5))"},children:[n.jsx("defs",{children:n.jsxs("linearGradient",{id:"greenGrad",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[n.jsx("stop",{offset:"0%",stopColor:"#00ff88"}),n.jsx("stop",{offset:"100%",stopColor:"#00c6ff"})]})}),n.jsx("path",{d:"M8 10 Q8 6 12 6 L52 6 Q56 6 56 10 L56 38 Q56 42 52 42 L36 42 L28 56 L24 42 L12 42 Q8 42 8 38 Z",fill:"rgba(0,255,136,0.07)",stroke:"url(#greenGrad)",strokeWidth:"2"}),n.jsx("circle",{cx:"22",cy:"24",r:"3.5",fill:"url(#greenGrad)"}),n.jsx("circle",{cx:"32",cy:"24",r:"3.5",fill:"url(#greenGrad)"}),n.jsx("circle",{cx:"42",cy:"24",r:"3.5",fill:"url(#greenGrad)"})]}),m=[{name:"Certificates",icon:d(),key:"certificates",unread:0},{name:"Posts",icon:p(),key:"status",unread:0},{name:"Chat",icon:h(),key:"chat",unread:r}],f=v=>{if(v==="chat"){localStorage.setItem("chat_last_opened",Date.now().toString()),o(0),window.location.href="/chat";return}a?a(v):window.location.href=`/${v}`};return n.jsxs("div",{ref:s,onMouseMove:c,className:"glass-card spotlight-card",style:{width:"100%",margin:"0 auto 0",display:"flex",flexDirection:"column",borderTop:"none",position:"relative",background:"transparent",clipPath:"polygon(0 0, 100% 0, 100% calc(100% - 16px), calc(100% - 16px) 100%, 16px 100%, 0 calc(100% - 16px))",boxShadow:"none",border:"none"},children:[n.jsxs("div",{style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:10},children:[n.jsx("div",{style:{position:"absolute",bottom:16,right:0,top:0,width:"1.5px",background:"rgba(0, 229, 255, 0.4)"}}),n.jsx("div",{style:{position:"absolute",bottom:16,left:0,top:0,width:"1.5px",background:"rgba(0, 229, 255, 0.4)"}}),n.jsx("div",{style:{position:"absolute",bottom:0,left:16,right:16,height:"1.5px",background:"rgba(0, 229, 255, 0.4)"}}),n.jsx("svg",{width:16,height:16,style:{position:"absolute",bottom:0,left:0},children:n.jsx("line",{x1:"16",y1:"16",x2:"0",y2:"0",stroke:"rgba(0, 229, 255, 0.4)",strokeWidth:"2"})}),n.jsx("svg",{width:16,height:16,style:{position:"absolute",bottom:0,right:0},children:n.jsx("line",{x1:"0",y1:"16",x2:"16",y2:"0",stroke:"rgba(0, 229, 255, 0.4)",strokeWidth:"2"})}),n.jsx("div",{style:{position:"absolute",bottom:0,right:"40px",width:"30px",height:"2.5px",background:"#ff2160"}}),n.jsx("div",{style:{position:"absolute",bottom:0,left:"40px",width:"30px",height:"2.5px",background:"#ff2160"}})]}),n.jsx("div",{className:"spotlight-overlay"}),n.jsxs("div",{style:{height:"32px",background:"#1f2023",borderBottom:"1px solid #333",display:"flex",alignItems:"center",padding:"0 12px",fontFamily:"'Fira Code', monospace",fontSize:"0.75rem",color:"#e6e6e6",gap:"8px",whiteSpace:"nowrap",overflow:"hidden",position:"relative",zIndex:2},children:[n.jsxs("div",{style:{display:"flex",gap:"6px",marginRight:"8px"},children:[n.jsx("div",{style:{width:"10px",height:"10px",borderRadius:"50%",background:"#ff5f56"}}),n.jsx("div",{style:{width:"10px",height:"10px",borderRadius:"50%",background:"#ffbd2e"}}),n.jsx("div",{style:{width:"10px",height:"10px",borderRadius:"50%",background:"#27c93f"}})]}),n.jsx("span",{style:{color:"#00ff00",fontWeight:700,fontSize:"clamp(0.6rem, 2.8vw, 0.75rem)"},children:"kali@root"}),n.jsx("span",{style:{color:"#00ff00",fontSize:"clamp(0.6rem, 2.8vw, 0.75rem)"},children:":"}),n.jsx("span",{style:{color:"#00ff00",fontSize:"clamp(0.6rem, 2.8vw, 0.75rem)"},children:"~"}),n.jsx("span",{style:{color:"#00ff00",fontSize:"clamp(0.6rem, 2.8vw, 0.75rem)"},children:"$"}),n.jsxs("span",{style:{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis",color:"#00ff00",marginLeft:"4px",fontSize:"clamp(0.6rem, 2.8vw, 0.75rem)"},children:[e,n.jsx("span",{className:"cursor-blink",children:"_"})]})]}),n.jsx("div",{style:{padding:"25px",display:"flex",justifyContent:"space-around",alignItems:"center",background:"transparent",position:"relative",zIndex:2},children:m.map((v,P)=>n.jsxs("div",{onClick:()=>f(v.key),style:{display:"flex",flexDirection:"column",alignItems:"center",gap:"10px",cursor:"pointer",transition:"transform 0.2s",position:"relative"},onMouseEnter:y=>y.currentTarget.style.transform="scale(1.15)",onMouseLeave:y=>y.currentTarget.style.transform="scale(1)",children:[n.jsxs("div",{style:{width:"60px",height:"60px",background:v.key==="chat"?"rgba(0,255,136,0.04)":"rgba(255,255,255,0.03)",borderRadius:"14px",border:v.key==="chat"?"1px solid rgba(0, 255, 136, 0.25)":"1px solid rgba(0, 229, 255, 0.2)",display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.3s ease",position:"relative",clipPath:"polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px)"},children:[v.icon,v.unread>0&&n.jsx("div",{style:{position:"absolute",top:"-6px",right:"-6px",background:"linear-gradient(135deg, #ff2160 0%, #ff6b35 100%)",borderRadius:"20px",minWidth:"20px",height:"20px",display:"flex",alignItems:"center",justifyContent:"center",padding:"0 6px",fontSize:"11px",fontWeight:900,color:"#fff",boxShadow:"0 0 10px rgba(255,33,96,0.8)",animation:"newPulse 2s ease-in-out infinite",fontFamily:"Barlow, sans-serif"},children:v.unread>99?"99+":v.unread})]}),n.jsx("span",{style:{fontSize:"0.72rem",color:v.key==="chat"?"rgba(0,255,136,0.8)":"var(--text-gray)",fontWeight:500,fontFamily:"Barlow, sans-serif"},children:v.name})]},P))}),n.jsx("style",{children:`
|
|
127
|
+
.cursor-blink { animation: blink 1s step-end infinite; }
|
|
128
|
+
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
|
|
129
|
+
@keyframes newPulse {
|
|
130
|
+
0%, 100% { box-shadow: 0 0 8px rgba(255,33,96,0.7); transform: scale(1); }
|
|
131
|
+
50% { box-shadow: 0 0 14px rgba(255,33,96,1); transform: scale(1.05); }
|
|
132
|
+
}
|
|
133
|
+
`})]})},A2=["Tushar Rathod","Tusharbr","Tusharbr.online","Rathod Tushar","Tushar Rathod Gujarat","Tusharbr Developer","Rathod Tushar Babubhai","Rathod Tushar Babubhai Gujarat","Tushar Babubhai Rathod","Tusharbr Portfolio","Cybernetic Architect","Cybernetic Architect Tushar","TusharOS Creator","TusharOS Developer","Frontend Developer","React.js Expert","React Developer India","JavaScript Developer","TypeScript Specialist","HTML5","CSS3","SASS","Tailwind CSS","Bootstrap Expert","Framer Motion Animations","Next.js Developer","Vite.js","Web Performance Optimization","Responsive Web Design","UI/UX Design","Mobile First Design","Backend Developer","Node.js Developer","Express.js","PHP Developer","Laravel","Python Developer","Firebase Expert","MongoDB","MySQL","PostgreSQL","Cloudflare Workers","Serverless Functions","REST API Design","GraphQL","WebSockets","Real-time Databases","Game Developer","Unity 3D Developer","C# Programmer","Unity Game Design","WebGL Games","Three.js Developer","Augmented Reality","Virtual Reality","Game UI Design","Multiplayer Game Development","Shaders","Developer in Gujarat","Web Developer Ahmedabad","Software Engineer Surat","IT Specialist Vadodara","Web Design Rajkot","Morbi Web Developer","Jamnagar Game Developer","Gandhinagar IT Expert","Bhavnagar Developer","Junagadh Web Designer","Anand Developer","Navsari IT","Mehsana Web Services","Bharuch Developer","Valsad Software","Patan IT","Dahod Web","Kheda Developer","Amreli IT","Banaskantha Developer","Sabarkantha IT","Panchmahal Developer","Kutch Developer","Gandhidham IT","Bhuj Web Designer","Porbandar Developer","Surendranagar IT","Somnath Developer","Botad IT","Chhota Udepur Developer","Devbhumi Dwarka Developer","Mahisagar IT","Morbi IT City","Morbi Diploma Engineering","L.E. College Morbi","Lalpur Jamnagar Developer","Diploma in Information Technology","L.E. College Morbi Student","IT Engineer Gujarat","Certified Web Developer","Unity Certified Developer","Google Analytics Certified","TusharOS","Windows File Explorer Clone","Portfolio Website","Interactive Resume","3D Web Resume","React Portfolio Template","Secure Notes Vault","Mobile Simulator Web","Private Drive Online","Visual Studio Code","Git","GitHub","Vercel","Netlify","Heroku","Docker","Postman","Adobe Photoshop","Canva Expert","Figma","Blender 3D","Sketchfab","Best Web Developer in Jamnagar","Top Game Developer Gujarat","Freelance React Developer India","Hire Unity Developer Gujarat","Custom Web Application Developer","Cybersecurity Enthusiast Gujarat","Creative Web Portfolio 2024","Modern Web Design Trends","Interactive User Interfaces",...Array.from({length:100},(a,e)=>`Tushar Rathod Project ${e+1}`),...Array.from({length:100},(a,e)=>`Tusharbr Skill ${e+1}`),...Array.from({length:100},(a,e)=>`Gujarat IT Industry Trend ${e+1}`),...Array.from({length:100},(a,e)=>`Web Development India 202${e%10}`),...Array.from({length:100},(a,e)=>`Game Design Innovation ${e+1}`),"Portfolio of Tushar Rathod","Tushar Rathod Resume Download","Tushar Rathod Contact Number","Tushar Rathod Email Address","Tushar Rathod GitHub Repos","Tushar Rathod LinkedIn Profile","Tushar Rathod Instagram Bio","Tushar Rathod YouTube Channel","Tushar Rathod Coding Blog","Tushar Rathod Gujarati Developer","Gujarat no Developer","Pela number no developer","Maro portfolio","Web banavva mate contact karo","Game banavva mate contact karo","Artificial Intelligence","Machine Learning","Cloud Computing","Cyber Security","Data Science","Blockchain","Internet of Things","DevOps","Cybernetic Systems","Future of Web","Web 3.0","Tech Enthusiast","Open Source Contributor","Problem Solver","Creative Thinker","Lifelong Learner","Code is Poetry","Design and Code","Building the Future"],j2={"@context":"https://schema.org","@type":"WebSite",url:"https://www.tusharbr.online",name:"Tushar Rathod | Cybernetic Architect",description:"Official portfolio of Tushar Rathod. Expert in Web & Game Development.",potentialAction:{"@type":"SearchAction",target:"https://www.tusharbr.online/search?q={search_term_string}","query-input":"required name=search_term_string"}},E2={"@context":"https://schema.org","@type":"Person",name:"Tushar Rathod",url:"https://www.tusharbr.online",image:"https://www.tusharbr.online/assets/images/logo.png",sameAs:["https://www.instagram.com/tushar__br/","https://github.com/tushar-br","https://www.hackerrank.com/profile/rathodtushar1442","https://www.linkedin.com/in/tushar-br/","https://twitter.com/Tusharbr"],jobTitle:"Web & Game Developer",worksFor:{"@type":"Organization",name:"Freelance"},address:{"@type":"PostalAddress",addressLocality:"Lalpur",addressRegion:"Gujarat",addressCountry:"India"}},_2={"@context":"https://schema.org","@type":"ItemList",itemListElement:[{"@type":"SiteNavigationElement",position:1,name:"Home",url:"https://www.tusharbr.online/"},{"@type":"SiteNavigationElement",position:2,name:"About",url:"https://www.tusharbr.online/about"},{"@type":"SiteNavigationElement",position:3,name:"Projects",url:"https://www.tusharbr.online/projects"},{"@type":"SiteNavigationElement",position:4,name:"Resume",url:"https://www.tusharbr.online/resume"},{"@type":"SiteNavigationElement",position:5,name:"Contact",url:"https://www.tusharbr.online/contact"},{"@type":"SiteNavigationElement",position:6,name:"Socials",url:"https://www.tusharbr.online/socials"},{"@type":"SiteNavigationElement",position:7,name:"Status",url:"https://www.tusharbr.online/status"}]},C2=["Hire Web Developer in Ahmedabad","Ahmedabad Web Developer Hire","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Best Web Developer in Ahmedabad","Ahmedabad Web Developer Best","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Expert Web Developer in Ahmedabad","Ahmedabad Web Developer Expert","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Professional Web Developer in Ahmedabad","Ahmedabad Web Developer Professional","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Freelance Web Developer in Ahmedabad","Ahmedabad Web Developer Freelance","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Top Web Developer in Ahmedabad","Ahmedabad Web Developer Top","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Quality Web Developer in Ahmedabad","Ahmedabad Web Developer Quality","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Reliable Web Developer in Ahmedabad","Ahmedabad Web Developer Reliable","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Creative Web Developer in Ahmedabad","Ahmedabad Web Developer Creative","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Modern Web Developer in Ahmedabad","Ahmedabad Web Developer Modern","Ahmedabad Web Developer Services","Ahmedabad Web Developer Solutions","Ahmedabad Web Developer Agency","Ahmedabad Web Developer Company","Ahmedabad Web Developer Freelancer","Ahmedabad Web Developer Expertise","Ahmedabad Web Developer Project","Ahmedabad Web Developer Portfolio","Ahmedabad Web Developer Consultancy","Hire Game Developer in Ahmedabad","Ahmedabad Game Developer Hire","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Best Game Developer in Ahmedabad","Ahmedabad Game Developer Best","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Expert Game Developer in Ahmedabad","Ahmedabad Game Developer Expert","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Professional Game Developer in Ahmedabad","Ahmedabad Game Developer Professional","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Freelance Game Developer in Ahmedabad","Ahmedabad Game Developer Freelance","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Top Game Developer in Ahmedabad","Ahmedabad Game Developer Top","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Quality Game Developer in Ahmedabad","Ahmedabad Game Developer Quality","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Reliable Game Developer in Ahmedabad","Ahmedabad Game Developer Reliable","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Creative Game Developer in Ahmedabad","Ahmedabad Game Developer Creative","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Modern Game Developer in Ahmedabad","Ahmedabad Game Developer Modern","Ahmedabad Game Developer Services","Ahmedabad Game Developer Solutions","Ahmedabad Game Developer Agency","Ahmedabad Game Developer Company","Ahmedabad Game Developer Freelancer","Ahmedabad Game Developer Expertise","Ahmedabad Game Developer Project","Ahmedabad Game Developer Portfolio","Ahmedabad Game Developer Consultancy","Hire React Developer in Ahmedabad","Ahmedabad React Developer Hire","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Best React Developer in Ahmedabad","Ahmedabad React Developer Best","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Expert React Developer in Ahmedabad","Ahmedabad React Developer Expert","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Professional React Developer in Ahmedabad","Ahmedabad React Developer Professional","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Freelance React Developer in Ahmedabad","Ahmedabad React Developer Freelance","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Top React Developer in Ahmedabad","Ahmedabad React Developer Top","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Quality React Developer in Ahmedabad","Ahmedabad React Developer Quality","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Reliable React Developer in Ahmedabad","Ahmedabad React Developer Reliable","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Creative React Developer in Ahmedabad","Ahmedabad React Developer Creative","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Modern React Developer in Ahmedabad","Ahmedabad React Developer Modern","Ahmedabad React Developer Services","Ahmedabad React Developer Solutions","Ahmedabad React Developer Agency","Ahmedabad React Developer Company","Ahmedabad React Developer Freelancer","Ahmedabad React Developer Expertise","Ahmedabad React Developer Project","Ahmedabad React Developer Portfolio","Ahmedabad React Developer Consultancy","Hire Unity Developer in Ahmedabad","Ahmedabad Unity Developer Hire","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Best Unity Developer in Ahmedabad","Ahmedabad Unity Developer Best","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Expert Unity Developer in Ahmedabad","Ahmedabad Unity Developer Expert","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Professional Unity Developer in Ahmedabad","Ahmedabad Unity Developer Professional","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Freelance Unity Developer in Ahmedabad","Ahmedabad Unity Developer Freelance","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Top Unity Developer in Ahmedabad","Ahmedabad Unity Developer Top","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Quality Unity Developer in Ahmedabad","Ahmedabad Unity Developer Quality","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Reliable Unity Developer in Ahmedabad","Ahmedabad Unity Developer Reliable","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Creative Unity Developer in Ahmedabad","Ahmedabad Unity Developer Creative","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Modern Unity Developer in Ahmedabad","Ahmedabad Unity Developer Modern","Ahmedabad Unity Developer Services","Ahmedabad Unity Developer Solutions","Ahmedabad Unity Developer Agency","Ahmedabad Unity Developer Company","Ahmedabad Unity Developer Freelancer","Ahmedabad Unity Developer Expertise","Ahmedabad Unity Developer Project","Ahmedabad Unity Developer Portfolio","Ahmedabad Unity Developer Consultancy","Hire Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Hire","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Best Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Best","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Expert Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Expert","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Professional Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Professional","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Freelance Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Freelance","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Top Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Top","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Quality Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Quality","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Reliable Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Reliable","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Creative Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Creative","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Modern Full Stack Developer in Ahmedabad","Ahmedabad Full Stack Developer Modern","Ahmedabad Full Stack Developer Services","Ahmedabad Full Stack Developer Solutions","Ahmedabad Full Stack Developer Agency","Ahmedabad Full Stack Developer Company","Ahmedabad Full Stack Developer Freelancer","Ahmedabad Full Stack Developer Expertise","Ahmedabad Full Stack Developer Project","Ahmedabad Full Stack Developer Portfolio","Ahmedabad Full Stack Developer Consultancy","Hire Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Hire","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Best Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Best","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Expert Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Expert","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Professional Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Professional","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Freelance Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Freelance","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Top Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Top","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Quality Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Quality","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Reliable Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Reliable","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Creative Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Creative","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Modern Frontend Specialist in Ahmedabad","Ahmedabad Frontend Specialist Modern","Ahmedabad Frontend Specialist Services","Ahmedabad Frontend Specialist Solutions","Ahmedabad Frontend Specialist Agency","Ahmedabad Frontend Specialist Company","Ahmedabad Frontend Specialist Freelancer","Ahmedabad Frontend Specialist Expertise","Ahmedabad Frontend Specialist Project","Ahmedabad Frontend Specialist Portfolio","Ahmedabad Frontend Specialist Consultancy","Hire Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Hire","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Best Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Best","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Expert Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Expert","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Professional Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Professional","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Freelance Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Freelance","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Top Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Top","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Quality Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Quality","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Reliable Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Reliable","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Creative Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Creative","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Modern Backend Engineer in Ahmedabad","Ahmedabad Backend Engineer Modern","Ahmedabad Backend Engineer Services","Ahmedabad Backend Engineer Solutions","Ahmedabad Backend Engineer Agency","Ahmedabad Backend Engineer Company","Ahmedabad Backend Engineer Freelancer","Ahmedabad Backend Engineer Expertise","Ahmedabad Backend Engineer Project","Ahmedabad Backend Engineer Portfolio","Ahmedabad Backend Engineer Consultancy","Hire Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Hire","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Best Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Best","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Expert Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Expert","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Professional Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Professional","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Freelance Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Freelance","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Top Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Top","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Quality Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Quality","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Reliable Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Reliable","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Creative Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Creative","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Modern Node.js Expert in Ahmedabad","Ahmedabad Node.js Expert Modern","Ahmedabad Node.js Expert Services","Ahmedabad Node.js Expert Solutions","Ahmedabad Node.js Expert Agency","Ahmedabad Node.js Expert Company","Ahmedabad Node.js Expert Freelancer","Ahmedabad Node.js Expert Expertise","Ahmedabad Node.js Expert Project","Ahmedabad Node.js Expert Portfolio","Ahmedabad Node.js Expert Consultancy","Hire PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Hire","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Best PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Best","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Expert PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Expert","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Professional PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Professional","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Freelance PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Freelance","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Top PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Top","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Quality PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Quality","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Reliable PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Reliable","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Creative PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Creative","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Modern PHP Programmer in Ahmedabad","Ahmedabad PHP Programmer Modern","Ahmedabad PHP Programmer Services","Ahmedabad PHP Programmer Solutions","Ahmedabad PHP Programmer Agency","Ahmedabad PHP Programmer Company","Ahmedabad PHP Programmer Freelancer","Ahmedabad PHP Programmer Expertise","Ahmedabad PHP Programmer Project","Ahmedabad PHP Programmer Portfolio","Ahmedabad PHP Programmer Consultancy","Hire IT Consultant in Ahmedabad","Ahmedabad IT Consultant Hire","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Best IT Consultant in Ahmedabad","Ahmedabad IT Consultant Best","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Expert IT Consultant in Ahmedabad","Ahmedabad IT Consultant Expert","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Professional IT Consultant in Ahmedabad","Ahmedabad IT Consultant Professional","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Freelance IT Consultant in Ahmedabad","Ahmedabad IT Consultant Freelance","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Top IT Consultant in Ahmedabad","Ahmedabad IT Consultant Top","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Quality IT Consultant in Ahmedabad","Ahmedabad IT Consultant Quality","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Reliable IT Consultant in Ahmedabad","Ahmedabad IT Consultant Reliable","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Creative IT Consultant in Ahmedabad","Ahmedabad IT Consultant Creative","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Modern IT Consultant in Ahmedabad","Ahmedabad IT Consultant Modern","Ahmedabad IT Consultant Services","Ahmedabad IT Consultant Solutions","Ahmedabad IT Consultant Agency","Ahmedabad IT Consultant Company","Ahmedabad IT Consultant Freelancer","Ahmedabad IT Consultant Expertise","Ahmedabad IT Consultant Project","Ahmedabad IT Consultant Portfolio","Ahmedabad IT Consultant Consultancy","Hire Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Hire","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Best Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Best","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Expert Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Expert","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Professional Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Professional","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Freelance Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Freelance","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Top Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Top","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Quality Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Quality","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Reliable Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Reliable","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Creative Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Creative","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Modern Cybernetic Architect in Ahmedabad","Ahmedabad Cybernetic Architect Modern","Ahmedabad Cybernetic Architect Services","Ahmedabad Cybernetic Architect Solutions","Ahmedabad Cybernetic Architect Agency","Ahmedabad Cybernetic Architect Company","Ahmedabad Cybernetic Architect Freelancer","Ahmedabad Cybernetic Architect Expertise","Ahmedabad Cybernetic Architect Project","Ahmedabad Cybernetic Architect Portfolio","Ahmedabad Cybernetic Architect Consultancy","Hire Software Engineer in Ahmedabad","Ahmedabad Software Engineer Hire","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Best Software Engineer in Ahmedabad","Ahmedabad Software Engineer Best","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Expert Software Engineer in Ahmedabad","Ahmedabad Software Engineer Expert","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Professional Software Engineer in Ahmedabad","Ahmedabad Software Engineer Professional","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Freelance Software Engineer in Ahmedabad","Ahmedabad Software Engineer Freelance","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Top Software Engineer in Ahmedabad","Ahmedabad Software Engineer Top","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Quality Software Engineer in Ahmedabad","Ahmedabad Software Engineer Quality","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Reliable Software Engineer in Ahmedabad","Ahmedabad Software Engineer Reliable","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Creative Software Engineer in Ahmedabad","Ahmedabad Software Engineer Creative","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Modern Software Engineer in Ahmedabad","Ahmedabad Software Engineer Modern","Ahmedabad Software Engineer Services","Ahmedabad Software Engineer Solutions","Ahmedabad Software Engineer Agency","Ahmedabad Software Engineer Company","Ahmedabad Software Engineer Freelancer","Ahmedabad Software Engineer Expertise","Ahmedabad Software Engineer Project","Ahmedabad Software Engineer Portfolio","Ahmedabad Software Engineer Consultancy","Hire UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Hire","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Best UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Best","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Expert UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Expert","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Professional UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Professional","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Freelance UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Freelance","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Top UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Top","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Quality UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Quality","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Reliable UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Reliable","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Creative UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Creative","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Modern UI UX Designer in Ahmedabad","Ahmedabad UI UX Designer Modern","Ahmedabad UI UX Designer Services","Ahmedabad UI UX Designer Solutions","Ahmedabad UI UX Designer Agency","Ahmedabad UI UX Designer Company","Ahmedabad UI UX Designer Freelancer","Ahmedabad UI UX Designer Expertise","Ahmedabad UI UX Designer Project","Ahmedabad UI UX Designer Portfolio","Ahmedabad UI UX Designer Consultancy","Hire Digital Creator in Ahmedabad","Ahmedabad Digital Creator Hire","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Best Digital Creator in Ahmedabad","Ahmedabad Digital Creator Best","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Expert Digital Creator in Ahmedabad","Ahmedabad Digital Creator Expert","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Professional Digital Creator in Ahmedabad","Ahmedabad Digital Creator Professional","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Freelance Digital Creator in Ahmedabad","Ahmedabad Digital Creator Freelance","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Top Digital Creator in Ahmedabad","Ahmedabad Digital Creator Top","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Quality Digital Creator in Ahmedabad","Ahmedabad Digital Creator Quality","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Reliable Digital Creator in Ahmedabad","Ahmedabad Digital Creator Reliable","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Creative Digital Creator in Ahmedabad","Ahmedabad Digital Creator Creative","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Modern Digital Creator in Ahmedabad","Ahmedabad Digital Creator Modern","Ahmedabad Digital Creator Services","Ahmedabad Digital Creator Solutions","Ahmedabad Digital Creator Agency","Ahmedabad Digital Creator Company","Ahmedabad Digital Creator Freelancer","Ahmedabad Digital Creator Expertise","Ahmedabad Digital Creator Project","Ahmedabad Digital Creator Portfolio","Ahmedabad Digital Creator Consultancy","Hire Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Hire","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Best Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Best","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Expert Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Expert","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Professional Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Professional","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Freelance Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Freelance","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Top Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Top","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Quality Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Quality","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Reliable Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Reliable","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Creative Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Creative","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Modern Mobile App Developer in Ahmedabad","Ahmedabad Mobile App Developer Modern","Ahmedabad Mobile App Developer Services","Ahmedabad Mobile App Developer Solutions","Ahmedabad Mobile App Developer Agency","Ahmedabad Mobile App Developer Company","Ahmedabad Mobile App Developer Freelancer","Ahmedabad Mobile App Developer Expertise","Ahmedabad Mobile App Developer Project","Ahmedabad Mobile App Developer Portfolio","Ahmedabad Mobile App Developer Consultancy","Hire Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Hire","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Best Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Best","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Expert Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Expert","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Professional Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Professional","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Freelance Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Freelance","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Top Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Top","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Quality Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Quality","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Reliable Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Reliable","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Creative Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Creative","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Modern Graphics Designer in Ahmedabad","Ahmedabad Graphics Designer Modern","Ahmedabad Graphics Designer Services","Ahmedabad Graphics Designer Solutions","Ahmedabad Graphics Designer Agency","Ahmedabad Graphics Designer Company","Ahmedabad Graphics Designer Freelancer","Ahmedabad Graphics Designer Expertise","Ahmedabad Graphics Designer Project","Ahmedabad Graphics Designer Portfolio","Ahmedabad Graphics Designer Consultancy","Hire Video Editor in Ahmedabad","Ahmedabad Video Editor Hire","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Best Video Editor in Ahmedabad","Ahmedabad Video Editor Best","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Expert Video Editor in Ahmedabad","Ahmedabad Video Editor Expert","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Professional Video Editor in Ahmedabad","Ahmedabad Video Editor Professional","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Freelance Video Editor in Ahmedabad","Ahmedabad Video Editor Freelance","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Top Video Editor in Ahmedabad","Ahmedabad Video Editor Top","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Quality Video Editor in Ahmedabad","Ahmedabad Video Editor Quality","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Reliable Video Editor in Ahmedabad","Ahmedabad Video Editor Reliable","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Creative Video Editor in Ahmedabad","Ahmedabad Video Editor Creative","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Modern Video Editor in Ahmedabad","Ahmedabad Video Editor Modern","Ahmedabad Video Editor Services","Ahmedabad Video Editor Solutions","Ahmedabad Video Editor Agency","Ahmedabad Video Editor Company","Ahmedabad Video Editor Freelancer","Ahmedabad Video Editor Expertise","Ahmedabad Video Editor Project","Ahmedabad Video Editor Portfolio","Ahmedabad Video Editor Consultancy","Hire WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Hire","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Best WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Best","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Expert WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Expert","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Professional WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Professional","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Freelance WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Freelance","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Top WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Top","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Quality WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Quality","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Reliable WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Reliable","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Creative WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Creative","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Modern WordPress Expert in Ahmedabad","Ahmedabad WordPress Expert Modern","Ahmedabad WordPress Expert Services","Ahmedabad WordPress Expert Solutions","Ahmedabad WordPress Expert Agency","Ahmedabad WordPress Expert Company","Ahmedabad WordPress Expert Freelancer","Ahmedabad WordPress Expert Expertise","Ahmedabad WordPress Expert Project","Ahmedabad WordPress Expert Portfolio","Ahmedabad WordPress Expert Consultancy","Hire Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Hire","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Best Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Best","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Expert Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Expert","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Professional Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Professional","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Freelance Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Freelance","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Top Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Top","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Quality Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Quality","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Reliable Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Reliable","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Creative Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Creative","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Modern Shopify Developer in Ahmedabad","Ahmedabad Shopify Developer Modern","Ahmedabad Shopify Developer Services","Ahmedabad Shopify Developer Solutions","Ahmedabad Shopify Developer Agency","Ahmedabad Shopify Developer Company","Ahmedabad Shopify Developer Freelancer","Ahmedabad Shopify Developer Expertise","Ahmedabad Shopify Developer Project","Ahmedabad Shopify Developer Portfolio","Ahmedabad Shopify Developer Consultancy","Hire Python Programmer in Ahmedabad","Ahmedabad Python Programmer Hire","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Best Python Programmer in Ahmedabad","Ahmedabad Python Programmer Best","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Expert Python Programmer in Ahmedabad","Ahmedabad Python Programmer Expert","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Professional Python Programmer in Ahmedabad","Ahmedabad Python Programmer Professional","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Freelance Python Programmer in Ahmedabad","Ahmedabad Python Programmer Freelance","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Top Python Programmer in Ahmedabad","Ahmedabad Python Programmer Top","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Quality Python Programmer in Ahmedabad","Ahmedabad Python Programmer Quality","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Reliable Python Programmer in Ahmedabad","Ahmedabad Python Programmer Reliable","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Creative Python Programmer in Ahmedabad","Ahmedabad Python Programmer Creative","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Modern Python Programmer in Ahmedabad","Ahmedabad Python Programmer Modern","Ahmedabad Python Programmer Services","Ahmedabad Python Programmer Solutions","Ahmedabad Python Programmer Agency","Ahmedabad Python Programmer Company","Ahmedabad Python Programmer Freelancer","Ahmedabad Python Programmer Expertise","Ahmedabad Python Programmer Project","Ahmedabad Python Programmer Portfolio","Ahmedabad Python Programmer Consultancy","Hire Web Developer in Surat","Surat Web Developer Hire","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Best Web Developer in Surat","Surat Web Developer Best","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Expert Web Developer in Surat","Surat Web Developer Expert","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Professional Web Developer in Surat","Surat Web Developer Professional","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Freelance Web Developer in Surat","Surat Web Developer Freelance","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Top Web Developer in Surat","Surat Web Developer Top","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Quality Web Developer in Surat","Surat Web Developer Quality","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Reliable Web Developer in Surat","Surat Web Developer Reliable","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Creative Web Developer in Surat","Surat Web Developer Creative","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Modern Web Developer in Surat","Surat Web Developer Modern","Surat Web Developer Services","Surat Web Developer Solutions","Surat Web Developer Agency","Surat Web Developer Company","Surat Web Developer Freelancer","Surat Web Developer Expertise","Surat Web Developer Project","Surat Web Developer Portfolio","Surat Web Developer Consultancy","Hire Game Developer in Surat","Surat Game Developer Hire","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Best Game Developer in Surat","Surat Game Developer Best","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Expert Game Developer in Surat","Surat Game Developer Expert","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Professional Game Developer in Surat","Surat Game Developer Professional","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Freelance Game Developer in Surat","Surat Game Developer Freelance","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Top Game Developer in Surat","Surat Game Developer Top","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Quality Game Developer in Surat","Surat Game Developer Quality","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Reliable Game Developer in Surat","Surat Game Developer Reliable","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Creative Game Developer in Surat","Surat Game Developer Creative","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Modern Game Developer in Surat","Surat Game Developer Modern","Surat Game Developer Services","Surat Game Developer Solutions","Surat Game Developer Agency","Surat Game Developer Company","Surat Game Developer Freelancer","Surat Game Developer Expertise","Surat Game Developer Project","Surat Game Developer Portfolio","Surat Game Developer Consultancy","Hire React Developer in Surat","Surat React Developer Hire","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Best React Developer in Surat","Surat React Developer Best","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Expert React Developer in Surat","Surat React Developer Expert","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Professional React Developer in Surat","Surat React Developer Professional","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Freelance React Developer in Surat","Surat React Developer Freelance","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Top React Developer in Surat","Surat React Developer Top","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Quality React Developer in Surat","Surat React Developer Quality","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Reliable React Developer in Surat","Surat React Developer Reliable","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Creative React Developer in Surat","Surat React Developer Creative","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Modern React Developer in Surat","Surat React Developer Modern","Surat React Developer Services","Surat React Developer Solutions","Surat React Developer Agency","Surat React Developer Company","Surat React Developer Freelancer","Surat React Developer Expertise","Surat React Developer Project","Surat React Developer Portfolio","Surat React Developer Consultancy","Hire Unity Developer in Surat","Surat Unity Developer Hire","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Best Unity Developer in Surat","Surat Unity Developer Best","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Expert Unity Developer in Surat","Surat Unity Developer Expert","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Professional Unity Developer in Surat","Surat Unity Developer Professional","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Freelance Unity Developer in Surat","Surat Unity Developer Freelance","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Top Unity Developer in Surat","Surat Unity Developer Top","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Quality Unity Developer in Surat","Surat Unity Developer Quality","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Reliable Unity Developer in Surat","Surat Unity Developer Reliable","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Creative Unity Developer in Surat","Surat Unity Developer Creative","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Modern Unity Developer in Surat","Surat Unity Developer Modern","Surat Unity Developer Services","Surat Unity Developer Solutions","Surat Unity Developer Agency","Surat Unity Developer Company","Surat Unity Developer Freelancer","Surat Unity Developer Expertise","Surat Unity Developer Project","Surat Unity Developer Portfolio","Surat Unity Developer Consultancy","Hire Full Stack Developer in Surat","Surat Full Stack Developer Hire","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Best Full Stack Developer in Surat","Surat Full Stack Developer Best","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Expert Full Stack Developer in Surat","Surat Full Stack Developer Expert","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Professional Full Stack Developer in Surat","Surat Full Stack Developer Professional","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Freelance Full Stack Developer in Surat","Surat Full Stack Developer Freelance","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Top Full Stack Developer in Surat","Surat Full Stack Developer Top","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Quality Full Stack Developer in Surat","Surat Full Stack Developer Quality","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Reliable Full Stack Developer in Surat","Surat Full Stack Developer Reliable","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Creative Full Stack Developer in Surat","Surat Full Stack Developer Creative","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Modern Full Stack Developer in Surat","Surat Full Stack Developer Modern","Surat Full Stack Developer Services","Surat Full Stack Developer Solutions","Surat Full Stack Developer Agency","Surat Full Stack Developer Company","Surat Full Stack Developer Freelancer","Surat Full Stack Developer Expertise","Surat Full Stack Developer Project","Surat Full Stack Developer Portfolio","Surat Full Stack Developer Consultancy","Hire Frontend Specialist in Surat","Surat Frontend Specialist Hire","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Best Frontend Specialist in Surat","Surat Frontend Specialist Best","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Expert Frontend Specialist in Surat","Surat Frontend Specialist Expert","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Professional Frontend Specialist in Surat","Surat Frontend Specialist Professional","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Freelance Frontend Specialist in Surat","Surat Frontend Specialist Freelance","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Top Frontend Specialist in Surat","Surat Frontend Specialist Top","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Quality Frontend Specialist in Surat","Surat Frontend Specialist Quality","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Reliable Frontend Specialist in Surat","Surat Frontend Specialist Reliable","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Creative Frontend Specialist in Surat","Surat Frontend Specialist Creative","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Modern Frontend Specialist in Surat","Surat Frontend Specialist Modern","Surat Frontend Specialist Services","Surat Frontend Specialist Solutions","Surat Frontend Specialist Agency","Surat Frontend Specialist Company","Surat Frontend Specialist Freelancer","Surat Frontend Specialist Expertise","Surat Frontend Specialist Project","Surat Frontend Specialist Portfolio","Surat Frontend Specialist Consultancy","Hire Backend Engineer in Surat","Surat Backend Engineer Hire","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Best Backend Engineer in Surat","Surat Backend Engineer Best","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Expert Backend Engineer in Surat","Surat Backend Engineer Expert","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Professional Backend Engineer in Surat","Surat Backend Engineer Professional","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Freelance Backend Engineer in Surat","Surat Backend Engineer Freelance","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Top Backend Engineer in Surat","Surat Backend Engineer Top","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Quality Backend Engineer in Surat","Surat Backend Engineer Quality","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Reliable Backend Engineer in Surat","Surat Backend Engineer Reliable","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Creative Backend Engineer in Surat","Surat Backend Engineer Creative","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Modern Backend Engineer in Surat","Surat Backend Engineer Modern","Surat Backend Engineer Services","Surat Backend Engineer Solutions","Surat Backend Engineer Agency","Surat Backend Engineer Company","Surat Backend Engineer Freelancer","Surat Backend Engineer Expertise","Surat Backend Engineer Project","Surat Backend Engineer Portfolio","Surat Backend Engineer Consultancy","Hire Node.js Expert in Surat","Surat Node.js Expert Hire","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Best Node.js Expert in Surat","Surat Node.js Expert Best","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Expert Node.js Expert in Surat","Surat Node.js Expert Expert","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Professional Node.js Expert in Surat","Surat Node.js Expert Professional","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Freelance Node.js Expert in Surat","Surat Node.js Expert Freelance","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Top Node.js Expert in Surat","Surat Node.js Expert Top","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Quality Node.js Expert in Surat","Surat Node.js Expert Quality","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Reliable Node.js Expert in Surat","Surat Node.js Expert Reliable","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Creative Node.js Expert in Surat","Surat Node.js Expert Creative","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Modern Node.js Expert in Surat","Surat Node.js Expert Modern","Surat Node.js Expert Services","Surat Node.js Expert Solutions","Surat Node.js Expert Agency","Surat Node.js Expert Company","Surat Node.js Expert Freelancer","Surat Node.js Expert Expertise","Surat Node.js Expert Project","Surat Node.js Expert Portfolio","Surat Node.js Expert Consultancy","Hire PHP Programmer in Surat","Surat PHP Programmer Hire","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Best PHP Programmer in Surat","Surat PHP Programmer Best","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Expert PHP Programmer in Surat","Surat PHP Programmer Expert","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Professional PHP Programmer in Surat","Surat PHP Programmer Professional","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Freelance PHP Programmer in Surat","Surat PHP Programmer Freelance","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Top PHP Programmer in Surat","Surat PHP Programmer Top","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Quality PHP Programmer in Surat","Surat PHP Programmer Quality","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Reliable PHP Programmer in Surat","Surat PHP Programmer Reliable","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Creative PHP Programmer in Surat","Surat PHP Programmer Creative","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Modern PHP Programmer in Surat","Surat PHP Programmer Modern","Surat PHP Programmer Services","Surat PHP Programmer Solutions","Surat PHP Programmer Agency","Surat PHP Programmer Company","Surat PHP Programmer Freelancer","Surat PHP Programmer Expertise","Surat PHP Programmer Project","Surat PHP Programmer Portfolio","Surat PHP Programmer Consultancy","Hire IT Consultant in Surat","Surat IT Consultant Hire","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Best IT Consultant in Surat","Surat IT Consultant Best","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Expert IT Consultant in Surat","Surat IT Consultant Expert","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Professional IT Consultant in Surat","Surat IT Consultant Professional","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Freelance IT Consultant in Surat","Surat IT Consultant Freelance","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Top IT Consultant in Surat","Surat IT Consultant Top","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Quality IT Consultant in Surat","Surat IT Consultant Quality","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Reliable IT Consultant in Surat","Surat IT Consultant Reliable","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Creative IT Consultant in Surat","Surat IT Consultant Creative","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Modern IT Consultant in Surat","Surat IT Consultant Modern","Surat IT Consultant Services","Surat IT Consultant Solutions","Surat IT Consultant Agency","Surat IT Consultant Company","Surat IT Consultant Freelancer","Surat IT Consultant Expertise","Surat IT Consultant Project","Surat IT Consultant Portfolio","Surat IT Consultant Consultancy","Hire Cybernetic Architect in Surat","Surat Cybernetic Architect Hire","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Best Cybernetic Architect in Surat","Surat Cybernetic Architect Best","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Expert Cybernetic Architect in Surat","Surat Cybernetic Architect Expert","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Professional Cybernetic Architect in Surat","Surat Cybernetic Architect Professional","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Freelance Cybernetic Architect in Surat","Surat Cybernetic Architect Freelance","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Top Cybernetic Architect in Surat","Surat Cybernetic Architect Top","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Quality Cybernetic Architect in Surat","Surat Cybernetic Architect Quality","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Reliable Cybernetic Architect in Surat","Surat Cybernetic Architect Reliable","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Creative Cybernetic Architect in Surat","Surat Cybernetic Architect Creative","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Modern Cybernetic Architect in Surat","Surat Cybernetic Architect Modern","Surat Cybernetic Architect Services","Surat Cybernetic Architect Solutions","Surat Cybernetic Architect Agency","Surat Cybernetic Architect Company","Surat Cybernetic Architect Freelancer","Surat Cybernetic Architect Expertise","Surat Cybernetic Architect Project","Surat Cybernetic Architect Portfolio","Surat Cybernetic Architect Consultancy","Hire Software Engineer in Surat","Surat Software Engineer Hire","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Best Software Engineer in Surat","Surat Software Engineer Best","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Expert Software Engineer in Surat","Surat Software Engineer Expert","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Professional Software Engineer in Surat","Surat Software Engineer Professional","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Freelance Software Engineer in Surat","Surat Software Engineer Freelance","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Top Software Engineer in Surat","Surat Software Engineer Top","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Quality Software Engineer in Surat","Surat Software Engineer Quality","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Reliable Software Engineer in Surat","Surat Software Engineer Reliable","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Creative Software Engineer in Surat","Surat Software Engineer Creative","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Modern Software Engineer in Surat","Surat Software Engineer Modern","Surat Software Engineer Services","Surat Software Engineer Solutions","Surat Software Engineer Agency","Surat Software Engineer Company","Surat Software Engineer Freelancer","Surat Software Engineer Expertise","Surat Software Engineer Project","Surat Software Engineer Portfolio","Surat Software Engineer Consultancy","Hire UI UX Designer in Surat","Surat UI UX Designer Hire","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Best UI UX Designer in Surat","Surat UI UX Designer Best","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Expert UI UX Designer in Surat","Surat UI UX Designer Expert","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Professional UI UX Designer in Surat","Surat UI UX Designer Professional","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Freelance UI UX Designer in Surat","Surat UI UX Designer Freelance","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Top UI UX Designer in Surat","Surat UI UX Designer Top","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Quality UI UX Designer in Surat","Surat UI UX Designer Quality","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Reliable UI UX Designer in Surat","Surat UI UX Designer Reliable","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Creative UI UX Designer in Surat","Surat UI UX Designer Creative","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Modern UI UX Designer in Surat","Surat UI UX Designer Modern","Surat UI UX Designer Services","Surat UI UX Designer Solutions","Surat UI UX Designer Agency","Surat UI UX Designer Company","Surat UI UX Designer Freelancer","Surat UI UX Designer Expertise","Surat UI UX Designer Project","Surat UI UX Designer Portfolio","Surat UI UX Designer Consultancy","Hire Digital Creator in Surat","Surat Digital Creator Hire","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Best Digital Creator in Surat","Surat Digital Creator Best","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Expert Digital Creator in Surat","Surat Digital Creator Expert","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Professional Digital Creator in Surat","Surat Digital Creator Professional","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Freelance Digital Creator in Surat","Surat Digital Creator Freelance","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Top Digital Creator in Surat","Surat Digital Creator Top","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Quality Digital Creator in Surat","Surat Digital Creator Quality","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Reliable Digital Creator in Surat","Surat Digital Creator Reliable","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Creative Digital Creator in Surat","Surat Digital Creator Creative","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Modern Digital Creator in Surat","Surat Digital Creator Modern","Surat Digital Creator Services","Surat Digital Creator Solutions","Surat Digital Creator Agency","Surat Digital Creator Company","Surat Digital Creator Freelancer","Surat Digital Creator Expertise","Surat Digital Creator Project","Surat Digital Creator Portfolio","Surat Digital Creator Consultancy","Hire Mobile App Developer in Surat","Surat Mobile App Developer Hire","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Best Mobile App Developer in Surat","Surat Mobile App Developer Best","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Expert Mobile App Developer in Surat","Surat Mobile App Developer Expert","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Professional Mobile App Developer in Surat","Surat Mobile App Developer Professional","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Freelance Mobile App Developer in Surat","Surat Mobile App Developer Freelance","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Top Mobile App Developer in Surat","Surat Mobile App Developer Top","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Quality Mobile App Developer in Surat","Surat Mobile App Developer Quality","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Reliable Mobile App Developer in Surat","Surat Mobile App Developer Reliable","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Creative Mobile App Developer in Surat","Surat Mobile App Developer Creative","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Modern Mobile App Developer in Surat","Surat Mobile App Developer Modern","Surat Mobile App Developer Services","Surat Mobile App Developer Solutions","Surat Mobile App Developer Agency","Surat Mobile App Developer Company","Surat Mobile App Developer Freelancer","Surat Mobile App Developer Expertise","Surat Mobile App Developer Project","Surat Mobile App Developer Portfolio","Surat Mobile App Developer Consultancy","Hire Graphics Designer in Surat","Surat Graphics Designer Hire","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Best Graphics Designer in Surat","Surat Graphics Designer Best","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Expert Graphics Designer in Surat","Surat Graphics Designer Expert","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Professional Graphics Designer in Surat","Surat Graphics Designer Professional","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Freelance Graphics Designer in Surat","Surat Graphics Designer Freelance","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Top Graphics Designer in Surat","Surat Graphics Designer Top","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Quality Graphics Designer in Surat","Surat Graphics Designer Quality","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Reliable Graphics Designer in Surat","Surat Graphics Designer Reliable","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Creative Graphics Designer in Surat","Surat Graphics Designer Creative","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Modern Graphics Designer in Surat","Surat Graphics Designer Modern","Surat Graphics Designer Services","Surat Graphics Designer Solutions","Surat Graphics Designer Agency","Surat Graphics Designer Company","Surat Graphics Designer Freelancer","Surat Graphics Designer Expertise","Surat Graphics Designer Project","Surat Graphics Designer Portfolio","Surat Graphics Designer Consultancy","Hire Video Editor in Surat","Surat Video Editor Hire","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Best Video Editor in Surat","Surat Video Editor Best","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Expert Video Editor in Surat","Surat Video Editor Expert","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Professional Video Editor in Surat","Surat Video Editor Professional","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Freelance Video Editor in Surat","Surat Video Editor Freelance","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Top Video Editor in Surat","Surat Video Editor Top","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Quality Video Editor in Surat","Surat Video Editor Quality","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Reliable Video Editor in Surat","Surat Video Editor Reliable","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Creative Video Editor in Surat","Surat Video Editor Creative","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Modern Video Editor in Surat","Surat Video Editor Modern","Surat Video Editor Services","Surat Video Editor Solutions","Surat Video Editor Agency","Surat Video Editor Company","Surat Video Editor Freelancer","Surat Video Editor Expertise","Surat Video Editor Project","Surat Video Editor Portfolio","Surat Video Editor Consultancy","Hire WordPress Expert in Surat","Surat WordPress Expert Hire","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Best WordPress Expert in Surat","Surat WordPress Expert Best","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Expert WordPress Expert in Surat","Surat WordPress Expert Expert","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Professional WordPress Expert in Surat","Surat WordPress Expert Professional","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Freelance WordPress Expert in Surat","Surat WordPress Expert Freelance","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Top WordPress Expert in Surat","Surat WordPress Expert Top","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Quality WordPress Expert in Surat","Surat WordPress Expert Quality","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Reliable WordPress Expert in Surat","Surat WordPress Expert Reliable","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Creative WordPress Expert in Surat","Surat WordPress Expert Creative","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Modern WordPress Expert in Surat","Surat WordPress Expert Modern","Surat WordPress Expert Services","Surat WordPress Expert Solutions","Surat WordPress Expert Agency","Surat WordPress Expert Company","Surat WordPress Expert Freelancer","Surat WordPress Expert Expertise","Surat WordPress Expert Project","Surat WordPress Expert Portfolio","Surat WordPress Expert Consultancy","Hire Shopify Developer in Surat","Surat Shopify Developer Hire","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Best Shopify Developer in Surat","Surat Shopify Developer Best","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Expert Shopify Developer in Surat","Surat Shopify Developer Expert","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Professional Shopify Developer in Surat","Surat Shopify Developer Professional","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Freelance Shopify Developer in Surat","Surat Shopify Developer Freelance","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Top Shopify Developer in Surat","Surat Shopify Developer Top","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Quality Shopify Developer in Surat","Surat Shopify Developer Quality","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Reliable Shopify Developer in Surat","Surat Shopify Developer Reliable","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Creative Shopify Developer in Surat","Surat Shopify Developer Creative","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Modern Shopify Developer in Surat","Surat Shopify Developer Modern","Surat Shopify Developer Services","Surat Shopify Developer Solutions","Surat Shopify Developer Agency","Surat Shopify Developer Company","Surat Shopify Developer Freelancer","Surat Shopify Developer Expertise","Surat Shopify Developer Project","Surat Shopify Developer Portfolio","Surat Shopify Developer Consultancy","Hire Python Programmer in Surat","Surat Python Programmer Hire","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Best Python Programmer in Surat","Surat Python Programmer Best","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Expert Python Programmer in Surat","Surat Python Programmer Expert","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Professional Python Programmer in Surat","Surat Python Programmer Professional","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Freelance Python Programmer in Surat","Surat Python Programmer Freelance","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Top Python Programmer in Surat","Surat Python Programmer Top","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Quality Python Programmer in Surat","Surat Python Programmer Quality","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Reliable Python Programmer in Surat","Surat Python Programmer Reliable","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Creative Python Programmer in Surat","Surat Python Programmer Creative","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Modern Python Programmer in Surat","Surat Python Programmer Modern","Surat Python Programmer Services","Surat Python Programmer Solutions","Surat Python Programmer Agency","Surat Python Programmer Company","Surat Python Programmer Freelancer","Surat Python Programmer Expertise","Surat Python Programmer Project","Surat Python Programmer Portfolio","Surat Python Programmer Consultancy","Hire Web Developer in Vadodara","Vadodara Web Developer Hire","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Best Web Developer in Vadodara","Vadodara Web Developer Best","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Expert Web Developer in Vadodara","Vadodara Web Developer Expert","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Professional Web Developer in Vadodara","Vadodara Web Developer Professional","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Freelance Web Developer in Vadodara","Vadodara Web Developer Freelance","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Top Web Developer in Vadodara","Vadodara Web Developer Top","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Quality Web Developer in Vadodara","Vadodara Web Developer Quality","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Reliable Web Developer in Vadodara","Vadodara Web Developer Reliable","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Creative Web Developer in Vadodara","Vadodara Web Developer Creative","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Modern Web Developer in Vadodara","Vadodara Web Developer Modern","Vadodara Web Developer Services","Vadodara Web Developer Solutions","Vadodara Web Developer Agency","Vadodara Web Developer Company","Vadodara Web Developer Freelancer","Vadodara Web Developer Expertise","Vadodara Web Developer Project","Vadodara Web Developer Portfolio","Vadodara Web Developer Consultancy","Hire Game Developer in Vadodara","Vadodara Game Developer Hire","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Best Game Developer in Vadodara","Vadodara Game Developer Best","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Expert Game Developer in Vadodara","Vadodara Game Developer Expert","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Professional Game Developer in Vadodara","Vadodara Game Developer Professional","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Freelance Game Developer in Vadodara","Vadodara Game Developer Freelance","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Top Game Developer in Vadodara","Vadodara Game Developer Top","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Quality Game Developer in Vadodara","Vadodara Game Developer Quality","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Reliable Game Developer in Vadodara","Vadodara Game Developer Reliable","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Creative Game Developer in Vadodara","Vadodara Game Developer Creative","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Modern Game Developer in Vadodara","Vadodara Game Developer Modern","Vadodara Game Developer Services","Vadodara Game Developer Solutions","Vadodara Game Developer Agency","Vadodara Game Developer Company","Vadodara Game Developer Freelancer","Vadodara Game Developer Expertise","Vadodara Game Developer Project","Vadodara Game Developer Portfolio","Vadodara Game Developer Consultancy","Hire React Developer in Vadodara","Vadodara React Developer Hire","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Best React Developer in Vadodara","Vadodara React Developer Best","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Expert React Developer in Vadodara","Vadodara React Developer Expert","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Professional React Developer in Vadodara","Vadodara React Developer Professional","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Freelance React Developer in Vadodara","Vadodara React Developer Freelance","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Top React Developer in Vadodara","Vadodara React Developer Top","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Quality React Developer in Vadodara","Vadodara React Developer Quality","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Reliable React Developer in Vadodara","Vadodara React Developer Reliable","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Creative React Developer in Vadodara","Vadodara React Developer Creative","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Modern React Developer in Vadodara","Vadodara React Developer Modern","Vadodara React Developer Services","Vadodara React Developer Solutions","Vadodara React Developer Agency","Vadodara React Developer Company","Vadodara React Developer Freelancer","Vadodara React Developer Expertise","Vadodara React Developer Project","Vadodara React Developer Portfolio","Vadodara React Developer Consultancy","Hire Unity Developer in Vadodara","Vadodara Unity Developer Hire","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Best Unity Developer in Vadodara","Vadodara Unity Developer Best","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Expert Unity Developer in Vadodara","Vadodara Unity Developer Expert","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Professional Unity Developer in Vadodara","Vadodara Unity Developer Professional","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Freelance Unity Developer in Vadodara","Vadodara Unity Developer Freelance","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Top Unity Developer in Vadodara","Vadodara Unity Developer Top","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Quality Unity Developer in Vadodara","Vadodara Unity Developer Quality","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Reliable Unity Developer in Vadodara","Vadodara Unity Developer Reliable","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Creative Unity Developer in Vadodara","Vadodara Unity Developer Creative","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Modern Unity Developer in Vadodara","Vadodara Unity Developer Modern","Vadodara Unity Developer Services","Vadodara Unity Developer Solutions","Vadodara Unity Developer Agency","Vadodara Unity Developer Company","Vadodara Unity Developer Freelancer","Vadodara Unity Developer Expertise","Vadodara Unity Developer Project","Vadodara Unity Developer Portfolio","Vadodara Unity Developer Consultancy","Hire Full Stack Developer in Vadodara","Vadodara Full Stack Developer Hire","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Best Full Stack Developer in Vadodara","Vadodara Full Stack Developer Best","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Expert Full Stack Developer in Vadodara","Vadodara Full Stack Developer Expert","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Professional Full Stack Developer in Vadodara","Vadodara Full Stack Developer Professional","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Freelance Full Stack Developer in Vadodara","Vadodara Full Stack Developer Freelance","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Top Full Stack Developer in Vadodara","Vadodara Full Stack Developer Top","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Quality Full Stack Developer in Vadodara","Vadodara Full Stack Developer Quality","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Reliable Full Stack Developer in Vadodara","Vadodara Full Stack Developer Reliable","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Creative Full Stack Developer in Vadodara","Vadodara Full Stack Developer Creative","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Modern Full Stack Developer in Vadodara","Vadodara Full Stack Developer Modern","Vadodara Full Stack Developer Services","Vadodara Full Stack Developer Solutions","Vadodara Full Stack Developer Agency","Vadodara Full Stack Developer Company","Vadodara Full Stack Developer Freelancer","Vadodara Full Stack Developer Expertise","Vadodara Full Stack Developer Project","Vadodara Full Stack Developer Portfolio","Vadodara Full Stack Developer Consultancy","Hire Frontend Specialist in Vadodara","Vadodara Frontend Specialist Hire","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Best Frontend Specialist in Vadodara","Vadodara Frontend Specialist Best","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Expert Frontend Specialist in Vadodara","Vadodara Frontend Specialist Expert","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Professional Frontend Specialist in Vadodara","Vadodara Frontend Specialist Professional","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Freelance Frontend Specialist in Vadodara","Vadodara Frontend Specialist Freelance","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Top Frontend Specialist in Vadodara","Vadodara Frontend Specialist Top","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Quality Frontend Specialist in Vadodara","Vadodara Frontend Specialist Quality","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Reliable Frontend Specialist in Vadodara","Vadodara Frontend Specialist Reliable","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Creative Frontend Specialist in Vadodara","Vadodara Frontend Specialist Creative","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Modern Frontend Specialist in Vadodara","Vadodara Frontend Specialist Modern","Vadodara Frontend Specialist Services","Vadodara Frontend Specialist Solutions","Vadodara Frontend Specialist Agency","Vadodara Frontend Specialist Company","Vadodara Frontend Specialist Freelancer","Vadodara Frontend Specialist Expertise","Vadodara Frontend Specialist Project","Vadodara Frontend Specialist Portfolio","Vadodara Frontend Specialist Consultancy","Hire Backend Engineer in Vadodara","Vadodara Backend Engineer Hire","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Best Backend Engineer in Vadodara","Vadodara Backend Engineer Best","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Expert Backend Engineer in Vadodara","Vadodara Backend Engineer Expert","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Professional Backend Engineer in Vadodara","Vadodara Backend Engineer Professional","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Freelance Backend Engineer in Vadodara","Vadodara Backend Engineer Freelance","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Top Backend Engineer in Vadodara","Vadodara Backend Engineer Top","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Quality Backend Engineer in Vadodara","Vadodara Backend Engineer Quality","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Reliable Backend Engineer in Vadodara","Vadodara Backend Engineer Reliable","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Creative Backend Engineer in Vadodara","Vadodara Backend Engineer Creative","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Modern Backend Engineer in Vadodara","Vadodara Backend Engineer Modern","Vadodara Backend Engineer Services","Vadodara Backend Engineer Solutions","Vadodara Backend Engineer Agency","Vadodara Backend Engineer Company","Vadodara Backend Engineer Freelancer","Vadodara Backend Engineer Expertise","Vadodara Backend Engineer Project","Vadodara Backend Engineer Portfolio","Vadodara Backend Engineer Consultancy","Hire Node.js Expert in Vadodara","Vadodara Node.js Expert Hire","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Best Node.js Expert in Vadodara","Vadodara Node.js Expert Best","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Expert Node.js Expert in Vadodara","Vadodara Node.js Expert Expert","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Professional Node.js Expert in Vadodara","Vadodara Node.js Expert Professional","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Freelance Node.js Expert in Vadodara","Vadodara Node.js Expert Freelance","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Top Node.js Expert in Vadodara","Vadodara Node.js Expert Top","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Quality Node.js Expert in Vadodara","Vadodara Node.js Expert Quality","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Reliable Node.js Expert in Vadodara","Vadodara Node.js Expert Reliable","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Creative Node.js Expert in Vadodara","Vadodara Node.js Expert Creative","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Modern Node.js Expert in Vadodara","Vadodara Node.js Expert Modern","Vadodara Node.js Expert Services","Vadodara Node.js Expert Solutions","Vadodara Node.js Expert Agency","Vadodara Node.js Expert Company","Vadodara Node.js Expert Freelancer","Vadodara Node.js Expert Expertise","Vadodara Node.js Expert Project","Vadodara Node.js Expert Portfolio","Vadodara Node.js Expert Consultancy","Hire PHP Programmer in Vadodara","Vadodara PHP Programmer Hire","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Best PHP Programmer in Vadodara","Vadodara PHP Programmer Best","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Expert PHP Programmer in Vadodara","Vadodara PHP Programmer Expert","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Professional PHP Programmer in Vadodara","Vadodara PHP Programmer Professional","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Freelance PHP Programmer in Vadodara","Vadodara PHP Programmer Freelance","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Top PHP Programmer in Vadodara","Vadodara PHP Programmer Top","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Quality PHP Programmer in Vadodara","Vadodara PHP Programmer Quality","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Reliable PHP Programmer in Vadodara","Vadodara PHP Programmer Reliable","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Creative PHP Programmer in Vadodara","Vadodara PHP Programmer Creative","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Modern PHP Programmer in Vadodara","Vadodara PHP Programmer Modern","Vadodara PHP Programmer Services","Vadodara PHP Programmer Solutions","Vadodara PHP Programmer Agency","Vadodara PHP Programmer Company","Vadodara PHP Programmer Freelancer","Vadodara PHP Programmer Expertise","Vadodara PHP Programmer Project","Vadodara PHP Programmer Portfolio","Vadodara PHP Programmer Consultancy","Hire IT Consultant in Vadodara","Vadodara IT Consultant Hire","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Best IT Consultant in Vadodara","Vadodara IT Consultant Best","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Expert IT Consultant in Vadodara","Vadodara IT Consultant Expert","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Professional IT Consultant in Vadodara","Vadodara IT Consultant Professional","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Freelance IT Consultant in Vadodara","Vadodara IT Consultant Freelance","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Top IT Consultant in Vadodara","Vadodara IT Consultant Top","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Quality IT Consultant in Vadodara","Vadodara IT Consultant Quality","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Reliable IT Consultant in Vadodara","Vadodara IT Consultant Reliable","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Creative IT Consultant in Vadodara","Vadodara IT Consultant Creative","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Modern IT Consultant in Vadodara","Vadodara IT Consultant Modern","Vadodara IT Consultant Services","Vadodara IT Consultant Solutions","Vadodara IT Consultant Agency","Vadodara IT Consultant Company","Vadodara IT Consultant Freelancer","Vadodara IT Consultant Expertise","Vadodara IT Consultant Project","Vadodara IT Consultant Portfolio","Vadodara IT Consultant Consultancy","Hire Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Hire","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Best Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Best","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Expert Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Expert","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Professional Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Professional","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Freelance Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Freelance","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Top Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Top","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Quality Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Quality","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Reliable Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Reliable","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Creative Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Creative","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Modern Cybernetic Architect in Vadodara","Vadodara Cybernetic Architect Modern","Vadodara Cybernetic Architect Services","Vadodara Cybernetic Architect Solutions","Vadodara Cybernetic Architect Agency","Vadodara Cybernetic Architect Company","Vadodara Cybernetic Architect Freelancer","Vadodara Cybernetic Architect Expertise","Vadodara Cybernetic Architect Project","Vadodara Cybernetic Architect Portfolio","Vadodara Cybernetic Architect Consultancy","Hire Software Engineer in Vadodara","Vadodara Software Engineer Hire","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Best Software Engineer in Vadodara","Vadodara Software Engineer Best","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Expert Software Engineer in Vadodara","Vadodara Software Engineer Expert","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Professional Software Engineer in Vadodara","Vadodara Software Engineer Professional","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Freelance Software Engineer in Vadodara","Vadodara Software Engineer Freelance","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Top Software Engineer in Vadodara","Vadodara Software Engineer Top","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Quality Software Engineer in Vadodara","Vadodara Software Engineer Quality","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Reliable Software Engineer in Vadodara","Vadodara Software Engineer Reliable","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Creative Software Engineer in Vadodara","Vadodara Software Engineer Creative","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Modern Software Engineer in Vadodara","Vadodara Software Engineer Modern","Vadodara Software Engineer Services","Vadodara Software Engineer Solutions","Vadodara Software Engineer Agency","Vadodara Software Engineer Company","Vadodara Software Engineer Freelancer","Vadodara Software Engineer Expertise","Vadodara Software Engineer Project","Vadodara Software Engineer Portfolio","Vadodara Software Engineer Consultancy","Hire UI UX Designer in Vadodara","Vadodara UI UX Designer Hire","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Best UI UX Designer in Vadodara","Vadodara UI UX Designer Best","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Expert UI UX Designer in Vadodara","Vadodara UI UX Designer Expert","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Professional UI UX Designer in Vadodara","Vadodara UI UX Designer Professional","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Freelance UI UX Designer in Vadodara","Vadodara UI UX Designer Freelance","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Top UI UX Designer in Vadodara","Vadodara UI UX Designer Top","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Quality UI UX Designer in Vadodara","Vadodara UI UX Designer Quality","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Reliable UI UX Designer in Vadodara","Vadodara UI UX Designer Reliable","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Creative UI UX Designer in Vadodara","Vadodara UI UX Designer Creative","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Modern UI UX Designer in Vadodara","Vadodara UI UX Designer Modern","Vadodara UI UX Designer Services","Vadodara UI UX Designer Solutions","Vadodara UI UX Designer Agency","Vadodara UI UX Designer Company","Vadodara UI UX Designer Freelancer","Vadodara UI UX Designer Expertise","Vadodara UI UX Designer Project","Vadodara UI UX Designer Portfolio","Vadodara UI UX Designer Consultancy","Hire Digital Creator in Vadodara","Vadodara Digital Creator Hire","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Best Digital Creator in Vadodara","Vadodara Digital Creator Best","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Expert Digital Creator in Vadodara","Vadodara Digital Creator Expert","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Professional Digital Creator in Vadodara","Vadodara Digital Creator Professional","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Freelance Digital Creator in Vadodara","Vadodara Digital Creator Freelance","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Top Digital Creator in Vadodara","Vadodara Digital Creator Top","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Quality Digital Creator in Vadodara","Vadodara Digital Creator Quality","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Reliable Digital Creator in Vadodara","Vadodara Digital Creator Reliable","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Creative Digital Creator in Vadodara","Vadodara Digital Creator Creative","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Modern Digital Creator in Vadodara","Vadodara Digital Creator Modern","Vadodara Digital Creator Services","Vadodara Digital Creator Solutions","Vadodara Digital Creator Agency","Vadodara Digital Creator Company","Vadodara Digital Creator Freelancer","Vadodara Digital Creator Expertise","Vadodara Digital Creator Project","Vadodara Digital Creator Portfolio","Vadodara Digital Creator Consultancy","Hire Mobile App Developer in Vadodara","Vadodara Mobile App Developer Hire","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Best Mobile App Developer in Vadodara","Vadodara Mobile App Developer Best","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Expert Mobile App Developer in Vadodara","Vadodara Mobile App Developer Expert","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Professional Mobile App Developer in Vadodara","Vadodara Mobile App Developer Professional","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Freelance Mobile App Developer in Vadodara","Vadodara Mobile App Developer Freelance","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Top Mobile App Developer in Vadodara","Vadodara Mobile App Developer Top","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Quality Mobile App Developer in Vadodara","Vadodara Mobile App Developer Quality","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Reliable Mobile App Developer in Vadodara","Vadodara Mobile App Developer Reliable","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Creative Mobile App Developer in Vadodara","Vadodara Mobile App Developer Creative","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Modern Mobile App Developer in Vadodara","Vadodara Mobile App Developer Modern","Vadodara Mobile App Developer Services","Vadodara Mobile App Developer Solutions","Vadodara Mobile App Developer Agency","Vadodara Mobile App Developer Company","Vadodara Mobile App Developer Freelancer","Vadodara Mobile App Developer Expertise","Vadodara Mobile App Developer Project","Vadodara Mobile App Developer Portfolio","Vadodara Mobile App Developer Consultancy","Hire Graphics Designer in Vadodara","Vadodara Graphics Designer Hire","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Best Graphics Designer in Vadodara","Vadodara Graphics Designer Best","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Expert Graphics Designer in Vadodara","Vadodara Graphics Designer Expert","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Professional Graphics Designer in Vadodara","Vadodara Graphics Designer Professional","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Freelance Graphics Designer in Vadodara","Vadodara Graphics Designer Freelance","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Top Graphics Designer in Vadodara","Vadodara Graphics Designer Top","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Quality Graphics Designer in Vadodara","Vadodara Graphics Designer Quality","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Reliable Graphics Designer in Vadodara","Vadodara Graphics Designer Reliable","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Creative Graphics Designer in Vadodara","Vadodara Graphics Designer Creative","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Modern Graphics Designer in Vadodara","Vadodara Graphics Designer Modern","Vadodara Graphics Designer Services","Vadodara Graphics Designer Solutions","Vadodara Graphics Designer Agency","Vadodara Graphics Designer Company","Vadodara Graphics Designer Freelancer","Vadodara Graphics Designer Expertise","Vadodara Graphics Designer Project","Vadodara Graphics Designer Portfolio","Vadodara Graphics Designer Consultancy","Hire Video Editor in Vadodara","Vadodara Video Editor Hire","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Best Video Editor in Vadodara","Vadodara Video Editor Best","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Expert Video Editor in Vadodara","Vadodara Video Editor Expert","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Professional Video Editor in Vadodara","Vadodara Video Editor Professional","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Freelance Video Editor in Vadodara","Vadodara Video Editor Freelance","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Top Video Editor in Vadodara","Vadodara Video Editor Top","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Quality Video Editor in Vadodara","Vadodara Video Editor Quality","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Reliable Video Editor in Vadodara","Vadodara Video Editor Reliable","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Creative Video Editor in Vadodara","Vadodara Video Editor Creative","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Modern Video Editor in Vadodara","Vadodara Video Editor Modern","Vadodara Video Editor Services","Vadodara Video Editor Solutions","Vadodara Video Editor Agency","Vadodara Video Editor Company","Vadodara Video Editor Freelancer","Vadodara Video Editor Expertise","Vadodara Video Editor Project","Vadodara Video Editor Portfolio","Vadodara Video Editor Consultancy","Hire WordPress Expert in Vadodara","Vadodara WordPress Expert Hire","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Best WordPress Expert in Vadodara","Vadodara WordPress Expert Best","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Expert WordPress Expert in Vadodara","Vadodara WordPress Expert Expert","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Professional WordPress Expert in Vadodara","Vadodara WordPress Expert Professional","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Freelance WordPress Expert in Vadodara","Vadodara WordPress Expert Freelance","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Top WordPress Expert in Vadodara","Vadodara WordPress Expert Top","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Quality WordPress Expert in Vadodara","Vadodara WordPress Expert Quality","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Reliable WordPress Expert in Vadodara","Vadodara WordPress Expert Reliable","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Creative WordPress Expert in Vadodara","Vadodara WordPress Expert Creative","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Modern WordPress Expert in Vadodara","Vadodara WordPress Expert Modern","Vadodara WordPress Expert Services","Vadodara WordPress Expert Solutions","Vadodara WordPress Expert Agency","Vadodara WordPress Expert Company","Vadodara WordPress Expert Freelancer","Vadodara WordPress Expert Expertise","Vadodara WordPress Expert Project","Vadodara WordPress Expert Portfolio","Vadodara WordPress Expert Consultancy","Hire Shopify Developer in Vadodara","Vadodara Shopify Developer Hire","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Best Shopify Developer in Vadodara","Vadodara Shopify Developer Best","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Expert Shopify Developer in Vadodara","Vadodara Shopify Developer Expert","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Professional Shopify Developer in Vadodara","Vadodara Shopify Developer Professional","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Freelance Shopify Developer in Vadodara","Vadodara Shopify Developer Freelance","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Top Shopify Developer in Vadodara","Vadodara Shopify Developer Top","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Quality Shopify Developer in Vadodara","Vadodara Shopify Developer Quality","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Reliable Shopify Developer in Vadodara","Vadodara Shopify Developer Reliable","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Creative Shopify Developer in Vadodara","Vadodara Shopify Developer Creative","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Modern Shopify Developer in Vadodara","Vadodara Shopify Developer Modern","Vadodara Shopify Developer Services","Vadodara Shopify Developer Solutions","Vadodara Shopify Developer Agency","Vadodara Shopify Developer Company","Vadodara Shopify Developer Freelancer","Vadodara Shopify Developer Expertise","Vadodara Shopify Developer Project","Vadodara Shopify Developer Portfolio","Vadodara Shopify Developer Consultancy","Hire Python Programmer in Vadodara","Vadodara Python Programmer Hire","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Best Python Programmer in Vadodara","Vadodara Python Programmer Best","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Expert Python Programmer in Vadodara","Vadodara Python Programmer Expert","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Professional Python Programmer in Vadodara","Vadodara Python Programmer Professional","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Freelance Python Programmer in Vadodara","Vadodara Python Programmer Freelance","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Top Python Programmer in Vadodara","Vadodara Python Programmer Top","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Quality Python Programmer in Vadodara","Vadodara Python Programmer Quality","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Reliable Python Programmer in Vadodara","Vadodara Python Programmer Reliable","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Creative Python Programmer in Vadodara","Vadodara Python Programmer Creative","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Modern Python Programmer in Vadodara","Vadodara Python Programmer Modern","Vadodara Python Programmer Services","Vadodara Python Programmer Solutions","Vadodara Python Programmer Agency","Vadodara Python Programmer Company","Vadodara Python Programmer Freelancer","Vadodara Python Programmer Expertise","Vadodara Python Programmer Project","Vadodara Python Programmer Portfolio","Vadodara Python Programmer Consultancy","Hire Web Developer in Rajkot","Rajkot Web Developer Hire","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Best Web Developer in Rajkot","Rajkot Web Developer Best","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Expert Web Developer in Rajkot","Rajkot Web Developer Expert","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Professional Web Developer in Rajkot","Rajkot Web Developer Professional","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Freelance Web Developer in Rajkot","Rajkot Web Developer Freelance","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Top Web Developer in Rajkot","Rajkot Web Developer Top","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Quality Web Developer in Rajkot","Rajkot Web Developer Quality","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Reliable Web Developer in Rajkot","Rajkot Web Developer Reliable","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Creative Web Developer in Rajkot","Rajkot Web Developer Creative","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Modern Web Developer in Rajkot","Rajkot Web Developer Modern","Rajkot Web Developer Services","Rajkot Web Developer Solutions","Rajkot Web Developer Agency","Rajkot Web Developer Company","Rajkot Web Developer Freelancer","Rajkot Web Developer Expertise","Rajkot Web Developer Project","Rajkot Web Developer Portfolio","Rajkot Web Developer Consultancy","Hire Game Developer in Rajkot","Rajkot Game Developer Hire","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Best Game Developer in Rajkot","Rajkot Game Developer Best","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Expert Game Developer in Rajkot","Rajkot Game Developer Expert","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Professional Game Developer in Rajkot","Rajkot Game Developer Professional","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Freelance Game Developer in Rajkot","Rajkot Game Developer Freelance","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Top Game Developer in Rajkot","Rajkot Game Developer Top","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Quality Game Developer in Rajkot","Rajkot Game Developer Quality","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Reliable Game Developer in Rajkot","Rajkot Game Developer Reliable","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Creative Game Developer in Rajkot","Rajkot Game Developer Creative","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Modern Game Developer in Rajkot","Rajkot Game Developer Modern","Rajkot Game Developer Services","Rajkot Game Developer Solutions","Rajkot Game Developer Agency","Rajkot Game Developer Company","Rajkot Game Developer Freelancer","Rajkot Game Developer Expertise","Rajkot Game Developer Project","Rajkot Game Developer Portfolio","Rajkot Game Developer Consultancy","Hire React Developer in Rajkot","Rajkot React Developer Hire","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Best React Developer in Rajkot","Rajkot React Developer Best","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Expert React Developer in Rajkot","Rajkot React Developer Expert","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Professional React Developer in Rajkot","Rajkot React Developer Professional","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Freelance React Developer in Rajkot","Rajkot React Developer Freelance","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Top React Developer in Rajkot","Rajkot React Developer Top","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Quality React Developer in Rajkot","Rajkot React Developer Quality","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Reliable React Developer in Rajkot","Rajkot React Developer Reliable","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Creative React Developer in Rajkot","Rajkot React Developer Creative","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Modern React Developer in Rajkot","Rajkot React Developer Modern","Rajkot React Developer Services","Rajkot React Developer Solutions","Rajkot React Developer Agency","Rajkot React Developer Company","Rajkot React Developer Freelancer","Rajkot React Developer Expertise","Rajkot React Developer Project","Rajkot React Developer Portfolio","Rajkot React Developer Consultancy","Hire Unity Developer in Rajkot","Rajkot Unity Developer Hire","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Best Unity Developer in Rajkot","Rajkot Unity Developer Best","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Expert Unity Developer in Rajkot","Rajkot Unity Developer Expert","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Professional Unity Developer in Rajkot","Rajkot Unity Developer Professional","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Freelance Unity Developer in Rajkot","Rajkot Unity Developer Freelance","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Top Unity Developer in Rajkot","Rajkot Unity Developer Top","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Quality Unity Developer in Rajkot","Rajkot Unity Developer Quality","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Reliable Unity Developer in Rajkot","Rajkot Unity Developer Reliable","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Creative Unity Developer in Rajkot","Rajkot Unity Developer Creative","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Modern Unity Developer in Rajkot","Rajkot Unity Developer Modern","Rajkot Unity Developer Services","Rajkot Unity Developer Solutions","Rajkot Unity Developer Agency","Rajkot Unity Developer Company","Rajkot Unity Developer Freelancer","Rajkot Unity Developer Expertise","Rajkot Unity Developer Project","Rajkot Unity Developer Portfolio","Rajkot Unity Developer Consultancy","Hire Full Stack Developer in Rajkot","Rajkot Full Stack Developer Hire","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Best Full Stack Developer in Rajkot","Rajkot Full Stack Developer Best","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Expert Full Stack Developer in Rajkot","Rajkot Full Stack Developer Expert","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Professional Full Stack Developer in Rajkot","Rajkot Full Stack Developer Professional","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Freelance Full Stack Developer in Rajkot","Rajkot Full Stack Developer Freelance","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Top Full Stack Developer in Rajkot","Rajkot Full Stack Developer Top","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Quality Full Stack Developer in Rajkot","Rajkot Full Stack Developer Quality","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Reliable Full Stack Developer in Rajkot","Rajkot Full Stack Developer Reliable","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Creative Full Stack Developer in Rajkot","Rajkot Full Stack Developer Creative","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Modern Full Stack Developer in Rajkot","Rajkot Full Stack Developer Modern","Rajkot Full Stack Developer Services","Rajkot Full Stack Developer Solutions","Rajkot Full Stack Developer Agency","Rajkot Full Stack Developer Company","Rajkot Full Stack Developer Freelancer","Rajkot Full Stack Developer Expertise","Rajkot Full Stack Developer Project","Rajkot Full Stack Developer Portfolio","Rajkot Full Stack Developer Consultancy","Hire Frontend Specialist in Rajkot","Rajkot Frontend Specialist Hire","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Best Frontend Specialist in Rajkot","Rajkot Frontend Specialist Best","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Expert Frontend Specialist in Rajkot","Rajkot Frontend Specialist Expert","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Professional Frontend Specialist in Rajkot","Rajkot Frontend Specialist Professional","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Freelance Frontend Specialist in Rajkot","Rajkot Frontend Specialist Freelance","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Top Frontend Specialist in Rajkot","Rajkot Frontend Specialist Top","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Quality Frontend Specialist in Rajkot","Rajkot Frontend Specialist Quality","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Reliable Frontend Specialist in Rajkot","Rajkot Frontend Specialist Reliable","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Creative Frontend Specialist in Rajkot","Rajkot Frontend Specialist Creative","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Modern Frontend Specialist in Rajkot","Rajkot Frontend Specialist Modern","Rajkot Frontend Specialist Services","Rajkot Frontend Specialist Solutions","Rajkot Frontend Specialist Agency","Rajkot Frontend Specialist Company","Rajkot Frontend Specialist Freelancer","Rajkot Frontend Specialist Expertise","Rajkot Frontend Specialist Project","Rajkot Frontend Specialist Portfolio","Rajkot Frontend Specialist Consultancy","Hire Backend Engineer in Rajkot","Rajkot Backend Engineer Hire","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Best Backend Engineer in Rajkot","Rajkot Backend Engineer Best","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Expert Backend Engineer in Rajkot","Rajkot Backend Engineer Expert","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Professional Backend Engineer in Rajkot","Rajkot Backend Engineer Professional","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Freelance Backend Engineer in Rajkot","Rajkot Backend Engineer Freelance","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Top Backend Engineer in Rajkot","Rajkot Backend Engineer Top","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Quality Backend Engineer in Rajkot","Rajkot Backend Engineer Quality","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Reliable Backend Engineer in Rajkot","Rajkot Backend Engineer Reliable","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Creative Backend Engineer in Rajkot","Rajkot Backend Engineer Creative","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Modern Backend Engineer in Rajkot","Rajkot Backend Engineer Modern","Rajkot Backend Engineer Services","Rajkot Backend Engineer Solutions","Rajkot Backend Engineer Agency","Rajkot Backend Engineer Company","Rajkot Backend Engineer Freelancer","Rajkot Backend Engineer Expertise","Rajkot Backend Engineer Project","Rajkot Backend Engineer Portfolio","Rajkot Backend Engineer Consultancy","Hire Node.js Expert in Rajkot","Rajkot Node.js Expert Hire","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Best Node.js Expert in Rajkot","Rajkot Node.js Expert Best","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Expert Node.js Expert in Rajkot","Rajkot Node.js Expert Expert","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Professional Node.js Expert in Rajkot","Rajkot Node.js Expert Professional","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Freelance Node.js Expert in Rajkot","Rajkot Node.js Expert Freelance","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Top Node.js Expert in Rajkot","Rajkot Node.js Expert Top","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Quality Node.js Expert in Rajkot","Rajkot Node.js Expert Quality","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Reliable Node.js Expert in Rajkot","Rajkot Node.js Expert Reliable","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Creative Node.js Expert in Rajkot","Rajkot Node.js Expert Creative","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Modern Node.js Expert in Rajkot","Rajkot Node.js Expert Modern","Rajkot Node.js Expert Services","Rajkot Node.js Expert Solutions","Rajkot Node.js Expert Agency","Rajkot Node.js Expert Company","Rajkot Node.js Expert Freelancer","Rajkot Node.js Expert Expertise","Rajkot Node.js Expert Project","Rajkot Node.js Expert Portfolio","Rajkot Node.js Expert Consultancy","Hire PHP Programmer in Rajkot","Rajkot PHP Programmer Hire","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Best PHP Programmer in Rajkot","Rajkot PHP Programmer Best","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Expert PHP Programmer in Rajkot","Rajkot PHP Programmer Expert","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Professional PHP Programmer in Rajkot","Rajkot PHP Programmer Professional","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Freelance PHP Programmer in Rajkot","Rajkot PHP Programmer Freelance","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Top PHP Programmer in Rajkot","Rajkot PHP Programmer Top","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Quality PHP Programmer in Rajkot","Rajkot PHP Programmer Quality","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Reliable PHP Programmer in Rajkot","Rajkot PHP Programmer Reliable","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Creative PHP Programmer in Rajkot","Rajkot PHP Programmer Creative","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Modern PHP Programmer in Rajkot","Rajkot PHP Programmer Modern","Rajkot PHP Programmer Services","Rajkot PHP Programmer Solutions","Rajkot PHP Programmer Agency","Rajkot PHP Programmer Company","Rajkot PHP Programmer Freelancer","Rajkot PHP Programmer Expertise","Rajkot PHP Programmer Project","Rajkot PHP Programmer Portfolio","Rajkot PHP Programmer Consultancy","Hire IT Consultant in Rajkot","Rajkot IT Consultant Hire","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Best IT Consultant in Rajkot","Rajkot IT Consultant Best","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Expert IT Consultant in Rajkot","Rajkot IT Consultant Expert","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Professional IT Consultant in Rajkot","Rajkot IT Consultant Professional","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Freelance IT Consultant in Rajkot","Rajkot IT Consultant Freelance","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Top IT Consultant in Rajkot","Rajkot IT Consultant Top","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Quality IT Consultant in Rajkot","Rajkot IT Consultant Quality","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Reliable IT Consultant in Rajkot","Rajkot IT Consultant Reliable","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Creative IT Consultant in Rajkot","Rajkot IT Consultant Creative","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Modern IT Consultant in Rajkot","Rajkot IT Consultant Modern","Rajkot IT Consultant Services","Rajkot IT Consultant Solutions","Rajkot IT Consultant Agency","Rajkot IT Consultant Company","Rajkot IT Consultant Freelancer","Rajkot IT Consultant Expertise","Rajkot IT Consultant Project","Rajkot IT Consultant Portfolio","Rajkot IT Consultant Consultancy","Hire Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Hire","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Best Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Best","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Expert Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Expert","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Professional Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Professional","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Freelance Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Freelance","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Top Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Top","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Quality Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Quality","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Reliable Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Reliable","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Creative Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Creative","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Modern Cybernetic Architect in Rajkot","Rajkot Cybernetic Architect Modern","Rajkot Cybernetic Architect Services","Rajkot Cybernetic Architect Solutions","Rajkot Cybernetic Architect Agency","Rajkot Cybernetic Architect Company","Rajkot Cybernetic Architect Freelancer","Rajkot Cybernetic Architect Expertise","Rajkot Cybernetic Architect Project","Rajkot Cybernetic Architect Portfolio","Rajkot Cybernetic Architect Consultancy","Hire Software Engineer in Rajkot","Rajkot Software Engineer Hire","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Best Software Engineer in Rajkot","Rajkot Software Engineer Best","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Expert Software Engineer in Rajkot","Rajkot Software Engineer Expert","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Professional Software Engineer in Rajkot","Rajkot Software Engineer Professional","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Freelance Software Engineer in Rajkot","Rajkot Software Engineer Freelance","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Top Software Engineer in Rajkot","Rajkot Software Engineer Top","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Quality Software Engineer in Rajkot","Rajkot Software Engineer Quality","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Reliable Software Engineer in Rajkot","Rajkot Software Engineer Reliable","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Creative Software Engineer in Rajkot","Rajkot Software Engineer Creative","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Modern Software Engineer in Rajkot","Rajkot Software Engineer Modern","Rajkot Software Engineer Services","Rajkot Software Engineer Solutions","Rajkot Software Engineer Agency","Rajkot Software Engineer Company","Rajkot Software Engineer Freelancer","Rajkot Software Engineer Expertise","Rajkot Software Engineer Project","Rajkot Software Engineer Portfolio","Rajkot Software Engineer Consultancy","Hire UI UX Designer in Rajkot","Rajkot UI UX Designer Hire","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Best UI UX Designer in Rajkot","Rajkot UI UX Designer Best","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Expert UI UX Designer in Rajkot","Rajkot UI UX Designer Expert","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Professional UI UX Designer in Rajkot","Rajkot UI UX Designer Professional","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Freelance UI UX Designer in Rajkot","Rajkot UI UX Designer Freelance","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Top UI UX Designer in Rajkot","Rajkot UI UX Designer Top","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Quality UI UX Designer in Rajkot","Rajkot UI UX Designer Quality","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Reliable UI UX Designer in Rajkot","Rajkot UI UX Designer Reliable","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Creative UI UX Designer in Rajkot","Rajkot UI UX Designer Creative","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Modern UI UX Designer in Rajkot","Rajkot UI UX Designer Modern","Rajkot UI UX Designer Services","Rajkot UI UX Designer Solutions","Rajkot UI UX Designer Agency","Rajkot UI UX Designer Company","Rajkot UI UX Designer Freelancer","Rajkot UI UX Designer Expertise","Rajkot UI UX Designer Project","Rajkot UI UX Designer Portfolio","Rajkot UI UX Designer Consultancy","Hire Digital Creator in Rajkot","Rajkot Digital Creator Hire","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Best Digital Creator in Rajkot","Rajkot Digital Creator Best","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Expert Digital Creator in Rajkot","Rajkot Digital Creator Expert","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Professional Digital Creator in Rajkot","Rajkot Digital Creator Professional","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Freelance Digital Creator in Rajkot","Rajkot Digital Creator Freelance","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Top Digital Creator in Rajkot","Rajkot Digital Creator Top","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Quality Digital Creator in Rajkot","Rajkot Digital Creator Quality","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Reliable Digital Creator in Rajkot","Rajkot Digital Creator Reliable","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Creative Digital Creator in Rajkot","Rajkot Digital Creator Creative","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Modern Digital Creator in Rajkot","Rajkot Digital Creator Modern","Rajkot Digital Creator Services","Rajkot Digital Creator Solutions","Rajkot Digital Creator Agency","Rajkot Digital Creator Company","Rajkot Digital Creator Freelancer","Rajkot Digital Creator Expertise","Rajkot Digital Creator Project","Rajkot Digital Creator Portfolio","Rajkot Digital Creator Consultancy","Hire Mobile App Developer in Rajkot","Rajkot Mobile App Developer Hire","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Best Mobile App Developer in Rajkot","Rajkot Mobile App Developer Best","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Expert Mobile App Developer in Rajkot","Rajkot Mobile App Developer Expert","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Professional Mobile App Developer in Rajkot","Rajkot Mobile App Developer Professional","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Freelance Mobile App Developer in Rajkot","Rajkot Mobile App Developer Freelance","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Top Mobile App Developer in Rajkot","Rajkot Mobile App Developer Top","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Quality Mobile App Developer in Rajkot","Rajkot Mobile App Developer Quality","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Reliable Mobile App Developer in Rajkot","Rajkot Mobile App Developer Reliable","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Creative Mobile App Developer in Rajkot","Rajkot Mobile App Developer Creative","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Modern Mobile App Developer in Rajkot","Rajkot Mobile App Developer Modern","Rajkot Mobile App Developer Services","Rajkot Mobile App Developer Solutions","Rajkot Mobile App Developer Agency","Rajkot Mobile App Developer Company","Rajkot Mobile App Developer Freelancer","Rajkot Mobile App Developer Expertise","Rajkot Mobile App Developer Project","Rajkot Mobile App Developer Portfolio","Rajkot Mobile App Developer Consultancy","Hire Graphics Designer in Rajkot","Rajkot Graphics Designer Hire","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Best Graphics Designer in Rajkot","Rajkot Graphics Designer Best","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Expert Graphics Designer in Rajkot","Rajkot Graphics Designer Expert","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Professional Graphics Designer in Rajkot","Rajkot Graphics Designer Professional","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Freelance Graphics Designer in Rajkot","Rajkot Graphics Designer Freelance","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Top Graphics Designer in Rajkot","Rajkot Graphics Designer Top","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Quality Graphics Designer in Rajkot","Rajkot Graphics Designer Quality","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Reliable Graphics Designer in Rajkot","Rajkot Graphics Designer Reliable","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Creative Graphics Designer in Rajkot","Rajkot Graphics Designer Creative","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Modern Graphics Designer in Rajkot","Rajkot Graphics Designer Modern","Rajkot Graphics Designer Services","Rajkot Graphics Designer Solutions","Rajkot Graphics Designer Agency","Rajkot Graphics Designer Company","Rajkot Graphics Designer Freelancer","Rajkot Graphics Designer Expertise","Rajkot Graphics Designer Project","Rajkot Graphics Designer Portfolio","Rajkot Graphics Designer Consultancy","Hire Video Editor in Rajkot","Rajkot Video Editor Hire","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Best Video Editor in Rajkot","Rajkot Video Editor Best","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Expert Video Editor in Rajkot","Rajkot Video Editor Expert","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Professional Video Editor in Rajkot","Rajkot Video Editor Professional","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Freelance Video Editor in Rajkot","Rajkot Video Editor Freelance","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Top Video Editor in Rajkot","Rajkot Video Editor Top","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Quality Video Editor in Rajkot","Rajkot Video Editor Quality","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Reliable Video Editor in Rajkot","Rajkot Video Editor Reliable","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Creative Video Editor in Rajkot","Rajkot Video Editor Creative","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Modern Video Editor in Rajkot","Rajkot Video Editor Modern","Rajkot Video Editor Services","Rajkot Video Editor Solutions","Rajkot Video Editor Agency","Rajkot Video Editor Company","Rajkot Video Editor Freelancer","Rajkot Video Editor Expertise","Rajkot Video Editor Project","Rajkot Video Editor Portfolio","Rajkot Video Editor Consultancy","Hire WordPress Expert in Rajkot","Rajkot WordPress Expert Hire","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Best WordPress Expert in Rajkot","Rajkot WordPress Expert Best","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Expert WordPress Expert in Rajkot","Rajkot WordPress Expert Expert","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Professional WordPress Expert in Rajkot","Rajkot WordPress Expert Professional","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Freelance WordPress Expert in Rajkot","Rajkot WordPress Expert Freelance","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Top WordPress Expert in Rajkot","Rajkot WordPress Expert Top","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Quality WordPress Expert in Rajkot","Rajkot WordPress Expert Quality","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Reliable WordPress Expert in Rajkot","Rajkot WordPress Expert Reliable","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Creative WordPress Expert in Rajkot","Rajkot WordPress Expert Creative","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Modern WordPress Expert in Rajkot","Rajkot WordPress Expert Modern","Rajkot WordPress Expert Services","Rajkot WordPress Expert Solutions","Rajkot WordPress Expert Agency","Rajkot WordPress Expert Company","Rajkot WordPress Expert Freelancer","Rajkot WordPress Expert Expertise","Rajkot WordPress Expert Project","Rajkot WordPress Expert Portfolio","Rajkot WordPress Expert Consultancy","Hire Shopify Developer in Rajkot","Rajkot Shopify Developer Hire","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Best Shopify Developer in Rajkot","Rajkot Shopify Developer Best","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Expert Shopify Developer in Rajkot","Rajkot Shopify Developer Expert","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Professional Shopify Developer in Rajkot","Rajkot Shopify Developer Professional","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Freelance Shopify Developer in Rajkot","Rajkot Shopify Developer Freelance","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Top Shopify Developer in Rajkot","Rajkot Shopify Developer Top","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Quality Shopify Developer in Rajkot","Rajkot Shopify Developer Quality","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Reliable Shopify Developer in Rajkot","Rajkot Shopify Developer Reliable","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Creative Shopify Developer in Rajkot","Rajkot Shopify Developer Creative","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Modern Shopify Developer in Rajkot","Rajkot Shopify Developer Modern","Rajkot Shopify Developer Services","Rajkot Shopify Developer Solutions","Rajkot Shopify Developer Agency","Rajkot Shopify Developer Company","Rajkot Shopify Developer Freelancer","Rajkot Shopify Developer Expertise","Rajkot Shopify Developer Project","Rajkot Shopify Developer Portfolio","Rajkot Shopify Developer Consultancy","Hire Python Programmer in Rajkot","Rajkot Python Programmer Hire","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Best Python Programmer in Rajkot","Rajkot Python Programmer Best","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Expert Python Programmer in Rajkot","Rajkot Python Programmer Expert","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Professional Python Programmer in Rajkot","Rajkot Python Programmer Professional","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Freelance Python Programmer in Rajkot","Rajkot Python Programmer Freelance","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Top Python Programmer in Rajkot","Rajkot Python Programmer Top","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Quality Python Programmer in Rajkot","Rajkot Python Programmer Quality","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Reliable Python Programmer in Rajkot","Rajkot Python Programmer Reliable","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Creative Python Programmer in Rajkot","Rajkot Python Programmer Creative","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Modern Python Programmer in Rajkot","Rajkot Python Programmer Modern","Rajkot Python Programmer Services","Rajkot Python Programmer Solutions","Rajkot Python Programmer Agency","Rajkot Python Programmer Company","Rajkot Python Programmer Freelancer","Rajkot Python Programmer Expertise","Rajkot Python Programmer Project","Rajkot Python Programmer Portfolio","Rajkot Python Programmer Consultancy","Hire Web Developer in Bhavnagar","Bhavnagar Web Developer Hire","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Best Web Developer in Bhavnagar","Bhavnagar Web Developer Best","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Expert Web Developer in Bhavnagar","Bhavnagar Web Developer Expert","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Professional Web Developer in Bhavnagar","Bhavnagar Web Developer Professional","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Freelance Web Developer in Bhavnagar","Bhavnagar Web Developer Freelance","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Top Web Developer in Bhavnagar","Bhavnagar Web Developer Top","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Quality Web Developer in Bhavnagar","Bhavnagar Web Developer Quality","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Reliable Web Developer in Bhavnagar","Bhavnagar Web Developer Reliable","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Creative Web Developer in Bhavnagar","Bhavnagar Web Developer Creative","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Modern Web Developer in Bhavnagar","Bhavnagar Web Developer Modern","Bhavnagar Web Developer Services","Bhavnagar Web Developer Solutions","Bhavnagar Web Developer Agency","Bhavnagar Web Developer Company","Bhavnagar Web Developer Freelancer","Bhavnagar Web Developer Expertise","Bhavnagar Web Developer Project","Bhavnagar Web Developer Portfolio","Bhavnagar Web Developer Consultancy","Hire Game Developer in Bhavnagar","Bhavnagar Game Developer Hire","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Best Game Developer in Bhavnagar","Bhavnagar Game Developer Best","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Expert Game Developer in Bhavnagar","Bhavnagar Game Developer Expert","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Professional Game Developer in Bhavnagar","Bhavnagar Game Developer Professional","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Freelance Game Developer in Bhavnagar","Bhavnagar Game Developer Freelance","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Top Game Developer in Bhavnagar","Bhavnagar Game Developer Top","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Quality Game Developer in Bhavnagar","Bhavnagar Game Developer Quality","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Reliable Game Developer in Bhavnagar","Bhavnagar Game Developer Reliable","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Creative Game Developer in Bhavnagar","Bhavnagar Game Developer Creative","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Modern Game Developer in Bhavnagar","Bhavnagar Game Developer Modern","Bhavnagar Game Developer Services","Bhavnagar Game Developer Solutions","Bhavnagar Game Developer Agency","Bhavnagar Game Developer Company","Bhavnagar Game Developer Freelancer","Bhavnagar Game Developer Expertise","Bhavnagar Game Developer Project","Bhavnagar Game Developer Portfolio","Bhavnagar Game Developer Consultancy","Hire React Developer in Bhavnagar","Bhavnagar React Developer Hire","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Best React Developer in Bhavnagar","Bhavnagar React Developer Best","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Expert React Developer in Bhavnagar","Bhavnagar React Developer Expert","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Professional React Developer in Bhavnagar","Bhavnagar React Developer Professional","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Freelance React Developer in Bhavnagar","Bhavnagar React Developer Freelance","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Top React Developer in Bhavnagar","Bhavnagar React Developer Top","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Quality React Developer in Bhavnagar","Bhavnagar React Developer Quality","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Reliable React Developer in Bhavnagar","Bhavnagar React Developer Reliable","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Creative React Developer in Bhavnagar","Bhavnagar React Developer Creative","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Modern React Developer in Bhavnagar","Bhavnagar React Developer Modern","Bhavnagar React Developer Services","Bhavnagar React Developer Solutions","Bhavnagar React Developer Agency","Bhavnagar React Developer Company","Bhavnagar React Developer Freelancer","Bhavnagar React Developer Expertise","Bhavnagar React Developer Project","Bhavnagar React Developer Portfolio","Bhavnagar React Developer Consultancy","Hire Unity Developer in Bhavnagar","Bhavnagar Unity Developer Hire","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Best Unity Developer in Bhavnagar","Bhavnagar Unity Developer Best","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Expert Unity Developer in Bhavnagar","Bhavnagar Unity Developer Expert","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Professional Unity Developer in Bhavnagar","Bhavnagar Unity Developer Professional","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Freelance Unity Developer in Bhavnagar","Bhavnagar Unity Developer Freelance","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Top Unity Developer in Bhavnagar","Bhavnagar Unity Developer Top","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Quality Unity Developer in Bhavnagar","Bhavnagar Unity Developer Quality","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Reliable Unity Developer in Bhavnagar","Bhavnagar Unity Developer Reliable","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Creative Unity Developer in Bhavnagar","Bhavnagar Unity Developer Creative","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Modern Unity Developer in Bhavnagar","Bhavnagar Unity Developer Modern","Bhavnagar Unity Developer Services","Bhavnagar Unity Developer Solutions","Bhavnagar Unity Developer Agency","Bhavnagar Unity Developer Company","Bhavnagar Unity Developer Freelancer","Bhavnagar Unity Developer Expertise","Bhavnagar Unity Developer Project","Bhavnagar Unity Developer Portfolio","Bhavnagar Unity Developer Consultancy","Hire Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Hire","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Best Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Best","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Expert Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Expert","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Professional Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Professional","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Freelance Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Freelance","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Top Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Top","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Quality Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Quality","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Reliable Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Reliable","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Creative Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Creative","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Modern Full Stack Developer in Bhavnagar","Bhavnagar Full Stack Developer Modern","Bhavnagar Full Stack Developer Services","Bhavnagar Full Stack Developer Solutions","Bhavnagar Full Stack Developer Agency","Bhavnagar Full Stack Developer Company","Bhavnagar Full Stack Developer Freelancer","Bhavnagar Full Stack Developer Expertise","Bhavnagar Full Stack Developer Project","Bhavnagar Full Stack Developer Portfolio","Bhavnagar Full Stack Developer Consultancy","Hire Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Hire","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Best Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Best","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Expert Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Expert","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Professional Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Professional","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Freelance Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Freelance","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Top Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Top","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Quality Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Quality","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Reliable Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Reliable","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Creative Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Creative","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Modern Frontend Specialist in Bhavnagar","Bhavnagar Frontend Specialist Modern","Bhavnagar Frontend Specialist Services","Bhavnagar Frontend Specialist Solutions","Bhavnagar Frontend Specialist Agency","Bhavnagar Frontend Specialist Company","Bhavnagar Frontend Specialist Freelancer","Bhavnagar Frontend Specialist Expertise","Bhavnagar Frontend Specialist Project","Bhavnagar Frontend Specialist Portfolio","Bhavnagar Frontend Specialist Consultancy","Hire Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Hire","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Best Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Best","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Expert Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Expert","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Professional Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Professional","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Freelance Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Freelance","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Top Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Top","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Quality Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Quality","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Reliable Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Reliable","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Creative Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Creative","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Modern Backend Engineer in Bhavnagar","Bhavnagar Backend Engineer Modern","Bhavnagar Backend Engineer Services","Bhavnagar Backend Engineer Solutions","Bhavnagar Backend Engineer Agency","Bhavnagar Backend Engineer Company","Bhavnagar Backend Engineer Freelancer","Bhavnagar Backend Engineer Expertise","Bhavnagar Backend Engineer Project","Bhavnagar Backend Engineer Portfolio","Bhavnagar Backend Engineer Consultancy","Hire Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Hire","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Best Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Best","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Expert Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Expert","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Professional Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Professional","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Freelance Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Freelance","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Top Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Top","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Quality Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Quality","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Reliable Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Reliable","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Creative Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Creative","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Modern Node.js Expert in Bhavnagar","Bhavnagar Node.js Expert Modern","Bhavnagar Node.js Expert Services","Bhavnagar Node.js Expert Solutions","Bhavnagar Node.js Expert Agency","Bhavnagar Node.js Expert Company","Bhavnagar Node.js Expert Freelancer","Bhavnagar Node.js Expert Expertise","Bhavnagar Node.js Expert Project","Bhavnagar Node.js Expert Portfolio","Bhavnagar Node.js Expert Consultancy","Hire PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Hire","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Best PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Best","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Expert PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Expert","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Professional PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Professional","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Freelance PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Freelance","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Top PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Top","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Quality PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Quality","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Reliable PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Reliable","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Creative PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Creative","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Modern PHP Programmer in Bhavnagar","Bhavnagar PHP Programmer Modern","Bhavnagar PHP Programmer Services","Bhavnagar PHP Programmer Solutions","Bhavnagar PHP Programmer Agency","Bhavnagar PHP Programmer Company","Bhavnagar PHP Programmer Freelancer","Bhavnagar PHP Programmer Expertise","Bhavnagar PHP Programmer Project","Bhavnagar PHP Programmer Portfolio","Bhavnagar PHP Programmer Consultancy","Hire IT Consultant in Bhavnagar","Bhavnagar IT Consultant Hire","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Best IT Consultant in Bhavnagar","Bhavnagar IT Consultant Best","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Expert IT Consultant in Bhavnagar","Bhavnagar IT Consultant Expert","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Professional IT Consultant in Bhavnagar","Bhavnagar IT Consultant Professional","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Freelance IT Consultant in Bhavnagar","Bhavnagar IT Consultant Freelance","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Top IT Consultant in Bhavnagar","Bhavnagar IT Consultant Top","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Quality IT Consultant in Bhavnagar","Bhavnagar IT Consultant Quality","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Reliable IT Consultant in Bhavnagar","Bhavnagar IT Consultant Reliable","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Creative IT Consultant in Bhavnagar","Bhavnagar IT Consultant Creative","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Modern IT Consultant in Bhavnagar","Bhavnagar IT Consultant Modern","Bhavnagar IT Consultant Services","Bhavnagar IT Consultant Solutions","Bhavnagar IT Consultant Agency","Bhavnagar IT Consultant Company","Bhavnagar IT Consultant Freelancer","Bhavnagar IT Consultant Expertise","Bhavnagar IT Consultant Project","Bhavnagar IT Consultant Portfolio","Bhavnagar IT Consultant Consultancy","Hire Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Hire","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Best Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Best","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Expert Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Expert","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Professional Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Professional","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Freelance Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Freelance","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Top Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Top","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Quality Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Quality","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Reliable Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Reliable","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Creative Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Creative","Bhavnagar Cybernetic Architect Services","Bhavnagar Cybernetic Architect Solutions","Bhavnagar Cybernetic Architect Agency","Bhavnagar Cybernetic Architect Company","Bhavnagar Cybernetic Architect Freelancer","Bhavnagar Cybernetic Architect Expertise","Bhavnagar Cybernetic Architect Project","Bhavnagar Cybernetic Architect Portfolio","Bhavnagar Cybernetic Architect Consultancy","Modern Cybernetic Architect in Bhavnagar","Bhavnagar Cybernetic Architect Modern"],fa=({title:a,description:e,keywords:t,image:r,url:o,schema:i})=>{const s="https://www.tusharbr.online",c=`${s}/favicon.png`,d=r?r.startsWith("http")?r:`${s}${r}`:c,p=o?o.startsWith("http")?o:`${s}${o}`:s,m=[...A2,...t||[],...C2].slice(0,10005).join(", ");return n.jsxs(n.Fragment,{children:[n.jsxs("title",{children:[a," | Tushar Rathod"]}),n.jsx("meta",{name:"description",content:e}),n.jsx("meta",{name:"keywords",content:m}),n.jsx("meta",{name:"author",content:"Tushar Rathod"}),n.jsx("meta",{name:"robots",content:"index, follow"}),n.jsx("link",{rel:"canonical",href:p}),n.jsx("meta",{property:"og:type",content:"website"}),n.jsx("meta",{property:"og:title",content:a}),n.jsx("meta",{property:"og:description",content:e}),n.jsx("meta",{property:"og:url",content:p}),n.jsx("meta",{property:"og:image",content:d}),n.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),n.jsx("meta",{name:"twitter:site",content:"@Tusharbr"}),n.jsx("meta",{name:"twitter:creator",content:"@Tusharbr"}),n.jsx("meta",{name:"twitter:title",content:a}),n.jsx("meta",{name:"twitter:description",content:e}),n.jsx("meta",{name:"twitter:image",content:d}),i&&n.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(i)}}),n.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(j2)}}),n.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(E2)}}),n.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(_2)}}),n.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify({"@context":"https://schema.org","@type":"Organization",name:"Tushar Rathod",url:"https://www.tusharbr.online",logo:"https://www.tusharbr.online/favicon.ico",image:"https://www.tusharbr.online/favicon.png",sameAs:["https://www.instagram.com/tushar__br/","https://github.com/tushar-br","https://www.hackerrank.com/profile/rathodtushar1442","https://www.linkedin.com/in/tushar-br/","https://twitter.com/Tusharbr"],contactPoint:{"@type":"ContactPoint",contactType:"customer support",email:"tushar@tusharbr.online"}})}})]})},k2=()=>n.jsxs("div",{style:{position:"relative",width:"100%",maxWidth:"1000px",margin:"20px auto",padding:"10px 15px",color:"#e0e0e0",fontFamily:"'Outfit', 'Inter', sans-serif"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",marginBottom:"20px"},children:[n.jsx("span",{style:{color:"#00e5ff",fontSize:"1.5rem",marginRight:"15px",fontFamily:"'Orbitron', sans-serif",fontWeight:700},children:"I'm"}),n.jsx("div",{style:{flexGrow:1,height:"1px",background:"linear-gradient(90deg, rgba(0,229,255,0.5), transparent)"}})]}),n.jsxs("div",{className:"bio-card",style:{position:"relative",background:"rgba(10, 10, 15, 0.95)",borderRadius:"0 20px 20px 0",padding:"25px",borderLeft:"4px solid #00e5ff",boxShadow:"0 10px 30px rgba(0,0,0,0.3)",overflow:"hidden"},children:[n.jsxs("svg",{width:"100%",height:"100%",style:{position:"absolute",top:0,left:0,pointerEvents:"none",opacity:.1,zIndex:0},children:[n.jsxs("pattern",{id:"circuit",x:"0",y:"0",width:"100",height:"100",patternUnits:"userSpaceOnUse",children:[n.jsx("path",{d:"M10 10h80v80h-80z",fill:"none",stroke:"currentColor",strokeWidth:"0.5"}),n.jsx("circle",{cx:"10",cy:"10",r:"2",fill:"currentColor"}),n.jsx("circle",{cx:"90",cy:"90",r:"2",fill:"currentColor"})]}),n.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"url(#circuit)",style:{color:"#00e5ff"}})]}),n.jsxs("div",{style:{position:"relative",zIndex:2},children:[n.jsxs("div",{style:{marginBottom:"20px",color:"#fff",fontSize:"1rem",lineHeight:"1.8",fontWeight:300,letterSpacing:"0.5px"},children:["I'm a ",n.jsx("span",{style:{color:"#00e5ff",fontWeight:600},children:"Creative IT Student"})," specializing in ",n.jsx("span",{style:{color:"#fff",fontWeight:500},children:"Frontend Design"}),", ",n.jsx("span",{style:{color:"#fff",fontWeight:500},children:"Backend Architecture"}),", and ",n.jsx("span",{style:{color:"#ff0055",fontWeight:600},children:"Game Development"}),". Based in India, I build high-performance web applications and immersive digital experiences."]}),n.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"20px",marginTop:"25px"},children:[n.jsxs("div",{style:{padding:"15px",background:"rgba(255,255,255,0.03)",borderLeft:"2px solid rgba(255,255,255,0.2)",borderRadius:"0 8px 8px 0"},children:[n.jsx("h4",{style:{margin:"0 0 10px 0",color:"#00e5ff",fontSize:"0.9rem",textTransform:"uppercase",letterSpacing:"1px"},children:"Web Development"}),n.jsx("p",{style:{margin:0,fontSize:"0.85rem",color:"#aaa",lineHeight:"1.6"},children:"3+ years of experience building responsive, user-friendly websites with clean, structured code. Expert in HTML, CSS, React, and Modern UI/UX."})]}),n.jsxs("div",{style:{padding:"15px",background:"rgba(255,255,255,0.03)",borderLeft:"2px solid rgba(255,0,85,0.5)",borderRadius:"0 8px 8px 0"},children:[n.jsx("h4",{style:{margin:"0 0 10px 0",color:"#ff0055",fontSize:"0.9rem",textTransform:"uppercase",letterSpacing:"1px"},children:"Game Design (Unity)"}),n.jsx("p",{style:{margin:0,fontSize:"0.85rem",color:"#aaa",lineHeight:"1.6"},children:"Unity 6 specialist creating interactive 2D/3D environments. Proficient in C# scripting, game mechanics, and level design."})]})]})]}),n.jsx("div",{style:{position:"absolute",top:0,right:0,width:"40px",height:"100%",pointerEvents:"none"},children:n.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 40 100",preserveAspectRatio:"none",children:[n.jsx("path",{d:"M40 0 V100 H38 V0 Z",fill:"rgba(0,229,255,0.1)"}),n.jsx("rect",{x:"35",y:"10",width:"2",height:"10",fill:"#00e5ff"}),n.jsx("rect",{x:"35",y:"30",width:"2",height:"5",fill:"#00e5ff",opacity:"0.5"}),n.jsx("rect",{x:"35",y:"80",width:"2",height:"10",fill:"#00e5ff"})]})})]}),n.jsx("style",{children:`
|
|
134
|
+
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600&display=swap');
|
|
135
|
+
|
|
136
|
+
@media (max-width: 768px) {
|
|
137
|
+
.bio-card {
|
|
138
|
+
padding: 20px;
|
|
139
|
+
border-left-width: 3px;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
`})]}),R2=()=>{const[a,e]=T.useState(1);return T.useEffect(()=>{const t=()=>{const r=window.innerWidth;r<500?e(.38):r<800?e(.6):r<1200?e(.8):e(1)};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),n.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:a<.6?"0 0 10px 0":"40px 0 20px",position:"relative",overflow:"hidden",marginTop:"0"},children:[n.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"80%",height:"60%",background:"radial-gradient(circle, rgba(0, 229, 255, 0.05) 0%, transparent 70%)",zIndex:0,pointerEvents:"none"}}),n.jsx("div",{style:{transform:`scale(${a})`,transformOrigin:"top center",transition:"transform 0.3s ease",width:"100%",display:"flex",justifyContent:"center",marginBottom:a<.4?"-285px":a<.6?"-200px":"0"},children:n.jsxs("div",{style:{position:"relative",padding:"20px",zIndex:2,width:"1000px",height:"500px",display:"flex",justifyContent:"center"},children:[n.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 1000 500",preserveAspectRatio:"none",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",zIndex:1},children:[n.jsxs("defs",{children:[n.jsxs("linearGradient",{id:"cyberGrad",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[n.jsx("stop",{offset:"0%",stopColor:"rgba(0, 229, 255, 0)"}),n.jsx("stop",{offset:"20%",stopColor:"rgba(0, 229, 255, 0.3)"}),n.jsx("stop",{offset:"80%",stopColor:"rgba(0, 229, 255, 0.3)"}),n.jsx("stop",{offset:"100%",stopColor:"rgba(0, 229, 255, 0)"})]}),n.jsxs("filter",{id:"glow",children:[n.jsx("feGaussianBlur",{stdDeviation:"2",result:"coloredBlur"}),n.jsxs("feMerge",{children:[n.jsx("feMergeNode",{in:"coloredBlur"}),n.jsx("feMergeNode",{in:"SourceGraphic"})]})]})]}),n.jsx("path",{d:"M200 20 H800",stroke:"url(#cyberGrad)",strokeWidth:"1",fill:"none"}),n.jsx("path",{d:"M200 20 L180 40",stroke:"rgba(0,229,255,0.2)",strokeWidth:"1",fill:"none"}),n.jsx("path",{d:"M800 20 L820 40",stroke:"rgba(0,229,255,0.2)",strokeWidth:"1",fill:"none"}),n.jsx("path",{d:"M150 480 H850",stroke:"url(#cyberGrad)",strokeWidth:"1",fill:"none"}),n.jsx("rect",{x:"500",y:"478",width:"100",height:"4",fill:"rgba(0, 229, 255, 0.3)"})]}),n.jsxs("div",{style:{display:"flex",justifyContent:"center",alignItems:"flex-end",perspective:"1500px",gap:"10px",position:"relative",width:"100%",height:"100%",paddingBottom:"100px"},children:[n.jsxs("div",{style:{width:"280px",height:"180px",transform:"rotateY(15deg) translateZ(20px)",transformOrigin:"right center",background:"#1d1d1d",border:"2px solid #444",borderRadius:"8px",display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"},children:[n.jsxs("div",{style:{background:"#2c2c2c",padding:"4px 8px",fontSize:"8px",color:"#ccc",display:"flex",justifyContent:"space-between",borderBottom:"1px solid #111"},children:[n.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[n.jsx("span",{style:{width:"8px",height:"8px",background:"orange",borderRadius:"50%"}}),n.jsx("span",{style:{color:"#fff",fontWeight:"bold"},children:"Blender"}),n.jsx("span",{children:"4.0"}),n.jsx("span",{style:{color:"#666"},children:"|"}),n.jsx("span",{children:"Cyber_Scene.blend"})]}),n.jsxs("div",{style:{display:"flex",gap:"6px"},children:[n.jsx("span",{children:"Layout"}),n.jsx("span",{style:{color:"#666"},children:"Modeling"}),n.jsx("span",{style:{color:"#666"},children:"Shading"})]})]}),n.jsxs("div",{style:{flex:1,display:"flex",fontSize:"6px",color:"#ccc"},children:[n.jsxs("div",{style:{flex:1,background:"#222",position:"relative",overflow:"hidden",borderRight:"1px solid #111"},children:[n.jsx("div",{style:{position:"absolute",width:"200%",height:"200%",top:"0%",left:"-50%",backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px)",backgroundSize:"20px 20px",transform:"perspective(100px) rotateX(70deg) translateZ(0)",opacity:.5,willChange:"transform"}}),n.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",width:"30px",height:"30px",transform:"translate(-50%, -50%) rotateY(45deg)",border:"1px solid #ff9900",background:"rgba(255, 153, 0, 0.2)",boxShadow:"0 0 10px rgba(255, 153, 0, 0.1)"}}),n.jsx("div",{style:{position:"absolute",top:"10px",right:"10px"},children:n.jsxs("div",{style:{width:"20px",height:"20px",borderRadius:"50%",border:"1px solid #444",position:"relative"},children:[n.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",width:"8px",height:"2px",background:"red",transform:"translate(2px, 0)"}}),n.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",width:"2px",height:"8px",background:"green",transform:"translate(0, -10px)"}}),n.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",width:"4px",height:"4px",background:"blue",borderRadius:"50%",transform:"translate(-50%, -50%)"}})]})}),n.jsxs("div",{style:{position:"absolute",top:"10px",left:"5px",display:"flex",flexDirection:"column",gap:"4px",color:"#888"},children:[n.jsx("div",{children:"Select"}),n.jsx("div",{children:"Cursor"}),n.jsx("div",{children:"Move"}),n.jsx("div",{children:"Rotate"}),n.jsx("div",{children:"Scale"})]})]}),n.jsxs("div",{style:{width:"25%",background:"#2c2c2c",display:"flex",flexDirection:"column"},children:[n.jsxs("div",{style:{height:"40%",borderBottom:"1px solid #111",padding:"2px"},children:[n.jsx("div",{style:{background:"#444",marginBottom:"2px",padding:"1px"},children:"Scene Collection"}),n.jsx("div",{style:{paddingLeft:"4px"},children:"▼ Collection"}),n.jsx("div",{style:{paddingLeft:"8px",color:"#ff9900"},children:"◼ Cube"}),n.jsx("div",{style:{paddingLeft:"8px"},children:"☀ Light"}),n.jsx("div",{style:{paddingLeft:"8px"},children:"📷 Camera"})]}),n.jsxs("div",{style:{flex:1,padding:"2px"},children:[n.jsxs("div",{style:{display:"flex",gap:"2px",marginBottom:"4px"},children:[n.jsx("div",{style:{width:"8px",height:"8px",background:"#555"}}),n.jsx("div",{style:{width:"8px",height:"8px",background:"#555"}}),n.jsx("div",{style:{width:"8px",height:"8px",background:"blue"}})," "]}),n.jsx("div",{style:{background:"#333",padding:"2px",marginBottom:"2px"},children:"Transform"}),n.jsxs("div",{style:{display:"flex",justifyContent:"space-between"},children:[n.jsx("span",{children:"Loc X"})," ",n.jsx("span",{children:"0 m"})]}),n.jsxs("div",{style:{display:"flex",justifyContent:"space-between"},children:[n.jsx("span",{children:"Loc Y"})," ",n.jsx("span",{children:"0 m"})]}),n.jsxs("div",{style:{display:"flex",justifyContent:"space-between"},children:[n.jsx("span",{children:"Loc Z"})," ",n.jsx("span",{children:"0 m"})]})]})]})]})]}),n.jsxs("div",{style:{width:"360px",height:"240px",transform:"translateZ(40px)",background:"#1e1e1e",border:"2px solid #333",borderRadius:"8px",display:"flex",flexDirection:"column",overflow:"hidden",zIndex:10,position:"relative",marginBottom:"20px"},children:[n.jsxs("div",{style:{background:"#252526",padding:"4px 8px",fontSize:"9px",color:"#ccc",display:"flex",gap:"10px"},children:[n.jsx("span",{style:{color:"cyan"},children:"code.tsx"}),n.jsx("span",{children:"style.css"}),n.jsx("span",{children:"server.ts"})]}),n.jsxs("div",{style:{padding:"10px",fontFamily:"monospace",fontSize:"10px",color:"#d4d4d4",overflow:"hidden",position:"relative",height:"100%"},children:[n.jsx("div",{style:{position:"absolute",left:0,top:10,width:"20px",textAlign:"right",color:"#555",fontSize:"10px",paddingRight:"4px",zIndex:2,background:"#1e1e1e",overflow:"hidden",height:"100%"},children:n.jsx("div",{style:{animation:"codeScroll 15s linear infinite"},children:[...Array(50)].map((t,r)=>n.jsx("div",{children:r+1},r))})}),n.jsx("div",{style:{marginLeft:"25px",position:"relative",height:"100%",overflow:"hidden"},children:n.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",animation:"codeScroll 15s linear infinite",willChange:"transform",transform:"translateZ(0)"},children:n.jsxs("pre",{style:{margin:0,fontFamily:"inherit",whiteSpace:"pre-wrap"},children:[n.jsx("span",{style:{color:"#c586c0"},children:"import"})," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"React"})," ",n.jsx("span",{style:{color:"#c586c0"},children:"from"})," ",n.jsx("span",{style:{color:"#ce9178"},children:"'react'"}),";",`
|
|
143
|
+
`,n.jsx("span",{style:{color:"#c586c0"},children:"import"})," ","{"," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"Unity"})," ","}"," ",n.jsx("span",{style:{color:"#c586c0"},children:"from"})," ",n.jsx("span",{style:{color:"#ce9178"},children:"'@engine/core'"}),";",`
|
|
144
|
+
`,`
|
|
145
|
+
`,n.jsx("span",{style:{color:"#569cd6"},children:"const"})," ",n.jsx("span",{style:{color:"#dcdcaa"},children:"CyberSystem"})," = () =",">"," ","{",`
|
|
146
|
+
`," ",n.jsx("span",{style:{color:"#569cd6"},children:"const"})," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"initProtocol"})," = ",n.jsx("span",{style:{color:"#c586c0"},children:"async"})," () =",">"," ","{",`
|
|
147
|
+
`," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"console"}),".",n.jsx("span",{style:{color:"#dcdcaa"},children:"log"}),"(",n.jsx("span",{style:{color:"#ce9178"},children:'"Booting..."'}),");",`
|
|
148
|
+
`," ",n.jsx("span",{style:{color:"#c586c0"},children:"await"})," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"Unity"}),".",n.jsx("span",{style:{color:"#dcdcaa"},children:"connect"}),"();",`
|
|
149
|
+
`," ","}",";",`
|
|
150
|
+
`,`
|
|
151
|
+
`," ",n.jsx("span",{style:{color:"#569cd6"},children:"return"})," (",n.jsx("br",{})," ","<",n.jsx("span",{style:{color:"#4ec9b0"},children:"div"})," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"className"}),"=",n.jsx("span",{style:{color:"#ce9178"},children:'"matrix-ui"'}),">",n.jsx("br",{})," ","<",n.jsx("span",{style:{color:"#4ec9b0"},children:"h1"}),">","System Online","</",n.jsx("span",{style:{color:"#4ec9b0"},children:"h1"}),">",n.jsx("br",{})," ","<",n.jsx("span",{style:{color:"#4ec9b0"},children:"Dashboard"})," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"active"}),"=","{",n.jsx("span",{style:{color:"#569cd6"},children:"true"}),"}"," ","/>",n.jsx("br",{})," ","</",n.jsx("span",{style:{color:"#4ec9b0"},children:"div"}),">",n.jsx("br",{})," );",`
|
|
152
|
+
`,"}",";",`
|
|
153
|
+
`,`
|
|
154
|
+
`,n.jsx("span",{style:{color:"#6a9955"},children:"// Restarting Sequence..."}),`
|
|
155
|
+
`,n.jsx("span",{style:{color:"#c586c0"},children:"import"})," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"React"})," ",n.jsx("span",{style:{color:"#c586c0"},children:"from"})," ",n.jsx("span",{style:{color:"#ce9178"},children:"'react'"}),";",`
|
|
156
|
+
`,n.jsx("span",{style:{color:"#569cd6"},children:"const"})," ",n.jsx("span",{style:{color:"#dcdcaa"},children:"Reboot"})," = () =",">"," ",n.jsx("span",{style:{color:"#ce9178"},children:'"Success"'}),";",`
|
|
157
|
+
`,n.jsx("span",{style:{color:"#c586c0"},children:"import"})," ","{"," ",n.jsx("span",{style:{color:"#9cdcfe"},children:"Unity"})," ","}"," ",n.jsx("span",{style:{color:"#c586c0"},children:"from"})," ",n.jsx("span",{style:{color:"#ce9178"},children:"'@engine/core'"}),";",`
|
|
158
|
+
`]})})})]})]}),n.jsxs("div",{style:{width:"280px",height:"180px",transform:"rotateY(-15deg) translateZ(20px)",transformOrigin:"left center",background:"#0a0a0a",border:"2px solid #333",borderRadius:"8px",display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"},children:[n.jsxs("div",{style:{background:"linear-gradient(90deg, #1a1a1a, #2a2a2a)",padding:"4px 8px",fontSize:"8px",color:"#00ff00",display:"flex",alignItems:"center",gap:"6px",borderBottom:"1px solid #333"},children:[n.jsx("span",{style:{fontWeight:"bold",color:"#00ff00"},children:"┌──(kali㉿kali)"}),n.jsx("span",{style:{color:"#666"},children:"~"})]}),n.jsxs("div",{style:{flex:1,background:"#000",padding:"6px",fontFamily:"monospace",fontSize:"7px",color:"#00ff00",overflow:"hidden",position:"relative"},children:[n.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",opacity:.08,fontSize:"40px",color:"#00ff00",fontWeight:"bold",pointerEvents:"none"},children:"🐉"}),n.jsxs("div",{style:{position:"relative",zIndex:2},children:[n.jsxs("div",{style:{marginBottom:"3px"},children:[n.jsx("span",{style:{color:"#00ff00"},children:"└─$"})," ",n.jsx("span",{style:{color:"#fff"},children:"netstat -an | grep LISTEN"})]}),n.jsxs("div",{style:{color:"#888",fontSize:"6px",marginBottom:"4px",lineHeight:"1.3"},children:[n.jsx("div",{children:"tcp 0 0 0.0.0.0:80 LISTEN"}),n.jsx("div",{children:"tcp 0 0 0.0.0.0:22 LISTEN"})]}),n.jsxs("div",{style:{marginBottom:"2px",marginTop:"4px"},children:[n.jsx("span",{style:{color:"#00ff00"},children:"└─$"})," ",n.jsx("span",{style:{color:"#fff"},children:"nmap -A -T4 10.0.0.1"})]}),n.jsx("div",{style:{color:"#0ff",fontSize:"6px",marginBottom:"3px"},children:"Starting Nmap 7.94 scan..."}),n.jsxs("div",{style:{marginBottom:"2px"},children:[n.jsx("span",{style:{color:"#00ff00"},children:"└─$"})," ",n.jsx("span",{style:{color:"#fff"},children:"hydra -l admin -P pass.txt ssh://10.0.0.1"})]}),n.jsx("div",{style:{color:"#f00",fontSize:"6px",marginBottom:"3px"},children:"[DATA] Attacking service ssh..."}),n.jsxs("div",{style:{marginTop:"4px"},children:[n.jsx("span",{style:{color:"#00ff00"},children:"└─$"})," ",n.jsx("span",{style:{display:"inline-block",width:"6px",height:"8px",background:"#00ff00",animation:"cursorBlink 1s infinite"}})]})]})]}),n.jsxs("div",{style:{background:"#1a1a1a",padding:"2px 6px",fontSize:"6px",color:"#00ff00",display:"flex",justifyContent:"space-between",borderTop:"1px solid #333"},children:[n.jsx("span",{children:"🔒 Root Access"}),n.jsx("div",{children:"IP: 10.10.14.32"})]})]})]}),n.jsxs("div",{style:{position:"absolute",bottom:"40px",left:"50%",transform:"translateX(-50%) perspective(500px) rotateX(20deg)",zIndex:2,display:"flex",alignItems:"center",gap:"40px"},children:[n.jsx("div",{style:{width:"320px",height:"110px"},children:n.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 320 110",children:[n.jsxs("defs",{children:[n.jsxs("linearGradient",{id:"metalBody",x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:[n.jsx("stop",{offset:"0%",stopColor:"#444"}),n.jsx("stop",{offset:"20%",stopColor:"#222"}),n.jsx("stop",{offset:"80%",stopColor:"#1a1a1a"}),n.jsx("stop",{offset:"100%",stopColor:"#111"})]}),n.jsxs("linearGradient",{id:"metalKey",x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:[n.jsx("stop",{offset:"0%",stopColor:"#333"}),n.jsx("stop",{offset:"100%",stopColor:"#000"})]}),n.jsxs("filter",{id:"metalSheen",children:[n.jsx("feSpecularLighting",{result:"spec",specularConstant:"1.2",specularExponent:"10",lightingColor:"#ffffff",children:n.jsx("fePointLight",{x:"160",y:"-50",z:"200"})}),n.jsx("feComposite",{in:"SourceGraphic",in2:"spec",operator:"arithmetic",k1:"0",k2:"1",k3:"1",k4:"0"})]})]}),n.jsx("rect",{x:"0",y:"0",width:"320",height:"110",rx:"6",fill:"url(#metalBody)",stroke:"#555",strokeWidth:"2"}),n.jsx("path",{d:"M10 105 H310",stroke:"#00e5ff",strokeWidth:"2",strokeOpacity:"0.7"}),[...Array(14)].map((t,r)=>n.jsx("rect",{x:10+r*22,y:"10",width:"18",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"},`r1-${r}`)),n.jsx("rect",{x:"10",y:"32",width:"28",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"}),[...Array(12)].map((t,r)=>n.jsx("rect",{x:42+r*22,y:"32",width:"18",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"},`r2-${r}`)),n.jsx("rect",{x:"10",y:"54",width:"34",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"}),[...Array(11)].map((t,r)=>n.jsx("rect",{x:48+r*22,y:"54",width:"18",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"},`r3-${r}`)),n.jsx("rect",{x:"290",y:"54",width:"28",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"}),n.jsx("rect",{x:"10",y:"76",width:"44",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"}),[...Array(10)].map((t,r)=>n.jsx("rect",{x:58+r*22,y:"76",width:"18",height:"18",rx:"2",fill:"url(#metalKey)",stroke:"#222"},`r4-${r}`)),n.jsx("rect",{x:"90",y:"98",width:"140",height:"8",rx:"2",fill:"url(#metalKey)",stroke:"#222"}),n.jsx("rect",{x:"58",y:"54",width:"18",height:"18",rx:"2",fill:"#111",stroke:"#00e5ff",strokeWidth:"1.5"})," ",n.jsx("rect",{x:"80",y:"54",width:"18",height:"18",rx:"2",fill:"#111",stroke:"#00e5ff",strokeWidth:"1.5"})," ",n.jsx("rect",{x:"102",y:"54",width:"18",height:"18",rx:"2",fill:"#111",stroke:"#00e5ff",strokeWidth:"1.5"})," ",n.jsx("rect",{x:"80",y:"32",width:"18",height:"18",rx:"2",fill:"#111",stroke:"#00e5ff",strokeWidth:"1.5"})," "]})}),n.jsx("div",{style:{width:"50px",height:"80px"},children:n.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 50 80",children:[n.jsx("defs",{children:n.jsxs("linearGradient",{id:"mouseGrad",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[n.jsx("stop",{offset:"0%",stopColor:"#222"}),n.jsx("stop",{offset:"50%",stopColor:"#444"}),n.jsx("stop",{offset:"100%",stopColor:"#222"})]})}),n.jsx("path",{d:"M10 20 C10 5 40 5 40 20 V60 C40 75 10 75 10 60 Z",fill:"url(#mouseGrad)",stroke:"#666",strokeWidth:"1"}),n.jsx("line",{x1:"25",y1:"5",x2:"25",y2:"35",stroke:"#111",strokeWidth:"1.5"}),n.jsx("rect",{x:"23",y:"15",width:"4",height:"12",rx:"2",fill:"#111",stroke:"#00e5ff",strokeWidth:"1"}),n.jsx("path",{d:"M20 55 L25 45 L30 55",fill:"none",stroke:"#00e5ff",strokeWidth:"1.5",opacity:"0.9"})]})})]})]})}),n.jsx("style",{children:`
|
|
159
|
+
@keyframes codeScroll {
|
|
160
|
+
0% { transform: translateY(0) translateZ(0); }
|
|
161
|
+
100% { transform: translateY(-35%) translateZ(0); }
|
|
162
|
+
}
|
|
163
|
+
@keyframes unityGridPan {
|
|
164
|
+
0% { background-position: 0 0; }
|
|
165
|
+
100% { background-position: 0 60px; }
|
|
166
|
+
}
|
|
167
|
+
@keyframes floatObj {
|
|
168
|
+
0%, 100% { transform: perspective(300px) rotateY(45deg) translateY(0); }
|
|
169
|
+
50% { transform: perspective(300px) rotateY(45deg) translateY(-10px); }
|
|
170
|
+
}
|
|
171
|
+
@keyframes unityGridRotate {
|
|
172
|
+
0% { transform: perspective(300px) rotateX(60deg) rotateZ(0deg); }
|
|
173
|
+
100% { transform: perspective(300px) rotateX(60deg) rotateZ(360deg); }
|
|
174
|
+
}
|
|
175
|
+
@keyframes unityObjectSpin {
|
|
176
|
+
0% { transform: translate(-50%,-50%) rotateY(0deg) rotateX(0deg); }
|
|
177
|
+
100% { transform: translate(-50%,-50%) rotateY(360deg) rotateX(360deg); }
|
|
178
|
+
}
|
|
179
|
+
@keyframes playheadMove {
|
|
180
|
+
0% { left: 0%; }
|
|
181
|
+
100% { left: 100%; }
|
|
182
|
+
}
|
|
183
|
+
@keyframes cursorBlink {
|
|
184
|
+
0%, 49% { opacity: 1; }
|
|
185
|
+
50%, 100% { opacity: 0; }
|
|
186
|
+
}
|
|
187
|
+
`})]})},T2=ca.memo(R2),V2=()=>{const a=typeof window<"u"?window.innerWidth<800:!1,{containerRef:e,handleMouseMove:t}=tn();return n.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:a?"0":"20px 0",position:"relative",marginTop:"30px",marginBottom:"50px"},children:[n.jsx(T2,{}),n.jsxs("div",{ref:e,onMouseMove:t,className:"spotlight-card",onClick:()=>window.open("/os.html","_blank"),style:{position:"relative",width:"fit-content",marginTop:"3px",borderRadius:"50px",cursor:"pointer",userSelect:"none",background:"rgba(10, 10, 15, 0.6)",backdropFilter:"blur(12px)",border:"1px solid rgba(0, 229, 255, 0.3)",boxShadow:"0 0 20px rgba(0, 229, 255, 0.1), inset 0 0 10px rgba(0, 0, 0, 0.3)",padding:"8px 24px 8px 8px",display:"flex",alignItems:"center",gap:"15px",transition:"all 0.3s cubic-bezier(0.2, 0.8, 0.2, 1)"},onMouseEnter:r=>{r.currentTarget.style.transform="translateY(-2px) scale(1.02)",r.currentTarget.style.boxShadow="0 10px 30px rgba(0, 229, 255, 0.3), inset 0 0 10px rgba(0, 229, 255, 0.1)",r.currentTarget.style.border="1px solid rgba(0, 229, 255, 0.6)"},onMouseLeave:r=>{r.currentTarget.style.transform="translateY(0) scale(1)",r.currentTarget.style.boxShadow="0 0 20px rgba(0, 229, 255, 0.1), inset 0 0 10px rgba(0, 0, 0, 0.3)",r.currentTarget.style.border="1px solid rgba(0, 229, 255, 0.3)"},children:[n.jsx("div",{className:"spotlight-overlay",style:{borderRadius:"50px"}}),n.jsxs("div",{style:{width:"40px",height:"40px",borderRadius:"50%",background:"linear-gradient(135deg, #00e5ff 0%, #006064 100%)",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 0 15px rgba(0, 229, 255, 0.6)",position:"relative"},children:[n.jsx(Lm,{style:{color:"#fff",fontSize:"20px"}}),n.jsx("div",{className:"pulse-ripple",style:{position:"absolute",inset:"-5px",border:"2px solid rgba(0, 229, 255, 0.5)",borderRadius:"50%",animation:"ripple 2s infinite"}})]}),n.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[n.jsx("span",{style:{color:"#fff",fontSize:"0.9rem",fontWeight:700,letterSpacing:"1px",fontFamily:"'Rajdhani', sans-serif"},children:"LAUNCH OS"}),n.jsx("span",{style:{color:"rgba(255, 255, 255, 0.5)",fontSize:"0.65rem",letterSpacing:"0.5px",fontFamily:"'Inter', sans-serif"},children:"v2.4 Kernel Active"})]}),n.jsx("style",{children:`
|
|
188
|
+
@keyframes ripple {
|
|
189
|
+
0% { transform: scale(1); opacity: 0.8; }
|
|
190
|
+
100% { transform: scale(1.5); opacity: 0; }
|
|
191
|
+
}
|
|
192
|
+
`})]})]})};function w2(a){return Ke({attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{d:"M10.8634 13.9195C10.6568 14.0195 10.4233 14.0246 10.2185 13.9444C10.1162 13.9044 10.021 13.843 9.93997 13.7614L4.81616 9.06268L2.58433 10.7656C2.37657 10.9241 2.08597 10.9111 1.89301 10.7347L1.17719 10.0802C0.941168 9.86437 0.940898 9.49112 1.17661 9.27496L3.11213 7.5L1.17661 5.72504C0.940898 5.50888 0.941168 5.13563 1.17719 4.91982L1.89301 4.2653C2.08597 4.08887 2.37657 4.07588 2.58433 4.2344L4.81616 5.93732L9.93997 1.23855C9.97037 1.20797 10.0028 1.18023 10.0368 1.15538C10.2748 0.981429 10.5922 0.949298 10.8634 1.08048L13.5399 2.37507C13.8212 2.5111 14 2.79721 14 3.11109V8H10.752V4.53356L6.86419 7.5L10.752 10.4664V8H14V11.8889C14 12.2028 13.8211 12.4889 13.5399 12.625L10.8634 13.9195Z"},child:[]}]})(a)}const rs=[{name:"Kali Linux",icon:n.jsx(vf,{}),color:"#557C94"},{name:"Ubuntu",icon:n.jsx(Af,{}),color:"#E95420"},{name:"VS Code",icon:n.jsx(w2,{}),color:"#007ACC"},{name:"CodePen",icon:n.jsx(hf,{}),color:"#FFFFFF"},{name:"React",icon:n.jsx(bf,{}),color:"#61DAFB"},{name:"TypeScript",icon:n.jsx(Df,{}),color:"#3178C6"},{name:"Node.js",icon:n.jsx(Sf,{}),color:"#339933"},{name:"Unity",icon:n.jsx(jf,{}),color:"#FFFFFF"},{name:"Python",icon:n.jsx(xf,{}),color:"#3776AB"},{name:"C++",icon:n.jsx(uf,{}),color:"#00599C"},{name:"JavaScript",icon:n.jsx(yf,{}),color:"#F7DF1E"},{name:"Blender",icon:n.jsx(pf,{}),color:"#F5792A"},{name:"Tailwind",icon:n.jsx(Pf,{}),color:"#06B6D4"},{name:"Firebase",icon:n.jsx(gf,{}),color:"#FFCA28"},{name:"HTML5",icon:n.jsx(ff,{}),color:"#E34F26"},{name:"CSS3",icon:n.jsx(mf,{}),color:"#1572B6"}],I2=()=>{const a=[...rs,...rs,...rs];return n.jsx("section",{className:"tech-marquee-section",style:{padding:"20px 0",maxWidth:"100%",margin:"0 auto",position:"relative",zIndex:10,overflow:"hidden",pointerEvents:"none",willChange:"transform"},children:n.jsxs("div",{style:{position:"relative",width:"100%",height:"100px",display:"flex",alignItems:"center",overflow:"hidden",background:"transparent"},children:[n.jsx("div",{style:{position:"absolute",top:0,left:0,width:"40px",height:"100%",background:"linear-gradient(to right, #0a0a0f 0%, transparent 100%)",zIndex:5}}),n.jsx("div",{style:{position:"absolute",top:0,right:0,width:"40px",height:"100%",background:"linear-gradient(to left, #0a0a0f 0%, transparent 100%)",zIndex:5}}),n.jsx(Y.div,{animate:{x:[0,-2800]},transition:{x:{repeat:1/0,repeatType:"loop",duration:25,ease:"linear"}},style:{display:"flex",gap:"60px",padding:"10px 0",whiteSpace:"nowrap",willChange:"transform",translateZ:0},children:a.map((e,t)=>n.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:"4px",minWidth:"80px",opacity:.9,transform:"translateZ(0)"},children:[n.jsx("div",{style:{fontSize:"2rem",color:e.color,filter:`drop-shadow(0 0 8px ${e.color==="#000000"?"#ffffff22":e.color+"44"})`,marginBottom:"2px"},children:e.icon}),n.jsx("span",{style:{fontFamily:"Rajdhani, sans-serif",fontSize:"0.75rem",fontWeight:600,color:"rgba(255,255,255,0.8)",letterSpacing:"1px",textTransform:"uppercase"},children:e.name})]},t))})]})})},F2=T.memo(I2),B2=()=>{const{progress:a}=jg();return n.jsx(jp,{center:!0,children:n.jsxs("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"center",width:"300px",textAlign:"center",gap:"15px"},children:[n.jsx("div",{style:{width:"30px",height:"40px",border:"1.5px solid #00e5ff",borderRadius:"4px",position:"relative",overflow:"hidden",background:"rgba(0, 229, 255, 0.05)"},children:n.jsx("div",{style:{position:"absolute",bottom:0,width:"100%",height:`${a}%`,background:"rgba(0, 229, 255, 0.4)",transition:"height 0.2s ease"}})}),n.jsxs("div",{style:{fontFamily:"Orbitron",fontSize:"12px",color:"#00e5ff",letterSpacing:"3px",textShadow:"0 0 10px #00e5ff",textTransform:"uppercase"},children:["LOADING_OS_",Math.round(a),"%"]})]})})},U2=()=>{const a=Eg("/assets/assets/images/IDCARDCOVER.jpg");return a.wrapS=Tc,a.wrapT=Tc,a.repeat.set(1,1),a.offset.set(0,0),n.jsxs("mesh",{position:[0,0,-.12],rotation:[0,Math.PI,0],children:[n.jsx("planeGeometry",{args:[4.2,6.6]}),n.jsx("meshStandardMaterial",{map:a,side:_g})]})},M2=({isMobile:a})=>{const e=T.useRef(null),t=T.useRef(null),r=a?1.55:1.45;return Ag(o=>{if(!e.current)return;const i=o.clock.getElapsedTime();e.current.rotation.y=Math.sin(i*1.2)*.2,e.current.rotation.x=Math.cos(i*1)*.05,t.current&&(t.current.rotation.y=Math.sin(i*1.2)*.08)}),n.jsxs("group",{ref:e,position:[0,a?-1.9:-.8,0],scale:r,children:[n.jsxs("group",{position:[0,5.4,-.6],children:[n.jsx(Nn,{args:[1.5,.5,.2],radius:.05,smoothness:4,children:n.jsx("meshStandardMaterial",{color:"#0a0a0f",metalness:.8,roughness:.2,emissive:"#00e5ff",emissiveIntensity:.2})}),n.jsxs("mesh",{position:[0,0,-.1],children:[n.jsx("boxGeometry",{args:[1.8,.1,.05]}),n.jsx("meshStandardMaterial",{color:"#00e5ff"})]})]}),n.jsxs("group",{ref:t,position:[0,4.5,-.5],children:[n.jsxs("mesh",{position:[0,10,0],children:[n.jsx("cylinderGeometry",{args:[.06,.06,20,16]}),n.jsx("meshStandardMaterial",{color:"#00e5ff",emissive:"#00e5ff",emissiveIntensity:.2,metalness:.8,roughness:.2})]}),n.jsx(Wn,{args:[.5,.08,16,100],rotation:[Math.PI/2,0,0],position:[0,.4,0],children:n.jsx("meshStandardMaterial",{color:"#00e5ff",emissive:"#00e5ff",emissiveIntensity:.5})}),n.jsx(Wn,{args:[.2,.06,16,100],rotation:[0,0,0],position:[0,.1,.1],children:n.jsx("meshStandardMaterial",{color:"#00e5ff"})}),n.jsx(Wn,{args:[.2,.06,16,100],rotation:[0,0,0],position:[0,-.1,.1],children:n.jsx("meshStandardMaterial",{color:"#00e5ff"})}),n.jsxs("mesh",{position:[.1,-.4,.1],rotation:[0,0,.2],children:[n.jsx("cylinderGeometry",{args:[.04,.02,.4,8]}),n.jsx("meshStandardMaterial",{color:"#00e5ff"})]})]}),n.jsxs("mesh",{position:[0,3.4,0],children:[n.jsx("cylinderGeometry",{args:[.3,.3,.6,16]}),n.jsx("meshStandardMaterial",{color:"#ffffff",metalness:1,roughness:0})]}),n.jsx(Nn,{args:[4.4,6.8,.2],radius:.15,smoothness:4,position:[0,0,0],children:n.jsx("meshStandardMaterial",{color:"#050505",metalness:1,roughness:0})}),n.jsx(U2,{}),n.jsxs(Nn,{args:[4.2,6.6,.02],radius:.12,smoothness:4,position:[0,0,.11],children:[n.jsx("meshStandardMaterial",{color:"#16161e"}),n.jsxs(jp,{transform:!0,occlude:"blending",distanceFactor:3.4,position:[0,0,.015],pointerEvents:"none",style:{width:"460px",height:"750px",background:"#16161e",color:"#fff",display:"flex",flexDirection:"column",fontFamily:"Barlow, sans-serif",userSelect:"none",borderRadius:"18px",padding:"3px",boxSizing:"border-box",overflow:"hidden",gap:"3px"},children:[n.jsx("div",{style:{height:"14px",background:"#00e5ff",borderRadius:"10px",boxShadow:"0 0 30px #00e5ff, 0 0 60px rgba(0,229,255,0.4)",flexShrink:0}}),n.jsxs("div",{style:{flex:1,width:"100%",borderRadius:"14px",border:"5px solid #00e5ff",overflow:"hidden",position:"relative",background:"#000",boxShadow:"0 0 60px rgba(0,229,255,0.6), inset 0 0 30px rgba(0,229,255,0.1)"},children:[n.jsx("img",{src:"/assets/assets/images/IDCARDFRONT.jpg",alt:"Tushar Rathod",style:{width:"100%",height:"100%",objectFit:"cover",display:"block",objectPosition:"center top"}}),n.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,padding:"40px 12px 20px",background:"linear-gradient(transparent, rgba(0,0,0,0.9), #000)",textAlign:"center"},children:n.jsx("p",{style:{fontSize:"28px",fontWeight:700,color:"#fff",margin:0,lineHeight:"1.2",letterSpacing:"2px",textShadow:"0 0 20px rgba(0,229,255,0.6)"},children:"Tushar Rathod"})})]})]})]})]})},N2=()=>{const[a]=T.useState(()=>window.innerWidth<=768);return n.jsx("div",{style:{width:"100%",height:a?"530px":"100vh",minHeight:a?"530px":"100vh",maxHeight:a?"530px":"100vh",position:"relative",cursor:"grab",touchAction:"none"},children:n.jsxs(Sg,{dpr:[1,2],gl:{antialias:!0,alpha:!0,powerPreference:"high-performance"},children:[n.jsx(xg,{makeDefault:!0,position:[0,0,22],fov:40}),n.jsx("ambientLight",{intensity:1.5}),n.jsx("directionalLight",{position:[10,10,10],intensity:1.5}),n.jsx("pointLight",{position:[-10,0,10],intensity:4,color:"#00e5ff"}),n.jsxs(T.Suspense,{fallback:n.jsx(B2,{}),children:[n.jsx(bg,{global:!1,snap:!1,rotation:[0,.2,0],polar:[-Math.PI/4,Math.PI/4],azimuth:void 0,children:n.jsx(Pg,{speed:2,rotationIntensity:.2,floatIntensity:.1,children:n.jsx(M2,{isMobile:a})})}),n.jsx(Dg,{preset:"city"})]})]})})},op=({onNavigate:a})=>{const[e,t]=T.useState(!1);return n.jsxs("article",{className:"home active",children:[n.jsx("style",{children:`
|
|
193
|
+
.tusharbr-cyber-btn:hover .btn-trace { stroke: #fff !important; filter: drop-shadow(0 0 6px #00e5ff); opacity: 1 !important; }
|
|
194
|
+
.tusharbr-cyber-btn:hover { background: rgba(0, 229, 255, 0.15) !important; }
|
|
195
|
+
`}),n.jsx(fa,{title:"Tushar Rathod | Full Stack Web & Game Developer",description:"Official portfolio of RATHOD TUSHAR BABUBHAI (Tusharbr). Web & Game Developer from Gujarat, India.",keywords:["RATHOD TUSHAR BABUBHAI","Tushar Rathod","Tusharbr","Tusharbr.online","Web Developer Gujarat","Game Developer India","Full Stack Developer","Unity Developer India","React.js Developer","Interactive Web Design"],schema:{"@context":"https://schema.org","@type":"Person",name:"RATHOD TUSHAR BABUBHAI",alternateName:"Tusharbr",url:"https://www.tusharbr.online",jobTitle:"Full Stack Web & Game Developer",homeLocation:{"@type":"Place",name:"Gujarat, India"},email:"rathodtushar1442@gmail.com",sameAs:["https://github.com/tushar-br","https://www.hackerrank.com/profile/rathodtushar1442","https://linkedin.com/in/tushar-br","https://instagram.com/tushar__br","https://sketchfab.com/CodeWithTushar"]}}),n.jsx("div",{className:"mobile-only",style:{position:"fixed",top:"68px",left:"12px",zIndex:999},children:n.jsxs("label",{className:"cyber-toggle",style:{margin:0},children:[n.jsx("input",{type:"checkbox",checked:e,onChange:()=>t(r=>!r)}),n.jsxs("div",{children:[n.jsxs("div",{className:"track-bg",children:[n.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",style:{opacity:e?.3:1},children:[n.jsx("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),n.jsx("circle",{cx:"12",cy:"7",r:"4"})]}),n.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",style:{opacity:e?1:.3},children:[n.jsx("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),n.jsx("line",{x1:"7",y1:"8",x2:"17",y2:"8"}),n.jsx("line",{x1:"7",y1:"12",x2:"17",y2:"12"})]})]}),n.jsx("div",{className:"knob",children:n.jsx("svg",{className:"icon-svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:e?n.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"}):n.jsxs(n.Fragment,{children:[n.jsx("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),n.jsx("circle",{cx:"12",cy:"7",r:"4"})]})})})]})]})}),n.jsx("div",{className:"home-desktop-grid",children:n.jsxs("div",{className:"home-left-stack",children:[n.jsx("section",{className:"hero-section",style:{padding:"30px 0 0",minHeight:"auto",display:"flex",flexDirection:"column",alignItems:"stretch",gap:0,marginBottom:"-1px"},children:n.jsxs(ht,{mode:"wait",children:[!e&&n.jsx(Y.div,{initial:{opacity:0,y:24,scale:.97},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-24,scale:.97,filter:"blur(3px)"},transition:{duration:.4,ease:[.4,0,.2,1]},children:n.jsxs("div",{className:"glass-card hero-wrapper",style:{position:"relative",padding:"20px 30px 15px",display:"flex",flexDirection:"column",alignItems:"center",gap:"15px",width:"100%",border:"1px solid rgba(0, 229, 255, 0.2)",borderBottom:"none",borderRadius:"12px 12px 0 0",overflow:"hidden",zIndex:2,textAlign:"center",transition:"all 0.4s ease",background:"transparent",boxShadow:"none"},children:[n.jsxs("div",{style:{position:"absolute",inset:0,zIndex:0,opacity:.6,overflow:"hidden"},children:[n.jsx("video",{src:"/assets/images/profilecard cover video.mp4",autoPlay:!0,loop:!0,muted:!0,playsInline:!0,style:{width:"100%",height:"100%",objectFit:"cover",transform:"none"}}),n.jsx("div",{style:{position:"absolute",inset:0,background:"linear-gradient(to top, rgba(6,6,12,0.8) 0%, transparent 25%, transparent 100%)"}})]}),n.jsxs("div",{style:{position:"relative",zIndex:2,width:"100%",display:"flex",flexDirection:"column",alignItems:"center"},children:[n.jsxs("div",{style:{width:"180px",height:"180px",margin:"5px auto 15px auto",position:"relative",display:"flex",alignItems:"center",justifyContent:"center"},children:[n.jsx(Y.div,{animate:{rotate:360},transition:{duration:25,repeat:1/0,ease:"linear"},style:{position:"absolute",inset:0,border:"0.5px solid rgba(0,229,255,0.2)",borderRadius:"50%"}}),n.jsx("div",{style:{position:"absolute",inset:"5px",border:"1px solid rgba(0,229,255,0.5)",borderRadius:"50%",maskImage:"conic-gradient(from 0deg, black 40deg, transparent 50deg, black 130deg, transparent 140deg, black 220deg, transparent 230deg, black 310deg, transparent 320deg)",WebkitMaskImage:"conic-gradient(from 0deg, black 40deg, transparent 50deg, black 130deg, transparent 140deg, black 220deg, transparent 230deg, black 310deg, transparent 320deg)",boxShadow:"0 0 15px rgba(0,229,255,0.2)"}}),n.jsx("div",{className:"profile-video-ring",style:{width:"140px",height:"140px",borderRadius:"50%",overflow:"hidden",border:"2px solid rgba(0,229,255,0.8)",boxShadow:"0 0 30px rgba(0,229,255,0.4)",position:"relative",background:"#000",zIndex:1},children:n.jsx("img",{src:"/assets/images/home-avatar.png",alt:"Profile Avatar",style:{width:"100%",height:"100%",objectFit:"cover",display:"block",borderRadius:"50%"}})})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"15px",marginBottom:"10px"},children:[n.jsxs(Y.div,{onClick:()=>window.open("https://www.google.com/search?q=tushar+br+online","_blank"),whileHover:{scale:1.05,boxShadow:"0 0 20px rgba(0,229,255,0.4)",borderColor:"#00e5ff"},whileTap:{scale:.95},style:{display:"flex",alignItems:"center",gap:"10px",background:"rgba(6, 6, 15, 0.6)",padding:"8px 20px",borderRadius:"30px",border:"1px solid rgba(0, 229, 255, 0.3)",cursor:"pointer",transition:"all 0.3s ease",backdropFilter:"blur(10px)"},children:[n.jsx("div",{style:{width:"22px",height:"22px",borderRadius:"50%",overflow:"hidden",border:"1px solid rgba(0,229,255,0.5)",display:"flex",alignItems:"center",justifyContent:"center",background:"#fff"},children:n.jsx("img",{src:"/assets/images/logo.png?v=2",alt:"Logo",style:{width:"90%",height:"90%",objectFit:"contain"}})}),n.jsx("span",{style:{fontFamily:"Barlow, sans-serif",fontSize:"1rem",fontWeight:600,color:"#fff",letterSpacing:"1px"},children:"@Tusharbr"})]}),n.jsx(Y.button,{onClick:()=>a("contact"),whileHover:{scale:1.1,rotate:15,boxShadow:"0 0 15px rgba(0,229,255,0.4)",borderColor:"#00e5ff"},whileTap:{scale:.9},style:{width:"42px",height:"42px",borderRadius:"50%",border:"1px solid rgba(0, 229, 255, 0.3)",background:"rgba(6,6,15,0.6)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:"#00e5ff",transition:"all 0.3s ease",backdropFilter:"blur(10px)"},children:n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[n.jsx("path",{d:"m22 2-7 20-4-9-9-4Z"}),n.jsx("path",{d:"M22 2 11 13"})]})})]})]})]})},"profile"),e&&n.jsx(Y.div,{initial:{opacity:0,y:30,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-30,scale:.95},transition:{duration:.45,ease:[.4,0,.2,1]},style:{width:"100%",height:"520px",minHeight:"520px",maxHeight:"520px",overflow:"hidden",borderRadius:"12px 12px 0 0"},children:n.jsx(N2,{})},"card3d")]})}),n.jsx("div",{style:{width:"100%",height:"24px",position:"relative",zIndex:5,display:"flex",justifyContent:"center",pointerEvents:"none"},children:n.jsxs("svg",{width:"40",height:"24",viewBox:"0 0 40 24",fill:"none",children:[n.jsx("path",{d:"M20 0V24",stroke:"rgba(0,229,255,0.3)",strokeWidth:"2",strokeDasharray:"4 4"}),n.jsx("circle",{cx:"20",cy:"12",r:"4",fill:"#00e5ff",children:n.jsx("animate",{attributeName:"opacity",values:"1;0.4;1",dur:"2s",repeatCount:"indefinite"})})]})}),n.jsx(D2,{onNavigate:a})]})}),n.jsx(k2,{}),n.jsx(V2,{}),n.jsx(F2,{})]})},W2=[{year:"2020",title:"The Spark",description:"Started my journey with HTML/CSS and discovered the magic of making things on the web.",icon:n.jsx(Hm,{})},{year:"2021",title:"Logic Building",description:"Dived deep into JavaScript and C++. Built my first set of small games and logic puzzles.",icon:n.jsx(xp,{})},{year:"2022",title:"Game Dev & Unity",description:"Fell in love with 3D worlds. Started mastering Unity3D and C# for game development.",icon:n.jsx(bp,{})},{year:"2023",title:"Full Stack Master",description:"Mastered React, Node.js, and modern web tech. Started building complex web applications.",icon:n.jsx(Xm,{})},{year:"2024",title:"Cybernetic Architect",description:"Focusing on high-end UI/UX and complex 3D web experiences. Exploring AI and beyond.",icon:n.jsx(Zm,{})}],G2=()=>{const a=T.useRef(null),{scrollYProgress:e}=vg({target:a,offset:["start end","end start"]});return n.jsxs("section",{ref:a,className:"timeline-section",style:{padding:"60px 20px",maxWidth:"600px",margin:"0 auto",position:"relative",zIndex:2},children:[n.jsx("h2",{style:{fontFamily:"Barlow Condensed, sans-serif",fontSize:"2rem",color:"var(--accent-cyan)",textAlign:"center",marginBottom:"40px",letterSpacing:"2px",textTransform:"uppercase"},children:"Coding Journey"}),n.jsxs("div",{style:{position:"relative"},children:[n.jsx("div",{style:{position:"absolute",left:"20px",top:0,bottom:0,width:"2px",background:"rgba(0, 229, 255, 0.1)",zIndex:0}}),n.jsx(Y.div,{style:{position:"absolute",left:"20px",top:0,bottom:0,width:"2px",background:"var(--accent-cyan)",scaleY:e,originY:0,boxShadow:"0 0 15px var(--accent-cyan)",zIndex:1}}),n.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"50px"},children:W2.map((t,r)=>n.jsxs(Y.div,{initial:{opacity:0,x:-20},whileInView:{opacity:1,x:0},transition:{duration:.5,delay:r*.1},viewport:{once:!0},style:{display:"flex",gap:"30px",position:"relative",zIndex:2},children:[n.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",background:"var(--bg-card)",border:"2px solid var(--accent-cyan)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"1rem",color:"var(--accent-cyan)",fontWeight:"bold",boxShadow:"0 0 15px rgba(0, 229, 255, 0.2)",flexShrink:0},children:t.icon}),n.jsxs("div",{className:"glass-card",style:{padding:"20px",flex:1,background:"rgba(15, 15, 25, 0.4)",border:"1px solid rgba(0, 229, 255, 0.1)",borderRadius:"12px"},children:[n.jsxs("span",{style:{fontFamily:"Barlow Condensed, sans-serif",fontSize:"1.2rem",color:"var(--accent-cyan)",display:"block",marginBottom:"5px"},children:[t.year," — ",t.title]}),n.jsx("p",{style:{fontFamily:"Barlow, sans-serif",fontSize:"0.9rem",color:"var(--text-gray)",lineHeight:1.5,margin:0},children:t.description})]})]},r))})]})]})},z2=(a={})=>{const{threshold:e=.1,rootMargin:t="0px",triggerOnce:r=!1}=a,o=T.useRef(null),[i,s]=T.useState(!1);return T.useEffect(()=>{const c=o.current;if(!c)return;const d=new IntersectionObserver(([p])=>{p.isIntersecting?(s(!0),r&&d.unobserve(c)):r||s(!1)},{threshold:e,rootMargin:t});return d.observe(c),()=>{d.disconnect()}},[e,t,r]),{elementRef:o,inView:i}},We=({children:a,direction:e="up",delay:t=0,duration:r=.6,threshold:o=.1,triggerOnce:i=!0,className:s="",style:c={}})=>{const{elementRef:d,inView:p}=z2({threshold:o,triggerOnce:i,rootMargin:"0px 0px -50px 0px"}),m={up:{hidden:{opacity:0,y:40},visible:{opacity:1,y:0}},down:{hidden:{opacity:0,y:-40},visible:{opacity:1,y:0}},left:{hidden:{opacity:0,x:40},visible:{opacity:1,x:0}},right:{hidden:{opacity:0,x:-40},visible:{opacity:1,x:0}},fade:{hidden:{opacity:0},visible:{opacity:1}},scale:{hidden:{opacity:0,scale:.9},visible:{opacity:1,scale:1}}}[e];return n.jsx(Y.div,{ref:d,initial:"hidden",animate:p?"visible":"hidden",variants:m,transition:{duration:r*.8,delay:t,ease:"easeOut"},className:s,style:{...c,willChange:"opacity, transform"},children:a})},O2=()=>n.jsxs("article",{className:"about active",children:[n.jsx(fa,{title:"About My Work & Vision | RATHOD TUSHAR BABUBHAI",description:"Learn about the journey of RATHOD TUSHAR BABUBHAI (Tusharbr), a Web & Game Developer from Gujarat. Discover my coding philosophy, personal hobbies like gaming, and technical standards.",keywords:["RATHOD TUSHAR BABUBHAI Bio","Tusharbr Story","Web Developer Gujarat India","Game Developer Portfolio","Tushar Rathod Skills","Unity 3D Expert Gujarat","React Developer Portfolio","Coding Philosophy Tushar","Tusharbr Career Timeline"]}),n.jsx(We,{direction:"down",duration:.6,children:n.jsxs("header",{className:"section-header",children:[n.jsx("h2",{className:"section-title",children:"About Me"}),n.jsx("div",{className:"section-icon",children:n.jsx(Vi,{})})]})}),n.jsx(We,{direction:"up",duration:.7,delay:.2,children:n.jsx("section",{className:"glass-card mb-4",style:{padding:"30px"},children:n.jsxs("p",{style:{color:"var(--text-gray)"},children:["I'm ",n.jsx("strong",{children:"Tushar Rathod"}),", a passionate ",n.jsx("strong",{children:"Web & Game Developer"})," based in ",n.jsx("strong",{children:"Gujarat, India"}),". I specialize in building high-performance web applications and immersive gaming experiences. With a keen eye for design and a deep understanding of modern technologies, I turn complex problems into elegant, user-friendly solutions. Check out my ",n.jsx("a",{href:"/projects",style:{color:"var(--accent-cyan)"},children:"Full Stack Projects"})," or my ",n.jsx("a",{href:"/resume",style:{color:"var(--accent-cyan)"},children:"CV / Resume"}),"."]})})}),n.jsx(We,{direction:"up",duration:.7,delay:.3,children:n.jsxs("section",{className:"service",style:{marginTop:"40px"},children:[n.jsx("h3",{className:"h3",style:{marginBottom:"25px",fontFamily:"Barlow Condensed, sans-serif",letterSpacing:"1px",color:"var(--accent-cyan)"},children:"What I'm doing"}),n.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"20px"},children:[{title:"Web Development",desc:"Modern, responsive designs built with the latest frameworks and optimized for speed.",icon:n.jsx(qm,{}),color:"var(--accent-cyan)"},{title:"Game Development",desc:"Immersive 2D and 3D games with focus on engaging mechanics and smooth performance.",icon:n.jsx($m,{}),color:"var(--accent-magenta)"},{title:"App Development",desc:"Building native and cross-platform mobile applications with seamless user experiences.",icon:n.jsx(Qm,{}),color:"#ff9800"},{title:"UI/UX Design",desc:"Creating intuitive, aesthetic, and user-centered interface designs for web and mobile apps.",icon:n.jsx(Vi,{}),color:"#4caf50"}].map((a,e)=>n.jsxs(Y.div,{whileHover:{translateY:-8},className:"glass-card",style:{padding:"30px",display:"flex",gap:"20px",background:"rgba(15, 15, 25, 0.4)",border:"1px solid rgba(255, 255, 255, 0.05)",position:"relative",overflow:"hidden",transition:"border-color 0.3s ease"},onMouseEnter:t=>t.currentTarget.style.borderColor=a.color,onMouseLeave:t=>t.currentTarget.style.borderColor="rgba(255, 255, 255, 0.05)",children:[n.jsx("div",{style:{fontSize:"2.5rem",color:a.color,filter:`drop-shadow(0 0 10px ${a.color}44)`},children:a.icon}),n.jsxs("div",{children:[n.jsx("h4",{className:"h4",style:{marginBottom:"8px",fontFamily:"Barlow Condensed, sans-serif",fontSize:"1.2rem"},children:a.title}),n.jsx("p",{style:{color:"var(--text-gray)",fontSize:"0.9rem",lineHeight:1.6},children:a.desc})]}),n.jsx("div",{style:{position:"absolute",top:0,right:0,width:"40px",height:"40px",background:`linear-gradient(225deg, ${a.color}22 0%, transparent 50%)`,borderTop:`1px solid ${a.color}44`,borderRight:`1px solid ${a.color}44`}})]},e))})]})}),n.jsx(We,{direction:"up",duration:.7,delay:.5,children:n.jsx(G2,{})})]}),xt={personal:{name:"Rathod Tushar Babubhai",username:"@tusharbr",role:"Web & Game Developer",email:"rathodtushar1442@gmail.com",location:"Gujarat, India",portfolio:"https://tusharbr.online",github:"https://github.com/tushar-br",linkedin:"Tushar(ᯤ).ix"},education:[{degree:"Diploma in Information Technology",institution:"L.E. College Diploma, Morbi (GTU)",status:"Semester: 5th completed"}],skills:["HTML","CSS","JavaScript","PHP","Bootstrap","React.js","Unity Game Design","Frontend Development","Game Development","Netlify","Canva","Microsoft Word","Microsoft Office","Image Editing","Video Editing","Web Analytics","Visual Studio Code"],experience:[{role:"MERN Stack Internship",duration:"Week 1 completed",details:["Frontend projects (dashboards, portfolio, upload system)"]},{role:"Game Development",duration:"Ongoing",details:["Game development using Unity"]},{role:"AI Integration",duration:"Project-based",details:["AI-integrated web systems"]}],summary:"I am a passionate Web & Game Developer focused on building high-performance web applications, immersive UI experiences, and interactive 2D/3D games. I enjoy combining clean design with modern technology to create premium digital products."},ie=Yg.create({page:{flexDirection:"column",backgroundColor:"#1a1a1a",color:"#e0e0e0",padding:30,fontFamily:"Helvetica"},header:{marginBottom:20,borderBottomWidth:1,borderBottomColor:"#00e5ff",paddingBottom:10},name:{fontSize:24,fontWeight:"bold",color:"#00e5ff",marginBottom:5,textTransform:"uppercase"},role:{fontSize:14,color:"#b0b0b0",marginBottom:5,letterSpacing:1.5},contactRow:{flexDirection:"row",flexWrap:"wrap",marginTop:5,gap:10},contactText:{fontSize:10,color:"#888",marginRight:10},link:{textDecoration:"none",color:"#00e5ff"},section:{marginTop:15,marginBottom:5},sectionTitle:{fontSize:14,fontWeight:"bold",borderBottomWidth:1,borderBottomColor:"#333",marginBottom:8,color:"#c0c0c0",textTransform:"uppercase"},text:{fontSize:10,marginBottom:3,lineHeight:1.4,color:"#ccc"},skillRow:{flexDirection:"row",flexWrap:"wrap",gap:5},skillBadge:{backgroundColor:"#2a2a2a",padding:"3 6",borderRadius:4,fontSize:9,color:"#00e5ff",marginBottom:4,marginRight:4},expItem:{marginBottom:8},expRole:{fontSize:11,fontWeight:"bold",color:"#fff"},expDuration:{fontSize:9,color:"#666",marginBottom:2}}),L2=()=>n.jsx(Qg,{children:n.jsxs(Kg,{size:"A4",style:ie.page,children:[n.jsxs(Ht,{style:ie.header,children:[n.jsx(Ve,{style:ie.name,children:xt.personal.name}),n.jsx(Ve,{style:ie.role,children:xt.personal.role}),n.jsxs(Ht,{style:ie.contactRow,children:[n.jsx(Ve,{style:ie.contactText,children:xt.personal.location}),n.jsx(Ve,{style:ie.contactText,children:"•"}),n.jsx(zn,{src:`mailto:${xt.personal.email}`,style:ie.contactText,children:xt.personal.email}),n.jsx(Ve,{style:ie.contactText,children:"•"}),n.jsx(Ve,{style:ie.contactText,children:xt.personal.username})]}),n.jsxs(Ht,{style:ie.contactRow,children:[n.jsx(zn,{src:xt.personal.portfolio,style:[ie.contactText,ie.link],children:"Portfolio"}),n.jsx(Ve,{style:ie.contactText,children:"|"}),n.jsx(zn,{src:xt.personal.github,style:[ie.contactText,ie.link],children:"GitHub"}),n.jsx(Ve,{style:ie.contactText,children:"|"}),n.jsx(Ve,{style:ie.contactText,children:xt.personal.linkedin})]})]}),n.jsxs(Ht,{style:ie.section,children:[n.jsx(Ve,{style:ie.sectionTitle,children:"Summary"}),n.jsx(Ve,{style:ie.text,children:xt.summary})]}),n.jsxs(Ht,{style:ie.section,children:[n.jsx(Ve,{style:ie.sectionTitle,children:"Skills"}),n.jsx(Ht,{style:ie.skillRow,children:xt.skills.map((a,e)=>n.jsx(Ve,{style:ie.skillBadge,children:a},e))})]}),n.jsxs(Ht,{style:ie.section,children:[n.jsx(Ve,{style:ie.sectionTitle,children:"Experience"}),xt.experience.map((a,e)=>n.jsxs(Ht,{style:ie.expItem,children:[n.jsx(Ve,{style:ie.expRole,children:a.role}),n.jsx(Ve,{style:ie.expDuration,children:a.duration}),a.details.map((t,r)=>n.jsxs(Ve,{style:ie.text,children:["• ",t]},r))]},e))]}),n.jsxs(Ht,{style:ie.section,children:[n.jsx(Ve,{style:ie.sectionTitle,children:"Education"}),xt.education.map((a,e)=>n.jsxs(Ht,{style:ie.expItem,children:[n.jsx(Ve,{style:ie.expRole,children:a.degree}),n.jsx(Ve,{style:ie.text,children:a.institution}),n.jsx(Ve,{style:[ie.text,{color:"#888"}],children:a.status})]},e))]})]})}),H2=()=>n.jsxs("svg",{width:"100%",height:"auto",viewBox:"0 0 600 850",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{background:"white",borderRadius:"8px"},children:[n.jsx("style",{children:`
|
|
196
|
+
.header-text { font-family: sans-serif; fill: white; }
|
|
197
|
+
.body-text { font-family: sans-serif; fill: #333; }
|
|
198
|
+
.section-title { font-family: sans-serif; font-weight: bold; fill: #1a1a1a; letter-spacing: 1px;}
|
|
199
|
+
.dates { font-family: sans-serif; fill: #666; font-size: 12px; }
|
|
200
|
+
.role { font-family: sans-serif; font-weight: bold; fill: #333; }
|
|
201
|
+
`}),n.jsx("rect",{width:"600",height:"850",fill:"white"}),n.jsx("rect",{x:"0",y:"0",width:"600",height:"140",fill:"#1a1a1a"}),n.jsx("text",{x:"50",y:"60",className:"header-text",fontSize:"32",fontWeight:"bold",children:"TUSHAR RATHOD"}),n.jsx("text",{x:"50",y:"90",className:"header-text",fontSize:"18",opacity:"0.8",children:"WEB & GAME DEVELOPER"}),n.jsx("text",{x:"50",y:"120",className:"header-text",fontSize:"12",opacity:"0.7",children:"📍 Gujarat, India • ✉️ rathodtushar142@gmail.com"}),n.jsx("rect",{x:"0",y:"140",width:"200",height:"710",fill:"#f4f4f4"}),n.jsx("text",{x:"20",y:"190",className:"section-title",fontSize:"14",children:"CONTACT"}),n.jsx("rect",{x:"20",y:"200",width:"30",height:"2",fill:"#333"}),n.jsx("text",{x:"20",y:"225",className:"body-text",fontSize:"12",children:"🌐 tusharbr.github.io"}),n.jsx("text",{x:"20",y:"300",className:"section-title",fontSize:"14",children:"SKILLS"}),n.jsx("rect",{x:"20",y:"310",width:"30",height:"2",fill:"#333"}),n.jsx("text",{x:"20",y:"340",className:"role",fontSize:"13",children:"Frontend"}),n.jsx("text",{x:"20",y:"360",className:"body-text",fontSize:"12",children:"React, TypeScript, CSS3"}),n.jsx("text",{x:"20",y:"390",className:"role",fontSize:"13",children:"Game Dev"}),n.jsx("text",{x:"20",y:"410",className:"body-text",fontSize:"12",children:"Unity (C#), Blender"}),n.jsx("text",{x:"20",y:"440",className:"role",fontSize:"13",children:"Backend"}),n.jsx("text",{x:"20",y:"460",className:"body-text",fontSize:"12",children:"Node.js, Supabase, Python"}),n.jsx("text",{x:"240",y:"190",className:"section-title",fontSize:"16",children:"EXPERIENCE"}),n.jsx("rect",{x:"240",y:"200",width:"40",height:"3",fill:"#1a1a1a"}),n.jsx("text",{x:"240",y:"240",className:"role",fontSize:"15",children:"Freelance Web Developer"}),n.jsx("text",{x:"240",y:"260",className:"dates",children:"2023 - Present"}),n.jsx("text",{x:"240",y:"285",className:"body-text",fontSize:"13",children:"• Built responsive portfolio sites using React & Vite."}),n.jsx("text",{x:"240",y:"305",className:"body-text",fontSize:"13",children:"• Integrated 3D models and interactive UI components."}),n.jsx("text",{x:"240",y:"325",className:"body-text",fontSize:"13",children:"• Optimized performance for mobile & desktop."}),n.jsx("text",{x:"240",y:"380",className:"role",fontSize:"15",children:"Unity Game Projects"}),n.jsx("text",{x:"240",y:"400",className:"dates",children:"2021 - 2023"}),n.jsx("text",{x:"240",y:"425",className:"body-text",fontSize:"13",children:"• Developed prototype mechanics for 2D/3D games."}),n.jsx("text",{x:"240",y:"445",className:"body-text",fontSize:"13",children:"• Implemented physics systems and UI logic."}),n.jsx("text",{x:"240",y:"520",className:"section-title",fontSize:"16",children:"EDUCATION"}),n.jsx("rect",{x:"240",y:"530",width:"40",height:"3",fill:"#1a1a1a"}),n.jsx("text",{x:"240",y:"570",className:"role",fontSize:"15",children:"Diploma in Information Tech."}),n.jsx("text",{x:"240",y:"590",className:"body-text",fontSize:"13",children:"L.E. College (GTU)"}),n.jsx("text",{x:"240",y:"610",className:"dates",children:"Ongoing • 5th Semester"})]}),X2=[{name:"React",icon:n.jsx(Km,{}),color:"#61dafb"},{name:"Node.js",icon:n.jsx(Ym,{}),color:"#68a063"},{name:"Firebase",icon:n.jsx(Jm,{}),color:"#ffca28"},{name:"Unity",icon:n.jsx(bp,{}),color:"#ffffff"},{name:"Terminal",icon:n.jsx(Pp,{}),color:"#00e5ff"},{name:"DevOps",icon:n.jsx(eg,{}),color:"#ff0055"}],Z2=()=>n.jsxs("section",{className:"skill-hex-section",style:{padding:"40px 20px",maxWidth:"600px",margin:"0 auto",zIndex:2,position:"relative"},children:[n.jsx("h3",{style:{fontFamily:"Barlow Condensed, sans-serif",fontSize:"1.8rem",color:"var(--accent-cyan)",textAlign:"center",marginBottom:"40px",letterSpacing:"2px"},children:"SKILL HONEYCOMB"}),n.jsx("div",{style:{display:"flex",flexWrap:"wrap",justifyContent:"center",gap:"15px",padding:"10px"},children:X2.map((a,e)=>n.jsxs(Y.div,{whileHover:{scale:1.1,rotate:5},style:{width:"100px",height:"110px",background:"rgba(15, 15, 25, 0.6)",clipPath:"polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%)",border:"1px solid rgba(0, 229, 255, 0.2)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",cursor:"pointer",transition:"all 0.3s ease",position:"relative"},children:[n.jsx("div",{style:{fontSize:"2rem",color:a.color,filter:`drop-shadow(0 0 10px ${a.color}88)`},children:a.icon}),n.jsx("span",{style:{fontSize:"0.6rem",color:"var(--text-white)",marginTop:"5px",fontWeight:"bold",letterSpacing:"1px"},children:a.name.toUpperCase()}),n.jsx("div",{style:{position:"absolute",inset:0,background:`radial-gradient(circle, ${a.color}22 0%, transparent 70%)`,opacity:0,transition:"opacity 0.3s ease"},className:"hex-hover-glow"})]},e))}),n.jsx("style",{children:`
|
|
202
|
+
.skill-hex-section div:hover .hex-hover-glow {
|
|
203
|
+
opacity: 1;
|
|
204
|
+
}
|
|
205
|
+
`})]}),q2=[{id:1,title:"Web & Game Developer",year:"2024",description:"Building immersive 3D web experiences and scalable game systems. Mastering React, Unity, and Next-Gen UI design.",image:"/assets/images/timeline-code.png"},{id:2,title:"Diploma in I.T.",year:"Ongoing",description:"Pursuing Diploma in Information Technology at L.E. College (GTU). 5th Semester completed with strong academic focus.",image:"/assets/images/timeline-edu.png"},{id:3,title:"Independent Projects",year:"2021-23",description:"Developed various frontend dashboards, portfolio sites, and experimental game prototypes using Unity and C#.",image:"/assets/images/timeline-exp.png"}],$2=()=>{const[a,e]=ca.useState(!1);return n.jsxs("article",{className:"resume active",children:[n.jsx(fa,{title:"Professional Experience & Technical CV | RATHOD TUSHAR BABUBHAI",description:"View and download the professional resume of RATHOD TUSHAR BABUBHAI (Tusharbr). Detailed skills in React, Unity, PHP, and more. Certified developer from Gujarat, India.",keywords:["RATHOD TUSHAR BABUBHAI Resume","Tushar Rathod CV Download","Web Developer Skills Gujarat","Unity Game Developer Resume India","HTML CSS JS React Skills","PHP Laravel Expert Tushar","Game Dev Expertise"]}),n.jsx(We,{direction:"scale",duration:.8,delay:.1,children:n.jsxs("section",{style:{padding:"0 20px",marginBottom:"50px",display:"flex",flexDirection:"column",alignItems:"center"},children:[n.jsxs("div",{className:"glass-card",style:{width:"100%",maxWidth:"700px",padding:"10px",paddingBottom:"40px",borderRadius:"12px",border:"1px solid var(--glass-border)",boxShadow:"0 20px 50px rgba(0,0,0,0.5)",background:"#1a1a1a",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"relative",overflow:"hidden"},children:[n.jsxs("div",{style:{width:"100%",height:"auto",display:"flex",maxHeight:a?"none":"300px",overflow:"hidden",transition:"max-height 0.5s ease-in-out",position:"relative"},children:[n.jsx(H2,{}),!a&&n.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:"150px",background:"linear-gradient(to top, #1a1a1a 10%, transparent 100%)",pointerEvents:"none",zIndex:2}})]}),n.jsx("button",{onClick:()=>e(!a),style:{marginTop:"15px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",color:"var(--accent-cyan)",padding:"8px 20px",borderRadius:"20px",cursor:"pointer",fontSize:"0.9rem",backdropFilter:"blur(5px)",zIndex:3},children:a?"Show Less ⬆":"Load More ⬇"})]}),n.jsxs("div",{style:{marginTop:"15px",color:"var(--accent-cyan)",animation:"bounce 2s infinite",display:"flex",flexDirection:"column",alignItems:"center",fontSize:"0.9rem",opacity:.8},children:[n.jsx("span",{children:"Scroll for Timeline"}),n.jsx("span",{className:"ion-icon",style:{fontSize:"20px"},children:"⬇"})]}),n.jsx("div",{style:{marginTop:"20px"},children:n.jsx(Jg,{document:n.jsx(L2,{}),fileName:"Rathod_Tushar_Resume.pdf",children:({loading:t})=>n.jsxs("button",{className:"form-btn",disabled:t,style:{minWidth:"200px"},children:[n.jsx("span",{className:"ion-icon",style:{marginRight:"10px"},children:"⬇"}),t?"Generating PDF...":"Download Resume"]})})})]})}),n.jsx(We,{direction:"up",duration:.7,delay:.1,children:n.jsx(Z2,{})}),n.jsx(We,{direction:"up",duration:.7,delay:.1,children:n.jsx("section",{className:"resume-timeline",children:n.jsx("div",{className:"timeline-section",children:q2.map(t=>n.jsxs("article",{className:"timeline-article glass-card",children:[n.jsxs("div",{className:"timeline-content",children:[n.jsx("h2",{children:t.title}),n.jsx("time",{dateTime:t.year,style:{color:"var(--accent-cyan)"},children:t.year}),n.jsx("p",{style:{color:"#ccc"},children:t.description})]}),n.jsx("img",{src:t.image,alt:t.title,className:"timeline-image"})]},t.id))})})})]})},ip=[{title:"Tusharbr",category:"Resume web",img:"/assets/images/1771471211893_screenshot_2026_02_19_084940.png",link:"https://www.tusharbr.online/"},{title:"RILVOX",category:"Web Design",link:"https://rilvox.vercel.app/",img:"/assets/images/1769177455986_screenshot_2026_01_23_194039.png"},{title:"FOB-Electronic Voting System using Blockchain micro Project -sem6 (2026)",category:"Web Design",link:"https://fob-electronic-voting-system-using.vercel.app/",img:"/assets/images/1771471268955_screenshot_2026_02_19_085052.png"},{title:"Media Toolkit Micro Project -sem6 (2026)",category:"Web Design",link:"https://sd-advanced-media-processing-toolki.vercel.app/",img:"/assets/images/1770625318954_screenshot_2026_02_09_135032.png"},{title:"Game 1 Unity engine - 2023",category:"Game",link:"https://tusharbr.vercel.app/",img:"/assets/images/1771471388247_screenshot_2026_02_18_15_57_31_33_b783bf344239542886fee7b48fa4b892.jpg"},{title:"TRX agent (Desktop agent using script base and commands base software)",category:"software",link:"https://tusharbr.vercel.app/projects",img:"/assets/images/1771471567331_screenshot_2026_02_19_085459.png"}],Q2=()=>n.jsxs("section",{className:"status-dashboard",style:{padding:"40px 20px",maxWidth:"600px",margin:"0 auto",position:"relative",zIndex:2},children:[n.jsx("h2",{style:{fontFamily:"Barlow Condensed, sans-serif",fontSize:"2rem",color:"var(--accent-cyan)",textAlign:"center",marginBottom:"30px",letterSpacing:"2px",textTransform:"uppercase"},children:"Real-Time Status"}),n.jsxs("div",{className:"glass-card",style:{padding:"25px",background:"rgba(10, 10, 15, 0.6)",border:"1px solid rgba(0, 229, 255, 0.2)",borderRadius:"16px",display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"20px"},children:[n.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",color:"var(--text-gray)",fontSize:"0.8rem"},children:[n.jsx(tg,{style:{color:"var(--accent-cyan)"}}),n.jsx("span",{children:"ACTIVE CODING HOURS"})]}),n.jsxs("span",{style:{fontFamily:"Barlow Condensed, sans-serif",fontSize:"1.8rem",color:"var(--text-white)"},children:["12.5 hrs ",n.jsx("small",{style:{fontSize:"0.8rem",color:"var(--accent-cyan)"},children:"today"})]}),n.jsx("div",{style:{width:"100%",height:"4px",background:"rgba(255,255,255,0.05)",borderRadius:"2px"},children:n.jsx(Y.div,{initial:{width:0},whileInView:{width:"75%"},transition:{duration:1.5,ease:"easeOut"},style:{height:"100%",background:"var(--accent-cyan)",borderRadius:"2px",boxShadow:"0 0 10px var(--accent-cyan)"}})})]}),n.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",color:"var(--text-gray)",fontSize:"0.8rem"},children:[n.jsx(xp,{style:{color:"var(--accent-magenta)"}}),n.jsx("span",{children:"GITHUB COMMITS"})]}),n.jsxs("span",{style:{fontFamily:"Barlow Condensed, sans-serif",fontSize:"1.8rem",color:"var(--text-white)"},children:["48 ",n.jsx("small",{style:{fontSize:"0.8rem",color:"var(--accent-magenta)"},children:"this week"})]}),n.jsx("div",{style:{width:"100%",height:"4px",background:"rgba(255,255,255,0.05)",borderRadius:"2px"},children:n.jsx(Y.div,{initial:{width:0},whileInView:{width:"60%"},transition:{duration:1.5,ease:"easeOut",delay:.2},style:{height:"100%",background:"var(--accent-magenta)",borderRadius:"2px",boxShadow:"0 0 10px var(--accent-magenta)"}})})]}),n.jsx("div",{style:{gridColumn:"span 2",marginTop:"10px"},children:n.jsxs("div",{style:{background:"rgba(0, 229, 255, 0.05)",border:"1px solid rgba(0, 229, 255, 0.1)",padding:"15px",borderRadius:"12px",display:"flex",alignItems:"center",gap:"15px"},children:[n.jsx("div",{className:"status-pulse",style:{width:"10px",height:"10px",background:"var(--accent-cyan)",borderRadius:"50%",boxShadow:"0 0 10px var(--accent-cyan)"}}),n.jsxs("div",{children:[n.jsx("span",{style:{display:"block",fontSize:"0.7rem",color:"var(--text-gray)",letterSpacing:"1px"},children:"CURRENT FOCUS"}),n.jsx("span",{style:{fontFamily:"Barlow, sans-serif",fontSize:"1rem",color:"var(--accent-cyan)",fontWeight:600},children:"Crafting Cybernetic UI Components"})]}),n.jsx(Pp,{style:{marginLeft:"auto",opacity:.3,fontSize:"1.5rem"}})]})})]}),n.jsx("style",{children:`
|
|
206
|
+
.status-pulse {
|
|
207
|
+
animation: pulse 1.5s infinite;
|
|
208
|
+
}
|
|
209
|
+
@keyframes pulse {
|
|
210
|
+
0% { transform: scale(1); opacity: 1; }
|
|
211
|
+
50% { transform: scale(1.5); opacity: 0.5; }
|
|
212
|
+
100% { transform: scale(1); opacity: 1; }
|
|
213
|
+
}
|
|
214
|
+
`})]}),K2=()=>{const[a,e]=T.useState("All"),[t,r]=T.useState(!1),o=Array.isArray(ip)?ip:[],s=["All",...Array.from(new Set(o.map(p=>p.category)))],c=a==="All"?o:o.filter(p=>p.category===a),d=o.map(p=>({"@context":"https://schema.org","@type":"ImageObject",contentUrl:p.img.startsWith("http")?p.img:`https://www.tusharbr.online${p.img}`,description:p.title,name:p.title,author:"Tushar Rathod"}));return n.jsxs("article",{className:"projects active",children:[n.jsx(fa,{title:"Portfolio of Web & Game Projects | Tusharbr",description:"Showcase of professional web and game development projects by RATHOD TUSHAR BABUBHAI. Featuring Unity 3D games, Sketchfab models, and high-performance React applications.",keywords:["Tushar Rathod Projects","Tusharbr Portfolio Showcase","Unity Game Projects Tushar","React.js Applications Gujarat","3D Web Experiences Tusharbr","Full Stack Developer Projects","Code With Tushar Projects","Sketchfab 3D Models Tushar"],schema:[{"@context":"https://schema.org","@type":"CollectionPage",name:"RATHOD TUSHAR BABUBHAI - Project Portfolio",url:"https://www.tusharbr.online/projects",description:"A collection of web development and game design projects created by Tushar Rathod."},...d]}),n.jsx(We,{direction:"down",duration:.6,children:n.jsxs("header",{className:"section-header",children:[n.jsx("h2",{className:"section-title",children:"Projects"}),n.jsx("div",{className:"section-icon",children:n.jsx(rg,{})})]})}),n.jsxs("section",{className:"projects-list",children:[n.jsx("ul",{className:"desktop-only filter-container",children:s.map(p=>n.jsx("li",{children:n.jsx("button",{onClick:()=>e(p),className:`filter-btn ${a===p?"active":""}`,children:p})},p))}),n.jsxs("div",{className:"mobile-only",style:{marginBottom:"30px",position:"relative"},children:[n.jsxs("button",{className:"glass-card",style:{width:"100%",padding:"12px 20px",display:"flex",justifyContent:"space-between",alignItems:"center",color:"var(--text-gray)"},onClick:()=>r(!t),children:[n.jsx("div",{style:{textTransform:"capitalize"},children:a==="All"?"Select Category":a}),n.jsx("div",{children:n.jsx(ag,{})})]}),t&&n.jsx("ul",{className:"glass-card",style:{position:"absolute",top:"50px",left:0,right:0,zIndex:10,padding:"10px",listStyle:"none"},children:s.map(p=>n.jsx("li",{style:{padding:"8px 10px"},children:n.jsx("button",{style:{background:"none",border:"none",color:"var(--text-gray)",width:"100%",textAlign:"left",cursor:"pointer",textTransform:"capitalize"},onClick:()=>{e(p),r(!1)},children:p})},p))})]}),c.length===0?n.jsxs("div",{className:"glass-card",style:{width:"100%",minHeight:"300px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:"var(--text-gray)",padding:"40px"},children:[n.jsx("div",{style:{fontSize:"4rem",marginBottom:"20px",opacity:.5,animation:"pulse 3s infinite ease-in-out"},children:n.jsx(og,{})}),n.jsx("h3",{style:{fontSize:"1.2rem",fontWeight:500,marginBottom:"10px"},children:"No Projects Yet"}),n.jsx("p",{style:{opacity:.7,textAlign:"center",maxWidth:"300px"},children:"Use the Admin Tool to add your first project!"})]}):n.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:"20px"},children:c.map((p,h)=>n.jsx(We,{direction:"up",duration:.5,delay:h*.1,triggerOnce:!0,children:n.jsx("div",{className:"project-card-premium",children:n.jsxs("a",{href:p.link||"#",target:"_blank",rel:"noopener noreferrer",style:{display:"block",textDecoration:"none",height:"100%"},children:[n.jsxs("div",{className:"project-image-box",children:[n.jsx("div",{className:"scanline"}),n.jsx("div",{style:{position:"absolute",inset:0,background:"rgba(0,229,255,0.1)",display:"flex",alignItems:"center",justifyContent:"center",opacity:0,transition:"opacity 0.3s",zIndex:10},className:"hover-overlay",children:n.jsx("div",{style:{background:"var(--bg-card)",padding:"10px",borderRadius:"12px",fontSize:"1.5rem",color:"var(--accent-cyan)"},children:n.jsx(ig,{})})}),n.jsx("img",{src:p.img,alt:p.title,loading:"lazy"})]}),n.jsxs("div",{className:"project-details",children:[n.jsx("h3",{className:"project-title-hud",children:p.title}),n.jsx("div",{className:"project-category-badge",children:p.category})]})]})})},h))})]}),n.jsx(We,{direction:"up",duration:.7,delay:.1,children:n.jsx(Q2,{})})]})},Y2=[{id:"1770915658116",img:"/assets/status/1770915658105_break_free___shot_on__sonyalpha.._cinematography__filmmakers__cinematictravel__cinematicreels_ci.mp4",timestamp:"2026-02-12T17:00:58.116Z",caption:"</life>"}],as=[],J2="/assets/avatar-C7pVkh2P.png",e1=({items:a,initialIndex:e,onClose:t})=>{const[r,o]=T.useState(e),[i,s]=T.useState(0),[c,d]=T.useState(!1),p=T.useRef(null),h=T.useRef(null),m=a[r];T.useEffect(()=>{if(m){let y=[];try{y=JSON.parse(localStorage.getItem("viewed_statuses")||"[]")}catch{y=[]}if(!y.includes(m.id)){const A=[...y,m.id];localStorage.setItem("viewed_statuses",JSON.stringify(A)),window.dispatchEvent(new Event("storage"))}}},[m]);const f=()=>{r<a.length-1?(o(y=>y+1),s(0)):t()},v=()=>{r>0&&o(y=>y-1),s(0)};if(T.useEffect(()=>m?(s(0),h.current&&clearInterval(h.current),m.img.toLowerCase().endsWith(".mp4")?s(0):h.current=setInterval(()=>{s(E=>E>=100?(h.current&&clearInterval(h.current),f(),100):E+1)},50),()=>{h.current&&clearInterval(h.current)}):void 0,[r]),!m)return null;const P=n.jsxs("div",{className:"status-overlay",onClick:t,style:{position:"fixed",inset:0,zIndex:1e4,background:"rgba(0, 0, 0, 0.85)",backdropFilter:"blur(15px)",WebkitBackdropFilter:"blur(15px)",display:"flex",alignItems:"center",justifyContent:"center",fontFamily:"'Inter', sans-serif"},children:[n.jsxs("div",{className:"status-modal",onClick:y=>y.stopPropagation(),style:{position:"relative",background:"rgba(10, 10, 15, 0.65)",backdropFilter:"blur(30px)",WebkitBackdropFilter:"blur(30px)",border:"1px solid rgba(255, 255, 255, 0.1)",overflow:"hidden",display:"flex",flexDirection:"column",boxShadow:"0 20px 50px rgba(0,0,0,0.5)",animation:"scaleIn 0.3s ease-out forwards"},children:[n.jsxs("div",{style:{position:"absolute",top:0,left:0,right:0,background:"linear-gradient(to bottom, rgba(0,0,0,0.8), transparent)",padding:"15px 15px 40px",zIndex:20},children:[n.jsx("div",{style:{display:"flex",gap:"4px",marginBottom:"12px"},children:a.map((y,A)=>n.jsx("div",{style:{flex:1,height:"2px",background:"rgba(255,255,255,0.3)",borderRadius:"2px",overflow:"hidden"},children:n.jsx("div",{style:{height:"100%",background:"white",width:A<r?"100%":A===r?`${i}%`:"0%",transition:A===r?"width 0.05s linear":"none"}})},A))}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[n.jsx("button",{onClick:t,style:{background:"none",border:"none",color:"white",display:"flex",cursor:"pointer"},children:n.jsx(sp,{size:26})}),n.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"50%",background:"#333",overflow:"hidden",border:"1px solid rgba(255,255,255,0.2)"},children:n.jsx("img",{src:J2,alt:"Profile",style:{width:"100%",height:"100%",objectFit:"cover"}})}),n.jsxs("div",{style:{flex:1},children:[n.jsx("div",{style:{fontSize:"0.95rem",fontWeight:600,color:"white"},children:"Tusharbr"}),n.jsx("div",{style:{fontSize:"0.75rem",color:"rgba(255,255,255,0.7)"},children:new Date(m.timestamp).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0})})]}),n.jsx("button",{onClick:()=>d(!c),style:{background:"none",border:"none",color:"white",cursor:"pointer"},children:c?n.jsx(ng,{size:26}):n.jsx(sg,{size:26})})]})]}),n.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",position:"relative",background:"#000"},children:[m.img.toLowerCase().endsWith(".mp4")?n.jsx("video",{ref:p,src:m.img,autoPlay:!0,muted:c,playsInline:!0,style:{width:"100%",height:"100%",objectFit:"contain"},onTimeUpdate:y=>{const A=y.currentTarget;A.duration&&s(A.currentTime/A.duration*100)},onEnded:f}):n.jsx("img",{src:m.img,style:{width:"100%",height:"100%",objectFit:"contain"},alt:"Status Content"}),n.jsx("div",{style:{position:"absolute",top:0,bottom:0,left:0,width:"30%",zIndex:10},onClick:y=>{y.stopPropagation(),v()}}),n.jsx("div",{style:{position:"absolute",top:0,bottom:0,right:0,width:"70%",zIndex:10},onClick:y=>{y.stopPropagation(),f()}})]}),m.caption&&n.jsx("div",{style:{position:"absolute",bottom:"30px",left:0,right:0,textAlign:"center",padding:"0 20px",zIndex:20,textShadow:"0 1px 2px rgba(0,0,0,0.8)"},children:n.jsx("p",{style:{fontSize:"1rem",fontWeight:500,color:"white"},children:m.caption})})]}),n.jsx("style",{children:`
|
|
215
|
+
@keyframes scaleIn {
|
|
216
|
+
from { transform: scale(0.95); opacity: 0; }
|
|
217
|
+
to { transform: scale(1); opacity: 1; }
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Desktop Styles */
|
|
221
|
+
@media (min-width: 768px) {
|
|
222
|
+
.status-modal {
|
|
223
|
+
width: 400px;
|
|
224
|
+
height: 85vh;
|
|
225
|
+
max-height: 850px;
|
|
226
|
+
border-radius: 20px;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/* Mobile Styles */
|
|
230
|
+
@media (max-width: 767px) {
|
|
231
|
+
.status-modal {
|
|
232
|
+
width: 100%;
|
|
233
|
+
height: 100%;
|
|
234
|
+
border-radius: 0;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
`})]});return sy.createPortal(P,document.body)},t1=()=>{const a=Y2,[e,t]=T.useState(!1),[r,o]=T.useState(!1),i=()=>{let W=[];try{W=JSON.parse(localStorage.getItem("viewed_statuses")||"[]")}catch{W=[]}if(a.length>0){const H=a[a.length-1].id;o(W.includes(H))}};T.useEffect(()=>{i();const W=()=>i();return window.addEventListener("storage",W),()=>window.removeEventListener("storage",W)},[a]);const s=()=>t(!0),c=()=>{t(!1),i()},[d,p]=T.useState(null),[h,m]=T.useState(0),[f,v]=T.useState(!1),[P,y]=T.useState(0),[A,V]=T.useState(!1),[I,E]=T.useState([]),[w,k]=T.useState("");T.useEffect(()=>{const H=new URLSearchParams(window.location.search).get("post");if(H){const ee=as.find(ne=>ne.id==H);ee&&p(ee)}},[]),T.useEffect(()=>{if(d){const W=`${window.location.pathname}?post=${d.id}`;window.history.pushState({path:W},"",W)}else{const W=window.location.pathname;window.location.search.includes("post=")&&window.history.pushState({path:W},"",W)}},[d]);const U=async()=>{if(!d)return;const W=`${window.location.origin}${window.location.pathname}?post=${d.id}`;if(navigator.share)try{await navigator.share({title:"Check out this post!",text:d.caption||"Shared from Tushar's Portfolio",url:W})}catch{console.log("Share canceled")}else try{await navigator.clipboard.writeText(W),alert("Link copied to clipboard!")}catch(H){console.error("Failed to copy",H)}};T.useEffect(()=>{if(d){m(0),y(d.likes||0);const W=JSON.parse(localStorage.getItem("liked_posts")||"[]");v(W.includes(d.id)),E(d.comments||[])}},[d]);const D=W=>{W.stopPropagation(),d&&d.type==="carousel"&&h<d.urls.length-1&&m(H=>H+1)},S=W=>{W.stopPropagation(),h>0&&m(H=>H-1)},x=async W=>{if(W.stopPropagation(),!d)return;const H=!f;v(H),y(ee=>H?ee+1:ee-1);try{const ne=await(await fetch("http://localhost:3003/like-post",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:d.id})})).json();if(ne.success){y(ne.likes),v(ne.liked);const ye=JSON.parse(localStorage.getItem("liked_posts")||"[]");if(ne.liked)ye.includes(d.id)||ye.push(d.id);else{const Ce=ye.indexOf(d.id);Ce>-1&&ye.splice(Ce,1)}localStorage.setItem("liked_posts",JSON.stringify(ye))}}catch(ee){console.error("Like failed",ee),v(!H),y(ne=>H?ne-1:ne+1)}},C=async W=>{if(W.preventDefault(),!(!w.trim()||!d))try{const ee=await(await fetch("http://localhost:3003/comment-post",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({postId:d.id,text:w,action:"add"})})).json();ee.success&&(E(ee.comments),k(""))}catch(H){console.error("Comment failed",H)}},_=async W=>{if(confirm("Delete this comment?"))try{const ee=await(await fetch("http://localhost:3003/comment-post",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({postId:d.id,commentId:W,action:"delete"})})).json();ee.success?E(ee.comments):alert(ee.error||"Failed to delete")}catch(H){console.error("Delete comment failed",H)}},R=W=>{if(!W)return"UNKNOWN";let H=0;for(let ee=0;ee<W.length;ee++)H=(H<<5)-H+W.charCodeAt(ee),H|=0;return"ID-"+Math.abs(H).toString(16).toUpperCase().slice(0,6)},j=()=>d?Go.createPortal(n.jsxs("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",zIndex:99999,background:"rgba(0,0,0,0.95)",display:"flex",justifyContent:"center",alignItems:"center",backdropFilter:"blur(10px)"},onClick:()=>{p(null),V(!1)},children:[n.jsx("button",{onClick:()=>{p(null),V(!1)},style:{position:"absolute",top:"20px",right:"20px",background:"none",border:"none",color:"white",fontSize:"30px",cursor:"pointer",zIndex:1e5},children:n.jsx(Dp,{})}),n.jsxs("div",{onClick:W=>W.stopPropagation(),className:"glass-card status-modal-content",style:{width:"90%",maxWidth:"500px",maxHeight:"90vh",display:"flex",flexDirection:"column",background:"#0a0a0a",overflow:"hidden",borderRadius:"12px",border:"1px solid #333",position:"relative"},children:[n.jsxs("div",{style:{width:"100%",flex:1,background:"#000",display:"flex",alignItems:"center",justifyContent:"center",position:"relative",minHeight:"300px"},children:[d.type==="image"&&n.jsx("img",{src:d.url,style:{width:"100%",height:"100%",maxHeight:"60vh",objectFit:"contain"},alt:"Post"}),d.type==="video"&&n.jsx("video",{src:d.url,controls:!0,autoPlay:!0,muted:!0,loop:!0,style:{width:"100%",height:"100%",maxHeight:"60vh",objectFit:"contain"}}),d.type==="carousel"&&d.urls&&n.jsxs(n.Fragment,{children:[n.jsx("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center"},children:n.jsx("img",{src:d.urls[h],style:{width:"100%",height:"100%",maxHeight:"60vh",objectFit:"contain",transition:"opacity 0.3s"},alt:`Slide ${h}`})}),h>0&&n.jsx("button",{onClick:S,style:{position:"absolute",left:"10px",top:"50%",transform:"translateY(-50%)",background:"rgba(255,255,255,0.8)",border:"none",borderRadius:"50%",width:"30px",height:"30px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"black",zIndex:10},children:"<"}),h<d.urls.length-1&&n.jsx("button",{onClick:D,style:{position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)",background:"rgba(255,255,255,0.8)",border:"none",borderRadius:"50%",width:"30px",height:"30px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"black",zIndex:10},children:">"}),n.jsx("div",{style:{position:"absolute",bottom:"15px",display:"flex",gap:"6px",zIndex:10},children:d.urls.map((W,H)=>n.jsx("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:H===h?"#0095f6":"rgba(255,255,255,0.5)",transition:"background 0.3s"}},H))})]})]}),n.jsxs("div",{style:{padding:"15px",background:"#111",borderTop:"1px solid #222",zIndex:20},children:[n.jsx("div",{style:{display:"flex",justifyContent:"flex-start",marginBottom:"10px"},children:n.jsxs("div",{style:{display:"flex",gap:"15px"},children:[n.jsx(pg,{size:26,color:f?"#ff3040":"white",style:{cursor:"pointer",transition:"transform 0.1s"},onClick:x,className:f?"liked-anim":""}),n.jsx(hg,{size:26,style:{transform:"rotateY(180deg)",cursor:"pointer"},onClick:()=>V(!A)}),n.jsx(Ap,{size:26,style:{cursor:"pointer"},onClick:U})]})}),n.jsxs("div",{style:{fontWeight:600,fontSize:"0.95rem",marginBottom:"5px"},children:[P," likes"]}),n.jsxs("div",{style:{fontSize:"0.9rem",color:"#eee"},children:[n.jsx("span",{style:{fontWeight:600,marginRight:"8px"},children:"tusharbr"}),d.caption]}),I.length>0&&n.jsxs("div",{style:{color:"#888",fontSize:"0.85rem",marginTop:"8px",cursor:"pointer"},onClick:()=>V(!0),children:["View all ",I.length," comments"]}),A&&n.jsx("div",{onClick:()=>V(!1),style:{position:"absolute",top:0,left:0,width:"100%",height:"40%",zIndex:25,background:"transparent"}}),n.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:A?"60%":"0",background:"#1a1a1a",borderTopLeftRadius:"16px",borderTopRightRadius:"16px",transition:"height 0.3s cubic-bezier(0.4, 0, 0.2, 1)",zIndex:30,overflow:"hidden",display:"flex",flexDirection:"column",borderTop:"1px solid #333"},children:[n.jsx("div",{style:{width:"100%",padding:"10px",display:"flex",justifyContent:"center",cursor:"pointer"},onClick:()=>V(!1),children:n.jsx("div",{style:{width:"40px",height:"4px",background:"#444",borderRadius:"2px"}})}),n.jsx("div",{style:{padding:"0 15px 15px",borderBottom:"1px solid #333",textAlign:"center",fontWeight:600},children:"Comments"}),n.jsx("div",{style:{flex:1,overflowY:"auto",padding:"15px"},children:I.length===0?n.jsx("div",{style:{textAlign:"center",color:"#666",marginTop:"20px"},children:"No comments yet."}):I.map(W=>n.jsxs("div",{style:{display:"flex",gap:"10px",marginBottom:"15px"},children:[n.jsx("img",{src:"https://cdn-icons-png.flaticon.com/512/149/149071.png",alt:"User",style:{width:"32px",height:"32px",borderRadius:"50%",objectFit:"cover",flexShrink:0}}),n.jsxs("div",{style:{flex:1},children:[n.jsxs("div",{style:{fontSize:"0.9rem",wordBreak:"break-word"},children:[n.jsx("span",{style:{fontWeight:600,marginRight:"6px",color:"#ccc"},children:R(W.ip)}),n.jsx("span",{style:{color:"#eee"},children:W.text})]}),n.jsxs("div",{style:{display:"flex",gap:"15px",marginTop:"4px",fontSize:"0.75rem",color:"#888"},children:[n.jsx("span",{children:new Date(W.timestamp).toLocaleDateString(void 0,{month:"short",day:"numeric"})}),n.jsx("span",{style:{cursor:"pointer",color:"#ff4444"},onClick:()=>_(W.id),children:"Delete"})]})]})]},W.id))}),n.jsxs("form",{onSubmit:C,style:{padding:"15px",borderTop:"1px solid #333",display:"flex",alignItems:"center",gap:"10px",background:"#111"},children:[n.jsx("img",{src:"https://cdn-icons-png.flaticon.com/512/149/149071.png",style:{width:"32px",height:"32px",borderRadius:"50%",objectFit:"cover"},alt:"CurrentUser"}),n.jsx("input",{type:"text",placeholder:"Add a comment...",value:w,onChange:W=>k(W.target.value),style:{flex:1,background:"none",border:"none",color:"white",outline:"none",fontSize:"0.95rem"}}),w.trim()&&n.jsx("button",{type:"submit",style:{background:"none",border:"none",color:"#0095f6",fontWeight:600,cursor:"pointer"},children:"Post"})]})]})]})]})]}),document.body):null;return n.jsxs("article",{className:"status-page active",style:{minHeight:"100%",paddingBottom:"90px",background:"var(--bg-color)"},children:[n.jsx(We,{direction:"down",duration:.6,children:n.jsx("header",{style:{display:"flex",alignItems:"center",padding:"25px 20px 15px",justifyContent:"center"},children:n.jsx("h1",{style:{fontSize:"1.2rem",fontWeight:600,letterSpacing:"0.5px",color:"white"},children:"Status"})})}),n.jsx(We,{direction:"scale",duration:.8,delay:.1,children:n.jsx("div",{style:{padding:"10px 20px",marginBottom:"20px"},children:n.jsxs("div",{onClick:s,style:{background:"var(--glass-bg)",backdropFilter:"blur(25px)",WebkitBackdropFilter:"blur(25px)",padding:"14px 16px",borderRadius:"16px",display:"flex",alignItems:"center",gap:"16px",cursor:"pointer",border:"1px solid var(--glass-border)",transition:"background 0.2s",boxShadow:"0 4px 30px rgba(0, 0, 0, 0.1)"},children:[n.jsx("div",{style:{position:"relative",width:"60px",height:"60px",borderRadius:"50%",padding:"2px",background:r?"#555":"linear-gradient(45deg, #00C6FF, #0072FF)"},children:n.jsx("div",{style:{width:"100%",height:"100%",borderRadius:"50%",background:"#222",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",border:"3px solid #000"},children:a[a.length-1]?.img.endsWith(".mp4")?n.jsx("video",{src:a[a.length-1]?.img,style:{width:"100%",height:"100%",objectFit:"cover"},muted:!0,loop:!0,autoPlay:!0,playsInline:!0}):n.jsx("img",{src:a[a.length-1]?.img,style:{width:"100%",height:"100%",objectFit:"cover"},alt:"Status"})})}),n.jsxs("div",{style:{flex:1},children:[n.jsx("h3",{style:{margin:0,fontSize:"1.05rem",fontWeight:600,color:"white"},children:"My Status"}),a.length>0&&n.jsx("p",{style:{margin:"4px 0 0",fontSize:"0.9rem",color:"#888"},children:new Date(a[a.length-1].timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!0})})]}),n.jsx("div",{style:{color:"#007AFF",padding:"10px"},children:n.jsx(lg,{size:22})})]})})}),n.jsx("div",{style:{borderTop:"1px solid rgba(255,255,255,0.1)",margin:"0 20px 20px"}}),n.jsx("div",{style:{padding:"0 20px 10px",color:"#ccc",fontSize:"0.9rem",fontWeight:600},children:"Posts"}),as.length===0?n.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"40px 20px",color:"#666",textAlign:"center"},children:[n.jsx("div",{style:{fontSize:"2rem",marginBottom:"10px",opacity:.5},children:"📷"}),n.jsx("p",{children:"No posts yet"})]}):n.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"2px",paddingBottom:"20px"},children:as.map(W=>n.jsxs("div",{onClick:()=>p(W),style:{aspectRatio:"1/1",position:"relative",cursor:"pointer",overflow:"hidden",background:"#111"},children:[n.jsx("img",{src:W.type==="carousel"&&W.urls?W.urls[0]:W.thumbnail||W.url,alt:"Post",style:{width:"100%",height:"100%",objectFit:"cover"}}),n.jsxs("div",{style:{position:"absolute",top:"5px",right:"5px",color:"white",filter:"drop-shadow(0 0 3px rgba(0,0,0,0.5))"},children:[W.type==="carousel"&&n.jsx(cg,{size:18}),W.type==="video"&&n.jsx(dg,{size:18})]})]},W.id))}),e&&n.jsx(e1,{items:a,initialIndex:0,onClose:c}),j()]})},r1=()=>{const[a,e]=T.useState(""),[t,r]=T.useState(""),[o,i]=T.useState(""),[s,c]=T.useState(0),[d,p]=T.useState(0),[h,m]=T.useState(""),[f,v]=T.useState(!1),[P,y]=T.useState("idle"),[A,V]=T.useState(""),I=async E=>{if(E.preventDefault(),h){console.warn("Spam detected via honeypot."),y("success"),V("Message sent successfully!");return}if(!a.trim()||!t.trim()||!o.trim()){y("error"),V("Please fill in all fields.");return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)){y("error"),V("Please enter a valid email address.");return}v(!0),y("idle");const k=U=>U.replace(/[<>]/g,"");try{const U=Ft(Bt,"contact_submissions"),D={fullname:k(a).trim(),email:k(t).trim(),message:k(o).trim(),rating:s||0,timestamp:Date.now()};await Zg(U,D),y("success"),V("Message stored successfully in secure vault!"),e(""),r(""),i(""),c(0),m("")}catch(U){console.error("Submission Failure Details:",U),y("error"),U.code==="PERMISSION_DENIED"?V("Security Rules Error. Review Firebase Console."):V("Network error. Please check your connection.")}finally{v(!1),setTimeout(()=>y("idle"),5e3)}};return n.jsxs("article",{className:"contact active",children:[n.jsx(fa,{title:"Contact",description:"Get in touch with Tushar Rathod (Tusharbr). Hire a Web or Game Developer from Gujarat, India. Contact for projects and collaborations.",keywords:["Contact Tushar Rathod","Hire Web Developer","Freelance Game Developer","Gujarat Developer Contact","Tusharbr Email"]}),n.jsx(We,{direction:"down",duration:.6,children:n.jsxs("header",{className:"section-header",children:[n.jsx("h2",{className:"section-title",children:"Contact"}),n.jsx("div",{className:"section-icon",children:n.jsx($i,{})})]})}),n.jsx(We,{direction:"up",duration:.7,delay:.1,children:n.jsxs("section",{className:"contact-form glass-card",style:{padding:"30px",position:"relative",marginBottom:"30px"},children:[n.jsx("h3",{className:"h3",style:{marginBottom:"20px"},children:"Contact Form"}),P!=="idle"&&n.jsxs("div",{style:{position:"absolute",bottom:"20px",left:"50%",transform:"translateX(-50%)",padding:"12px 24px",borderRadius:"50px",background:P==="success"?"rgba(0, 255, 0, 0.15)":"rgba(255, 0, 0, 0.15)",border:`1px solid ${P==="success"?"#4caf50":"#f44336"}`,color:P==="success"?"#4caf50":"#f44336",backdropFilter:"blur(10px)",zIndex:100,boxShadow:"0 5px 15px rgba(0,0,0,0.3)",whiteSpace:"nowrap",fontWeight:"bold",fontSize:"0.9rem",display:"flex",alignItems:"center",gap:"8px"},children:[P==="success"&&n.jsx(kc,{size:18}),A]}),P==="success"?n.jsxs("div",{style:{padding:"60px 20px",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",minHeight:"400px",justifyContent:"center"},children:[n.jsx(Y.div,{initial:{scale:0},animate:{scale:1},transition:{type:"spring",stiffness:200,damping:10},children:n.jsx(kc,{size:80,color:"#00e5ff"})}),n.jsx("h3",{style:{fontSize:"1.8rem",color:"#fff",margin:0},children:"Completed Submitted!"}),n.jsx("p",{style:{color:"#aaa",maxWidth:"300px"},children:"Your message has been securely transmitted to the admin vault."}),n.jsx("button",{onClick:()=>y("idle"),style:{marginTop:"20px",padding:"10px 30px",background:"transparent",border:"1px solid #00e5ff",color:"#00e5ff",borderRadius:"50px",cursor:"pointer",transition:"0.3s"},onMouseEnter:E=>E.currentTarget.style.background="rgba(0,229,255,0.1)",onMouseLeave:E=>E.currentTarget.style.background="transparent",children:"Send Another"})]}):n.jsxs("form",{onSubmit:I,className:"form",children:[n.jsx("div",{style:{display:"none"},"aria-hidden":"true",children:n.jsx("input",{type:"text",name:"verify_id",value:h,onChange:E=>m(E.target.value),tabIndex:-1,autoComplete:"off"})}),n.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"20px",marginBottom:"20px"},children:[n.jsx("input",{type:"text",name:"fullname",className:"form-input",placeholder:"Full name",required:!0,value:a,onChange:E=>e(E.target.value),style:{background:"var(--bg-dark)",border:"1px solid var(--glass-border)",padding:"15px",borderRadius:"12px",color:"white",width:"100%"}}),n.jsx("input",{type:"email",name:"email",className:"form-input",placeholder:"Email address",required:!0,value:t,onChange:E=>r(E.target.value),style:{background:"var(--bg-dark)",border:"1px solid var(--glass-border)",padding:"15px",borderRadius:"12px",color:"white",width:"100%"}})]}),n.jsx("textarea",{name:"message",className:"form-input",placeholder:"Your Message",required:!0,value:o,onChange:E=>i(E.target.value),style:{background:"var(--bg-dark)",border:"1px solid var(--glass-border)",padding:"15px",borderRadius:"12px",color:"white",width:"100%",minHeight:"150px",marginBottom:"20px"}}),n.jsxs("div",{style:{marginBottom:"25px",display:"flex",alignItems:"center",gap:"15px"},children:[n.jsx("span",{style:{color:"#888",fontSize:"0.9rem"},children:"Rate your experience:"}),n.jsx("div",{style:{display:"flex",gap:"5px"},children:[1,2,3,4,5].map(E=>n.jsx("button",{type:"button",onClick:()=>c(E),onMouseEnter:()=>p(E),onMouseLeave:()=>p(0),style:{background:"none",border:"none",cursor:"pointer",padding:0,transition:"0.2s"},children:(d||s)>=E?n.jsx(ug,{size:24,color:"#ffbe33"}):n.jsx(mg,{size:24,color:"#555"})},E))})]}),n.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:n.jsxs("button",{className:"btn-primary",type:"submit",disabled:f,style:{opacity:f?.7:1,cursor:f?"wait":"pointer"},children:[n.jsx("span",{children:f?"Sending...":"Send Message"}),n.jsx(Ap,{})]})})]})]})}),n.jsx(We,{direction:"up",duration:.7,delay:.2,children:n.jsx("section",{className:"mapbox",children:n.jsx("div",{className:"mapouter",style:{position:"relative",textAlign:"right",width:"100%",height:"450px"},children:n.jsx("div",{className:"gmap_canvas",style:{overflow:"hidden",background:"none",width:"100%",height:"450px",borderRadius:"20px"},children:n.jsx("iframe",{title:"Gujarat Map",width:"100%",height:"450px",style:{border:0},allowFullScreen:!0,loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",src:"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3777131.528254848!2d69.0435943!3d22.3850785!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3959051f5f0ef795%3A0x861bd887ed54522e!2sGujarat!5e1!3m2!1sen!2sin"})})})})})]})},a1=()=>{const a=[{name:"GitHub",username:"@tushar-br",url:"https://github.com/tushar-br",icon:n.jsx(Qi,{}),color:"#333",banner:"rgba(255, 255, 255, 0.05)",accent:"#fff",description:"Check out my repositories, open-source contributions, and coding activity."},{name:"HackerRank",username:"@rathodtushar1442",url:"https://www.hackerrank.com/profile/rathodtushar1442",icon:n.jsx(en,{}),color:"#2ec866",banner:"rgba(46, 200, 102, 0.1)",accent:"#2ec866",description:"Solving complex problems and improving my competitive programming skills on HackerRank."},{name:"LinkedIn",username:"Tushar Rathod",url:"https://www.linkedin.com/in/tushar-br/",icon:n.jsx(Ki,{}),color:"#0077b5",banner:"rgba(0, 119, 181, 0.1)",accent:"#0077b5",description:"Connect with me professionally and see my work experience and networking."},{name:"Instagram",username:"@tushar__br",url:"https://www.instagram.com/tushar__br/",icon:n.jsx(Yi,{}),color:"#e4405f",banner:"rgba(228, 64, 95, 0.1)",accent:"#e4405f",description:"Follow me for life updates, creative designs, and behind-the-scenes content."}];return n.jsxs("article",{className:"socials-page active",children:[n.jsx(fa,{title:"Tushar Rathod - Social Media Handles | Tusharbr",description:"Connect with Tushar Rathod (Tusharbr) on GitHub, LinkedIn, and Instagram. Official links to my development repositories, professional profile, and social life.",keywords:["Tushar Rathod Socials","Tusharbr GitHub","Tushar Rathod LinkedIn","Tushar Rathod Instagram","Tushar Rathod Social Handles","Tusharbr Links","Web Developer India"],schema:{"@context":"https://schema.org","@type":"Person",name:"Tushar Rathod",url:"https://www.tusharbr.online/socials",sameAs:["https://github.com/tushar-br","https://www.hackerrank.com/profile/rathodtushar1442","https://www.linkedin.com/in/tushar-br/","https://www.instagram.com/tushar__br/"]}}),n.jsx(We,{direction:"down",duration:.6,children:n.jsxs("header",{className:"section-header",children:[n.jsx("h2",{className:"section-title",children:"Social Handles"}),n.jsx("div",{className:"section-icon",children:n.jsx(Ji,{})})]})}),n.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"25px",marginTop:"30px"},children:a.map((e,t)=>n.jsx(We,{direction:"up",duration:.6,delay:t*.1,children:n.jsxs(Y.div,{whileHover:{translateY:-10},className:"glass-card",style:{padding:"0",overflow:"hidden",border:"1px solid rgba(255, 255, 255, 0.05)",background:"rgba(10, 10, 20, 0.6)",position:"relative"},children:[n.jsx("div",{style:{height:"80px",width:"100%",background:e.banner,borderBottom:"1px solid rgba(255, 255, 255, 0.05)",position:"relative"},children:n.jsx("div",{style:{position:"absolute",bottom:"-25px",left:"25px",width:"50px",height:"50px",borderRadius:"12px",background:"var(--bg-dark)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"2rem",color:e.accent,border:`1px solid ${e.accent}44`,boxShadow:`0 0 15px ${e.accent}22`},children:e.icon})}),n.jsxs("div",{style:{padding:"40px 25px 30px"},children:[n.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[n.jsxs("div",{children:[n.jsx("h3",{style:{margin:0,fontSize:"1.4rem",color:"#fff"},children:e.name}),n.jsx("p",{style:{margin:"5px 0 15px",color:"var(--accent-cyan)",fontSize:"0.9rem",fontFamily:"Cutive Mono, monospace"},children:e.username})]}),n.jsx("button",{onClick:()=>window.open(e.url,"_blank"),style:{background:"rgba(255, 255, 255, 0.05)",border:"1px solid rgba(255, 255, 255, 0.1)",color:"#fff",padding:"8px",borderRadius:"8px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},children:n.jsx(Sp,{size:18})})]}),n.jsx("p",{style:{color:"var(--text-gray)",fontSize:"0.95rem",lineHeight:"1.6",marginBottom:"25px"},children:e.description}),n.jsxs("button",{onClick:()=>window.open(e.url,"_blank"),className:"btn-primary",style:{width:"100%",justifyContent:"center",background:`linear-gradient(135deg, ${e.accent}88, ${e.accent})`,boxShadow:`0 5px 15px ${e.accent}33`},children:["Follow ",e.name]})]}),n.jsx("div",{style:{position:"absolute",top:"10px",right:"10px",width:"20px",height:"2px",background:e.accent,opacity:.3}}),n.jsx("div",{style:{position:"absolute",top:"10px",right:"10px",width:"2px",height:"10px",background:e.accent,opacity:.3}})]})},t))}),n.jsx(We,{direction:"up",duration:.7,delay:.4,children:n.jsx("div",{className:"glass-card",style:{marginTop:"50px",padding:"30px",textAlign:"center",border:"1px dashed var(--accent-cyan)",background:"rgba(0, 229, 255, 0.02)"},children:n.jsxs("p",{style:{color:"var(--text-gray)",margin:0},children:["For direct inquiries or serious collaborations, please use the ",n.jsx("a",{href:"/contact",style:{color:"var(--accent-cyan)",fontWeight:"bold"},children:"Contact Page"}),"."]})})})]})},os=[{title:"Fundamentals of Digital Marketing",filename:"fundamentals-of-digital-marketing.png"},{title:"Google Analytics",filename:"google-analytics.png"},{title:"Chrome DevTools User",filename:"pasted-image-2026-02-19t03-12-53-538z.png"},{title:"AI for Business Professionals",filename:"pasted-image-2026-02-19t03-10-22-301z.png"},{title:"Java (Basic) By : hackerrank",filename:"pasted-image-2026-03-01t19-50-03-408z.png"},{title:"Google Developer Program premium tier",filename:"pasted-image-2026-02-19t03-12-21-328z.png"},{title:"Introduction to Machine Learning",filename:"introduction-to-machine-learning.png"},{title:"Machine Learning",filename:"machine-learning.png"},{title:"Android Studio User",filename:"pasted-image-2026-02-19t03-13-38-086z.png"},{title:"Microsoft Excel",filename:"pasted-image-2026-02-19t03-15-12-850z.png"},{title:"Joined the Google Developer Program",filename:"pasted-image-2026-02-19t03-14-09-654z.png"}],o1=()=>{const[a,e]=T.useState(null),t=os.map(r=>({"@context":"https://schema.org","@type":"ImageObject",contentUrl:`https://www.tusharbr.online/assets/certificates/${r.filename}`,description:r.title,name:r.title,author:"Tushar Rathod"}));return n.jsxs("article",{className:"certificates-page active",style:{minHeight:"100vh",paddingBottom:"80px",position:"relative",overflowX:"hidden"},children:[n.jsx("style",{children:`
|
|
238
|
+
.certificates-grid {
|
|
239
|
+
display: grid;
|
|
240
|
+
grid-template-columns: repeat(3, 1fr);
|
|
241
|
+
gap: 25px;
|
|
242
|
+
width: 100%;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
@media (max-width: 992px) {
|
|
246
|
+
.certificates-grid {
|
|
247
|
+
grid-template-columns: repeat(2, 1fr);
|
|
248
|
+
gap: 15px;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
@media (max-width: 480px) {
|
|
253
|
+
.certificates-grid {
|
|
254
|
+
gap: 10px;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.cert-card:hover {
|
|
259
|
+
transform: translateY(-5px);
|
|
260
|
+
box-shadow: 0 10px 30px rgba(0, 229, 255, 0.2);
|
|
261
|
+
border-color: rgba(0, 229, 255, 0.4) !important;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* LIGHTWEIGHT DIGITAL DUST PARTICLES */
|
|
265
|
+
@keyframes float-dust {
|
|
266
|
+
0% { transform: translate3d(0, 0, 0); opacity: 0; }
|
|
267
|
+
20% { opacity: 0.6; }
|
|
268
|
+
80% { opacity: 0.6; }
|
|
269
|
+
100% { transform: translate3d(var(--tx), var(--ty), 0); opacity: 0; }
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.dust {
|
|
273
|
+
position: absolute;
|
|
274
|
+
width: 2px;
|
|
275
|
+
height: 2px;
|
|
276
|
+
background: #00e5ff;
|
|
277
|
+
border-radius: 50%;
|
|
278
|
+
filter: blur(0.5px);
|
|
279
|
+
pointer-events: none;
|
|
280
|
+
animation: float-dust var(--dur) linear infinite;
|
|
281
|
+
opacity: 0;
|
|
282
|
+
box-shadow: 0 0 6px #00e5ff;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.header-cursor-glow {
|
|
286
|
+
position: absolute;
|
|
287
|
+
width: 400px;
|
|
288
|
+
height: 400px;
|
|
289
|
+
background: radial-gradient(circle, rgba(0, 229, 255, 0.12) 0%, transparent 70%);
|
|
290
|
+
border-radius: 50%;
|
|
291
|
+
pointer-events: none;
|
|
292
|
+
transform: translate(-50%, -50%);
|
|
293
|
+
z-index: 1;
|
|
294
|
+
opacity: 0;
|
|
295
|
+
transition: opacity 0.3s ease;
|
|
296
|
+
will-change: left, top;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/* CRITICAL: PERFORMANCE CONFIG */
|
|
300
|
+
@media (max-width: 1024px) {
|
|
301
|
+
.dust {
|
|
302
|
+
display: none !important;
|
|
303
|
+
}
|
|
304
|
+
.achievement-header-box {
|
|
305
|
+
padding: 30px 15px !important;
|
|
306
|
+
margin-bottom: 30px !important;
|
|
307
|
+
}
|
|
308
|
+
.achievement-title {
|
|
309
|
+
letter-spacing: 2px !important;
|
|
310
|
+
font-size: 1.8rem !important;
|
|
311
|
+
}
|
|
312
|
+
.achievement-count {
|
|
313
|
+
padding: 6px 15px !important;
|
|
314
|
+
font-size: 0.85rem !important;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
@keyframes fadeIn {
|
|
319
|
+
from { opacity: 0; }
|
|
320
|
+
to { opacity: 1; }
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@keyframes scaleIn {
|
|
324
|
+
from { transform: scale(0.9); opacity: 0; }
|
|
325
|
+
to { transform: scale(1); opacity: 1; }
|
|
326
|
+
}
|
|
327
|
+
`}),n.jsx(fa,{title:"Achievements & Certificates",description:"Professional certifications and achievements of Tushar Rathod in Digital Marketing, Machine Learning, and technical domains.",schema:t}),n.jsxs("section",{style:{padding:"40px 20px",maxWidth:"1200px",margin:"0 auto",position:"relative",zIndex:10},children:[n.jsx(We,{direction:"down",duration:.6,children:n.jsxs("div",{className:"glass-card achievement-header-box",onMouseMove:r=>{const o=r.currentTarget.getBoundingClientRect(),i=r.clientX-o.left,s=r.clientY-o.top,c=r.currentTarget.querySelector(".header-cursor-glow");c&&(c.style.left=`${i}px`,c.style.top=`${s}px`)},onMouseEnter:r=>{const o=r.currentTarget.querySelector(".header-cursor-glow");o&&(o.style.opacity="1")},onMouseLeave:r=>{const o=r.currentTarget.querySelector(".header-cursor-glow");o&&(o.style.opacity="0")},style:{position:"relative",padding:"70px 20px",marginBottom:"40px",textAlign:"center",border:"1px solid rgba(0, 229, 255, 0.3)",background:"rgba(6, 6, 12, 0.9)",backdropFilter:"blur(20px)",boxShadow:"0 0 50px rgba(0, 229, 255, 0.12)",display:"flex",flexDirection:"column",gap:"20px",alignItems:"center",overflow:"hidden",borderRadius:"16px",cursor:"default"},children:[n.jsx("div",{className:"header-cursor-glow"}),n.jsx("div",{style:{position:"absolute",inset:0,zIndex:0,background:"radial-gradient(circle at 20% 30%, rgba(0, 229, 255, 0.08) 0%, transparent 60%), radial-gradient(circle at 80% 70%, rgba(124, 77, 255, 0.08) 0%, transparent 60%)",pointerEvents:"none"}}),[...Array(15)].map((r,o)=>n.jsx("div",{className:"dust",style:{left:`${Math.random()*100}%`,top:`${Math.random()*100}%`,"--tx":`${(Math.random()-.5)*150}px`,"--ty":`${(Math.random()-.5)*150}px`,"--dur":`${8+Math.random()*12}s`,animationDelay:`${Math.random()*5}s`}},o)),n.jsxs("div",{style:{position:"relative",zIndex:2,width:"100%"},children:[n.jsx("h2",{className:"achievement-title",style:{fontSize:"clamp(2.2rem, 8vw, 4rem)",fontFamily:"Orbitron, sans-serif",background:"linear-gradient(to right, #fff, #00e5ff, #7c4dff)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",margin:0,letterSpacing:"6px",fontWeight:"900",textTransform:"uppercase",textShadow:"0 0 20px rgba(0, 229, 255, 0.3)",width:"100%"},children:"Achievements"}),n.jsx("div",{style:{display:"flex",alignItems:"center",gap:"20px",flexWrap:"wrap",justifyContent:"center",marginTop:"15px"},children:n.jsxs("span",{className:"achievement-count",style:{padding:"8px 25px",background:"rgba(0, 229, 255, 0.12)",borderRadius:"30px",color:"#00e5ff",fontSize:"1rem",fontWeight:"600",border:"1px solid rgba(0, 229, 255, 0.3)",letterSpacing:"1.5px",boxShadow:"0 0 15px rgba(0, 229, 255, 0.1)"},children:[os.length," VERIFIED CREDENTIALS"]})})]})]})}),n.jsx("div",{className:"certificates-grid",children:os.map((r,o)=>n.jsx(We,{direction:"up",duration:.7,delay:o*.1,triggerOnce:!0,children:n.jsxs("div",{className:"cert-card interactive-glow-container",onClick:()=>e(r),onMouseMove:i=>{const s=i.currentTarget.getBoundingClientRect(),c=i.clientX-s.left,d=i.clientY-s.top;i.currentTarget.style.setProperty("--glow-x",`${c}px`),i.currentTarget.style.setProperty("--glow-y",`${d}px`)},style:{background:"rgba(20, 20, 25, 0.7)",borderRadius:"12px",border:"1px solid rgba(255, 255, 255, 0.08)",overflow:"hidden",cursor:"pointer",transition:"transform 0.3s ease, box-shadow 0.3s ease",position:"relative",display:"flex",flexDirection:"column",height:"100%"},children:[n.jsx("div",{className:"glow-blob"}),n.jsx("div",{style:{width:"100%",aspectRatio:"4/3",overflow:"hidden",borderBottom:"1px solid rgba(255, 255, 255, 0.05)"},children:n.jsx("img",{src:`/assets/certificates/${r.filename}`,alt:r.title,loading:"lazy",style:{width:"100%",height:"100%",objectFit:"cover",transition:"transform 0.5s ease"},onMouseEnter:i=>i.currentTarget.style.transform="scale(1.05)",onMouseLeave:i=>i.currentTarget.style.transform="scale(1)"})}),n.jsx("div",{style:{padding:"10px 12px",background:"rgba(0, 0, 0, 0.4)",flexGrow:1,display:"flex",alignItems:"center",borderTop:"1px solid rgba(255, 255, 255, 0.05)"},children:n.jsx("h3",{style:{margin:0,fontSize:"clamp(0.65rem, 3vw, 0.85rem)",fontFamily:"Barlow, sans-serif",color:"#e0e0e0",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",lineHeight:"1.2"},children:r.title})})]})},o))})]}),a&&Go.createPortal(n.jsxs("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0, 0, 0, 0.95)",zIndex:99999,display:"flex",justifyContent:"center",alignItems:"center",padding:"20px",backdropFilter:"blur(10px)",animation:"fadeIn 0.2s ease-out"},onClick:()=>e(null),children:[n.jsx("button",{onClick:r=>{r.stopPropagation(),e(null)},style:{position:"absolute",top:"30px",right:"30px",background:"rgba(255, 255, 255, 0.1)",border:"1px solid rgba(255, 255, 255, 0.2)",borderRadius:"50%",width:"50px",height:"50px",display:"flex",justifyContent:"center",alignItems:"center",color:"#fff",fontSize:"28px",cursor:"pointer",zIndex:1e5,transition:"background 0.3s"},onMouseEnter:r=>r.currentTarget.style.background="rgba(255, 0, 80, 0.5)",onMouseLeave:r=>r.currentTarget.style.background="rgba(255, 255, 255, 0.1)",children:n.jsx(Dp,{})}),n.jsxs("div",{onClick:r=>r.stopPropagation(),style:{maxWidth:"90vw",maxHeight:"90vh",display:"flex",flexDirection:"column",gap:"20px",animation:"scaleIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)"},children:[n.jsx("img",{src:`/assets/certificates/${a.filename}`,alt:a.title,style:{maxWidth:"100%",maxHeight:"80vh",objectFit:"contain",boxShadow:"0 0 50px rgba(0, 229, 255, 0.2)",borderRadius:"8px",border:"1px solid rgba(255, 255, 255, 0.1)"}}),n.jsx("h3",{style:{color:"#fff",textAlign:"center",fontFamily:"Orbitron, sans-serif",fontSize:"1.4rem",letterSpacing:"1px",textTransform:"uppercase"},children:a.title})]})]}),document.body)]})};function i1(){return null}const n1=()=>{T.useEffect(()=>{let a=localStorage.getItem("user_session_id");a||(a=localStorage.getItem("terminal_uid"),a||(a="user_"+Math.random().toString(36).substring(2,11)+"_"+Date.now().toString(36)),localStorage.setItem("user_session_id",a)),localStorage.setItem("terminal_uid",a);const e=()=>{const p=navigator.userAgent,h=navigator.platform||"";let m="Desktop",f="";return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(p)?m="Tablet":/Mobile|iPhone|iPod|Android|BlackBerry|IEMobile|Kindle|Opera M(obi|ini)/i.test(p)&&(m="Mobile"),/iPhone|iPad|iPod/i.test(p)?f="Apple":/Samsung|SM-|GT-|SCH-/i.test(p)?f="Samsung":/Pixel/i.test(p)?f="Google Pixel":/OnePlus|ONEPLUS/i.test(p)?f="OnePlus":/Xiaomi|Redmi|Mi |MI /i.test(p)?f="Xiaomi":/Vivo/i.test(p)?f="Vivo":/Oppo|OPPO/i.test(p)?f="Oppo":/Realme|RMX/i.test(p)?f="Realme":/Huawei|HUAWEI/i.test(p)?f="Huawei":/Motorola|Moto/i.test(p)?f="Motorola":/Nokia/i.test(p)?f="Nokia":/Windows NT/i.test(p)?f="Windows PC":/Macintosh|Mac OS X/i.test(p)?f="MacBook":/Android/i.test(p)?f="Android Device":/Linux/i.test(p)?f="Linux PC":/CrOS/i.test(p)&&(f="Chromebook"),f||(h.startsWith("Win")?f="Windows PC":h.startsWith("Mac")?f="Mac":h.includes("Linux")?f=/Android/i.test(p)?"Android Device":"Linux System":f="Unknown Device"),f?`${f} (${m})`:`${m}`},t=Ft(Bt,`live_users/${a}`),r=Ft(Bt,".info/connected");let o,i=null,s=!1;const c=async p=>{if(!s){s=!0;try{const h=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1",m=e(),f=localStorage.getItem("admin_authority_flag")==="true",v=window.location.pathname;let P=sessionStorage.getItem("user_ip_cache")||"",y=sessionStorage.getItem("user_location_cache")||"";if(h)P=`LOCAL_DEV_${a.substring(0,4).toUpperCase()}`,y="Localhost · Development";else if(!P)try{const E=new AbortController,w=setTimeout(()=>E.abort(),4e3),k=await fetch("https://ipwho.is/",{signal:E.signal});clearTimeout(w);const U=await k.json();if(U.success)P=U.ip,y=[U.city,U.country,U.continent].filter(Boolean).join(", "),sessionStorage.setItem("user_ip_cache",P),sessionStorage.setItem("user_location_cache",y);else throw new Error("ipwho failed")}catch{try{const w=await(await fetch("https://api.ipify.org?format=json")).json();w.ip&&(P=w.ip,sessionStorage.setItem("user_ip_cache",P))}catch{P="ANONYMOUS_GATEWAY"}}const A=P.replace(/\./g,"_");i=Ft(Bt,`visit_history/${A}`);const I=(await Cp(i)).val();I?await Gn(i,{lastSeen:ja(),page:v,role:f?"ADMIN":"USER",userID:a}):await Pi(i,{id:A,userID:a,ip:P,device:m,location:y||"Unknown",page:v,role:f?"ADMIN":"USER",startTime:ja(),lastSeen:ja(),userAgent:navigator.userAgent}),await qg(t).remove(),await Pi(t,{id:a,userID:a,ip:P,device:m,location:y||"Unknown",page:v,role:f?"ADMIN":"USER",startTime:I?.startTime||ja(),lastSeen:ja()}),o&&clearInterval(o),o=setInterval(()=>{const E=ja();Gn(t,{lastSeen:E,page:window.location.pathname}),i&&Gn(i,{lastSeen:E,page:window.location.pathname})},5e3)}catch(h){console.error("Firebase Presence Error:",h)}finally{s=!1}}},d=da(r,p=>{p.val()===!0&&c()});return()=>{d(),o&&clearInterval(o),Pi(t,null)}},[])},np=a=>!a||a==="/"?"/":("/"+a.trim().replace(/^\/|\/$/g,"")).toLowerCase(),s1=a=>{const[e,t]=T.useState(!1),[r,o]=T.useState(!1),[i,s]=T.useState(!1);return T.useEffect(()=>{const c=Ft(Bt,"system_settings"),d=da(c,p=>{const h=p.val();s(h?.website_enabled===!1)});return()=>d()},[]),T.useEffect(()=>{let c=null,d=!1;return(async()=>{let h=sessionStorage.getItem("user_ip_cache");if(!h)try{const P=await(await fetch("https://api.ipify.org?format=json")).json();P.ip&&(h=P.ip,sessionStorage.setItem("user_ip_cache",h))}catch{try{const P=await(await fetch("https://ipwho.is/")).json();P.success&&P.ip&&(h=P.ip,sessionStorage.setItem("user_ip_cache",h))}catch{}}if(!h||d)return;const m=h.replace(/\./g,"_"),f=Ft(Bt,`live_users/banned_ips/${m}`);c=da(f,v=>{if(d)return;const P=v.val();if(!P){t(!1),o(!1);return}const y=Date.now(),A=P.until==="permanent",V=typeof P.until=="number"&&P.until>y;if(!A&&!V){t(!1),o(!1);return}const I=P.restricted_paths||[],w=P.type||""||(I.length>0?"segmental":"global"),k=w==="global"||I.includes("full");if(o(k),k){t(!0);return}if(w==="segmental"&&I.length>0){const U=np(a),D=I.some(S=>np(S)===U);t(D);return}t(!1)})})(),()=>{d=!0,c&&c()}},[a]),{isBlocked:e,isGlobal:r,maintenanceMode:i,loading:!1}},Gl="admin_notification_log",l1=()=>{try{const a=localStorage.getItem(Gl);return a?JSON.parse(a):[]}catch{return[]}},c1=a=>{try{localStorage.setItem(Gl,JSON.stringify(a.slice(-50)))}catch{}},d1=()=>{const[a,e]=T.useState(null),[t,r]=T.useState(()=>l1());return T.useEffect(()=>{const s=async()=>{const m=sessionStorage.getItem("user_ip_cache");if(m)return m;if(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")return`LOCAL_DEV_${(localStorage.getItem("user_session_id")||"dev").substring(0,4).toUpperCase()}`;try{const P=await(await fetch("https://api.ipify.org?format=json")).json();if(P.ip)return sessionStorage.setItem("user_ip_cache",P.ip),P.ip}catch{}return"ANONYMOUS"},c=(m,f)=>{if(!m?.message)return;const v={id:`notif_${Date.now()}`,message:m.message,by:m.by||"ADMIN",timestamp:m.timestamp||Date.now(),targetIp:f};r(P=>{const y=[...P,v];return c1(y),y}),e(v)};let d=null,p=null;return(async()=>{const m=await s(),f=m.replace(/\./g,"_"),v=Ft(Bt,"notifications/BROADCAST");d=da(v,y=>{const A=y.val();A?.message&&(c(A),setTimeout(()=>wc(v),600))});const P=Ft(Bt,`notifications/${f}`);p=da(P,y=>{const A=y.val();A?.message&&(c(A,m),setTimeout(()=>wc(P),600))})})(),()=>{d&&d(),p&&p()}},[]),{notification:a,dismissNotification:()=>e(null),notificationLog:t,clearLog:()=>{localStorage.removeItem(Gl),r([])}}},p1=T.lazy(()=>Gt(()=>import("./Admin-DzmvYKWV.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),h1=T.lazy(()=>Gt(()=>import("./Book-DCFz_w4F.js"),__vite__mapDeps([8,1,5,2,3,4,6,7]))),u1=T.lazy(()=>Gt(()=>import("./KaliLinux-B8gJf7kt.js"),__vite__mapDeps([9,1]))),m1=T.lazy(()=>Gt(()=>import("./Apk-CwiIAXsZ.js"),__vite__mapDeps([10,1,2,3,4,6,5,7]))),g1=T.lazy(()=>Gt(()=>import("./Cloud-CjMj0UM3.js"),__vite__mapDeps([11,1,2,3,4,5,6,7]))),f1=T.lazy(()=>Gt(()=>import("./Chat-BQTn5L_O.js"),__vite__mapDeps([12,1,5,7,6,2,3,4]))),y1=T.lazy(()=>Gt(()=>import("./AdminChat-Cipu9BDh.js"),__vite__mapDeps([13,1,5,7,6,2,3,4]))),v1=T.lazy(()=>Gt(()=>import("./AdminLogin-CSu4aTfQ.js"),__vite__mapDeps([14,1,2,3,4,6,5,7]))),S1=T.lazy(()=>Gt(()=>import("./WindowsFileExplorer-DxU86Ysz.js"),__vite__mapDeps([15,1,2,3,4,6,5,7]))),x1=T.lazy(()=>Gt(()=>import("./SecretNotes-oMDnic6h.js"),__vite__mapDeps([16,1,2,3,4,5,6,7]))),b1=T.lazy(()=>Gt(()=>import("./MobileViewSimulator-aeGEZ5cs.js"),__vite__mapDeps([17,1,2,3,4,6,5,7])));function P1(){T.useEffect(()=>{$g(J0).catch(G=>console.error("Identity Verification Failed:",G))},[]),n1();const{notification:a,dismissNotification:e}=d1();T.useEffect(()=>{if(!a)return;const G=setTimeout(()=>e(),7e3);return()=>clearTimeout(G)},[a]);const[t,r]=T.useState(()=>{const G=window.location.pathname;return{"/":"home","/about":"about","/resume":"resume","/projects":"projects","/status":"status","/certificates":"certificates","/socials":"socials","/upload":"upload","/contact":"contact","/admin":"admin","/book":"book","/kali-linux":"kalilinuxtools","/apk":"apk","/feature":"feature","/empty":"empty","/cloud":"cloud","/chat":"chat","/chat-admin":"chatAdmin","/admin-login":"adminLogin"}[G]||"home"}),o=G=>({home:"/",about:"/about",resume:"/resume",projects:"/projects",status:"/status",certificates:"/certificates",socials:"/socials",upload:"/upload",contact:"/contact",admin:"/admin",book:"/book",kalilinuxtools:"/kali-linux",apk:"/apk",feature:"/feature",empty:"/empty",cloud:"/cloud",chat:"/chat",chatAdmin:"/chat-admin",adminLogin:"/admin-login"})[G]||"/",{isBlocked:i,isGlobal:s,maintenanceMode:c}=s1(o(t)),d=T.useRef(null),p=T.useRef(null),h=T.useRef(null),[m,f]=T.useState(!1),[v,P]=T.useState(()=>new URLSearchParams(window.location.search).get("notes")==="open"),[y,A]=T.useState(!1),[V,I]=T.useState(!1),[E,w]=T.useState(()=>new URLSearchParams(window.location.search).get("terminal")==="active"),[k,U]=T.useState(()=>{const G=localStorage.getItem("sidebarState");return G===null?!1:G==="closed"});T.useEffect(()=>{localStorage.setItem("sidebarState",k?"closed":"open")},[k]);const[D,S]=T.useState(()=>new URLSearchParams(window.location.search).get("explorer")==="open"),[x,C]=T.useState(()=>new URLSearchParams(window.location.search).get("view")==="mobile"),[_,R]=T.useState(window.innerWidth<1024),[j,W]=T.useState(!1),[H,ee]=T.useState(()=>localStorage.getItem("navmore_side")||"right"),ne=G=>{ee(G),localStorage.setItem("navmore_side",G)},[ye,Ce]=T.useState(!1),[vt,Oe]=T.useState(!1),at=T.useRef(0),[ct,Te]=T.useState(null),ot=T.useCallback((G,K="success")=>{Te({message:G,type:K}),setTimeout(()=>Te(null),2500)},[]),kt=T.useRef(0),pr=T.useRef(t),hr=T.useRef(E);T.useEffect(()=>{pr.current=t},[t]),T.useEffect(()=>{hr.current=E},[E]);const Or={"/":"home","/about":"about","/resume":"resume","/projects":"projects","/status":"status","/certificates":"certificates","/socials":"socials","/upload":"upload","/contact":"contact","/admin":"admin","/book":"book","/kali-linux":"kalilinuxtools","/apk":"apk","/feature":"feature","/empty":"empty","/cloud":"cloud","/chat":"chat","/chat-admin":"chatAdmin","/admin-login":"adminLogin"};T.useEffect(()=>{const G=()=>{const K=window.location.pathname,oe=Or[K]||"home";r(oe);const ue=window.history.state?.idx||0;Ce(ue>0),Oe(ue<at.current);const be=new URLSearchParams(window.location.search);S(be.get("explorer")==="open"),P(be.get("notes")==="open"),C(be.get("view")==="mobile"),w(be.get("terminal")==="active")};return window.addEventListener("popstate",G),()=>window.removeEventListener("popstate",G)},[]),T.useEffect(()=>{let G=0;const K=oe=>{if(oe.ctrlKey&&oe.code==="Space"){const ue=Date.now();ue-G<500&&(oe.preventDefault(),window.location.href="/cloud"),G=ue}};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[]),T.useEffect(()=>{(!window.history.state||window.history.state.idx===void 0)&&window.history.replaceState({idx:0,page:t},"")},[]);const it=T.useCallback(G=>{if(G===pr.current)return;const K=o(G),oe=(window.history.state?.idx||0)+1;at.current=oe,window.history.pushState({idx:oe,page:G},"",K),r(G),Ce(oe>0),Oe(!1),window.scrollTo(0,0),h.current&&h.current.scrollTo(0,{immediate:!0})},[]);T.useEffect(()=>{const G=new URL(window.location.href);let K=!1;const oe=(ue,be)=>{be?G.searchParams.get(ue)!==be&&(G.searchParams.set(ue,be),K=!0):G.searchParams.has(ue)&&(G.searchParams.delete(ue),K=!0)};oe("explorer",D?"open":null),oe("notes",v?"open":null),oe("view",x?"mobile":null),oe("terminal",E?"active":null),K&&window.history.replaceState(window.history.state,"",G.toString())},[D,v,x,E]),T.useEffect(()=>{const G=()=>R(window.innerWidth<1024);return window.addEventListener("resize",G),()=>window.removeEventListener("resize",G)},[]),T.useEffect(()=>{const G=K=>{if(K.ctrlKey&&K.key.toLowerCase()==="c"){const oe=window.getSelection()?.toString();if(oe&&oe.trim().length>0)return;K.preventDefault(),w(!0)}K.ctrlKey&&K.key.toLowerCase()==="q"&&(K.preventDefault(),hr.current&&w(!1))};return window.addEventListener("keydown",G,!0),()=>window.removeEventListener("keydown",G,!0)},[]),T.useEffect(()=>{const G=Date.now();sessionStorage.setItem("page_entry_time",G.toString());const K=performance.getEntriesByType("navigation"),oe=K.length>0&&K[0].type==="reload";return(()=>{try{const be=localStorage.getItem("terminal_user_activity");let Q=be?JSON.parse(be):{};const Z=t.toUpperCase();Q[Z]||(Q[Z]={count:0,logs:[],clicks:0,stay:0,refreshes:0}),Q[Z].count+=1,oe&&(Q[Z].refreshes=(Q[Z].refreshes||0)+1);const De=new Date,nt=Q[Z].logs[Q[Z].logs.length-1];(!nt||De.getTime()-new Date(nt.time).getTime()>6e4)&&Q[Z].logs.push({time:De.toLocaleString()}),localStorage.setItem("terminal_user_activity",JSON.stringify(Q))}catch(be){console.error("Activity log failed",be)}})(),()=>{const be=Date.now()-G;try{const Q=localStorage.getItem("terminal_user_activity");let Z=Q?JSON.parse(Q):{};const De=t.toUpperCase();Z[De]&&(Z[De].stay===void 0&&(Z[De].stay=0),Z[De].stay+=be,localStorage.setItem("terminal_user_activity",JSON.stringify(Z)))}catch{}}},[t]),T.useEffect(()=>{const G=new df({wrapper:p.current||void 0,content:d.current||void 0,duration:1.2,easing:oe=>Math.min(1,1.001-Math.pow(2,-10*oe)),smoothWheel:!0});h.current=G;function K(oe){G.raf(oe),requestAnimationFrame(K)}return requestAnimationFrame(K),G.on("scroll",oe=>{const ue=oe.animatedScroll;I(ue>50),f(ue>400);const be=ue-kt.current;be>5&&ue>80?A(!0):(be<-3||ue<30)&&A(!1),kt.current=ue}),()=>G.destroy()},[]),T.useLayoutEffect(()=>{h.current?h.current.scrollTo(0,{immediate:!0}):p.current&&p.current.scrollTo(0,0),window.scrollTo(0,0)},[t]);const X=G=>{if(i&&!s)return n.jsxs("div",{style:{height:"80vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:"#ff0000",fontFamily:"monospace",textAlign:"center"},children:[n.jsx("h1",{style:{letterSpacing:"4px"},children:"ACCESS DENIED"}),n.jsx("p",{children:"Your IP has been restricted from this asset."})]});switch(G){case"home":return n.jsx(op,{onNavigate:it});case"about":return n.jsx(O2,{});case"resume":return n.jsx($2,{});case"projects":return n.jsx(K2,{});case"status":return n.jsx(t1,{});case"contact":return n.jsx(r1,{});case"certificates":return n.jsx(o1,{});case"socials":return n.jsx(a1,{});case"admin":return n.jsx(p1,{});case"kalilinuxtools":return n.jsx(u1,{});case"apk":return n.jsx(m1,{onNavigate:it});case"feature":return n.jsx(cy,{onNavigate:it});case"cloud":return n.jsx(g1,{});case"chat":return n.jsx(f1,{});case"chatAdmin":return n.jsx(y1,{});case"adminLogin":return n.jsx(v1,{onLoginSuccess:()=>it("chatAdmin")});case"empty":return null;default:return n.jsx(op,{onNavigate:it})}};if(i&&s||c)return n.jsxs("div",{style:{width:"100vw",height:"100vh",background:"#000",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:"#ff0000",fontFamily:"monospace",textAlign:"center"},children:[n.jsx("h1",{style:{letterSpacing:"5px"},children:"ACCESS DENIED"}),n.jsx("p",{children:c?"SITE UNDER MAINTENANCE":"GLOBAL RESTRICTION ACTIVE"})]});if(t==="book")return n.jsx(T.Suspense,{fallback:n.jsx("div",{className:"loading-spinner"}),children:n.jsx(h1,{})});const q=D||v||x||E,pe=t==="admin"||t==="kalilinuxtools"||t==="book"||t==="apk"||t==="empty"||t==="feature"||t==="cloud"||t==="chat"||t==="chatAdmin"||t==="adminLogin";return n.jsxs("div",{className:"app-container",children:[t!=="empty"&&!pe&&n.jsx(ry,{activePage:t,isSidebarCollapsed:k}),n.jsx(dy,{activePage:t,setActivePage:it,onOpenTerminal:()=>w(!0),canBack:ye,canForward:vt}),!pe&&n.jsx("div",{className:"desktop-only border-fix",children:n.jsx(q0,{isCollapsed:k,onToggle:()=>U(!k)})}),!pe&&n.jsx(K0,{activePage:t,setActivePage:it,onOpenExplorer:()=>S(!0)}),pe&&n.jsx("div",{className:"fullscreen-page-overlay",style:{position:"fixed",inset:0,zIndex:5e3,background:"#000",overflow:"hidden"},children:n.jsx(T.Suspense,{fallback:n.jsx("div",{className:"loading-spinner",style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"}}),children:X(t)})}),!pe&&n.jsx("div",{className:"layout-grid-wrapper",ref:p,style:{height:"100dvh",overflowY:"auto",overflowX:"hidden",width:"100%",WebkitOverflowScrolling:"touch",transition:"padding-left 0.6s cubic-bezier(0.2, 0.8, 0.2, 1)",boxSizing:"border-box",WebkitBackfaceVisibility:"hidden",backfaceVisibility:"hidden",perspective:"1000px",transform:"translate3d(0,0,0)"},children:n.jsxs("div",{className:"main-content-column",ref:d,style:{width:"100%",paddingLeft:q||_||k?"0":"350px",boxSizing:"border-box",transition:"padding-left 0.4s cubic-bezier(0.1, 0.8, 0.2, 1)",position:"relative",zIndex:1,minHeight:"100dvh",display:"flex",flexDirection:"column"},children:[n.jsxs("div",{className:"nav-wrapper-desktop desktop-only",style:{position:"sticky",top:"15px",zIndex:1e3,display:"flex",justifyContent:k?"center":"flex-start",alignItems:"center",gap:"10px",paddingLeft:k?"0":"5px",transition:"justify-content 0.4s ease",pointerEvents:y?"none":"auto"},children:[!y&&H==="left"&&n.jsx(rd,{activePage:t,setActivePage:it,isOpen:j,onOpenChange:W,onOpenExplorer:()=>S(!0),side:"left",onSideChange:ne}),n.jsx(Q0,{activePage:t,setActivePage:it,scrollContainerRef:p,isHidden:y,setIsHidden:A,isScrolled:V}),!y&&H==="right"&&n.jsx(rd,{activePage:t,setActivePage:it,isOpen:j,onOpenChange:W,onOpenExplorer:()=>S(!0),side:"right",onSideChange:ne})]}),n.jsx("main",{className:"page-content",style:{position:"relative",flex:1,width:"100%",display:"flex",flexDirection:"column",paddingTop:"20px",transition:"padding-top 0.3s ease"},children:n.jsxs(T.Suspense,{fallback:n.jsx("div",{className:"loading-spinner",style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"}}),children:[X(t),t!=="empty"&&n.jsxs(n.Fragment,{children:[n.jsx(ty,{}),n.jsx("div",{style:{width:"100%",maxWidth:"1400px",margin:"0 auto"},children:n.jsx(i1,{})})]})]})})]})}),n.jsx("style",{children:`
|
|
328
|
+
@keyframes spin { 100% { transform: rotate(360deg); } }
|
|
329
|
+
|
|
330
|
+
.loading-spinner {
|
|
331
|
+
width: 40px;
|
|
332
|
+
height: 40px;
|
|
333
|
+
border: 3px solid rgba(0, 229, 255, 0.1);
|
|
334
|
+
border-top: 3px solid var(--accent-cyan);
|
|
335
|
+
border-radius: 50%;
|
|
336
|
+
animation: spin 1s linear infinite;
|
|
337
|
+
box-shadow: 0 0 15px rgba(0, 229, 255, 0.2);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.back-to-top-btn {
|
|
341
|
+
position: fixed;
|
|
342
|
+
bottom: 90px;
|
|
343
|
+
right: 25px;
|
|
344
|
+
width: 46px;
|
|
345
|
+
height: 46px;
|
|
346
|
+
display: flex;
|
|
347
|
+
align-items: center;
|
|
348
|
+
justify-content: center;
|
|
349
|
+
background: rgba(6, 6, 12, 0.9);
|
|
350
|
+
border: 1px solid var(--accent-cyan);
|
|
351
|
+
border-radius: 50%;
|
|
352
|
+
color: var(--accent-cyan);
|
|
353
|
+
cursor: pointer;
|
|
354
|
+
z-index: 9999;
|
|
355
|
+
backdrop-filter: blur(10px);
|
|
356
|
+
box-shadow: 0 0 20px rgba(0, 229, 255, 0.2);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
@media (max-width: 768px) {
|
|
360
|
+
.back-to-top-btn {
|
|
361
|
+
right: auto;
|
|
362
|
+
left: 20px;
|
|
363
|
+
bottom: 90px;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
`}),n.jsx(ht,{children:y&&t!=="empty"&&t!=="cloud"&&n.jsx(Y.button,{initial:{opacity:0,scale:.8,filter:"blur(6px)"},animate:{opacity:1,scale:1,filter:"blur(0px)"},exit:{opacity:0,scale:.8,filter:"blur(6px)"},onClick:()=>A(!1),style:{position:"fixed",top:"20px",right:"80px",width:"52px",height:"52px",background:"rgba(6, 6, 14, 0.4)",backdropFilter:"blur(20px)",border:"1px solid rgba(0, 229, 255, 0.4)",borderRadius:"14px",zIndex:1e4,cursor:"pointer",display:_?"none":"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",boxShadow:"0 0 30px rgba(0, 229, 255, 0.2), inset 0 0 15px rgba(0, 229, 255, 0.1)",padding:0,outline:"none"},whileHover:{scale:1.08,boxShadow:"0 0 36px rgba(0,229,255,0.3)",borderColor:"rgba(0,229,255,0.6)"},whileTap:{scale:.94},title:"Show Navbar",children:n.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[n.jsx("path",{d:"M6 14 L6 6 L14 6",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",opacity:"0.6"}),n.jsx("path",{d:"M34 6 L42 6 L42 14",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",opacity:"0.6"}),n.jsx("path",{d:"M6 34 L6 42 L14 42",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",opacity:"0.6"}),n.jsx("path",{d:"M34 42 L42 42 L42 34",stroke:"#00e5ff",strokeWidth:"1.5",strokeLinecap:"round",opacity:"0.6"}),n.jsx("rect",{x:"14",y:"30",width:"4",height:"8",rx:"1.5",fill:"#00e5ff",opacity:"0.5"}),n.jsx("rect",{x:"20",y:"24",width:"4",height:"14",rx:"1.5",fill:"#00e5ff",opacity:"0.75"}),n.jsx("rect",{x:"26",y:"18",width:"4",height:"20",rx:"1.5",fill:"#00e5ff",opacity:"1",style:{filter:"drop-shadow(0 0 4px rgba(0,229,255,0.9))"}}),n.jsx("line",{x1:"10",y1:"12",x2:"38",y2:"12",stroke:"#00e5ff",strokeWidth:"2",strokeLinecap:"round",style:{filter:"drop-shadow(0 0 3px rgba(0,229,255,0.8))"}}),n.jsx("circle",{cx:"24",cy:"16",r:"1.5",fill:"#00e5ff",opacity:"0.7"})]})})}),n.jsx(ht,{children:m&&t!=="empty"&&t!=="cloud"&&n.jsx(Y.button,{initial:{opacity:0,scale:.5},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.5},onClick:()=>h.current?.scrollTo(0),className:"back-to-top-btn",style:{padding:0,overflow:"hidden",background:"rgba(6, 6, 12, 0.95)",border:"1px solid var(--accent-cyan)",boxShadow:"0 0 30px rgba(0, 229, 255, 0.3), inset 0 0 15px rgba(0, 229, 255, 0.1)"},children:n.jsxs("svg",{viewBox:"0 0 100 100",width:"100%",height:"100%",style:{filter:"drop-shadow(0 0 5px var(--accent-cyan))"},children:[n.jsx("circle",{cx:"50",cy:"50",r:"45",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"1",strokeDasharray:"10 5",opacity:"0.3",children:n.jsx("animateTransform",{attributeName:"transform",type:"rotate",from:"0 50 50",to:"360 50 50",dur:"10s",repeatCount:"indefinite"})}),n.jsx("path",{d:"M50 15 L80 32 L80 68 L50 85 L20 68 L20 32 Z",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"2",opacity:"0.8",children:n.jsx("animate",{attributeName:"stroke-opacity",values:"0.8;0.3;0.8",dur:"2s",repeatCount:"indefinite"})}),n.jsx("path",{d:"M50 30 L50 70 M35 45 L50 30 L65 45",fill:"none",stroke:"var(--accent-cyan)",strokeWidth:"6",strokeLinecap:"round",strokeLinejoin:"round"})]})})}),n.jsx(T.Suspense,{fallback:null,children:D&&n.jsx(S1,{isOpen:D,onClose:()=>S(!1)})}),n.jsx(T.Suspense,{fallback:null,children:v&&n.jsx(x1,{isOpen:v,onClose:()=>P(!1)})}),n.jsx(T.Suspense,{fallback:null,children:x&&n.jsx(b1,{isOpen:x,onClose:()=>C(!1)})}),n.jsx(T.Suspense,{fallback:null,children:t!=="feature"&&t!=="cloud"&&t!=="chat"&&t!=="chatAdmin"&&t!=="adminLogin"&&n.jsx(ny,{activePage:t,isOpen:E,onToggle:w,onNavigate:it,onOpenExplorer:()=>S(!0),onOpenNotes:()=>P(!0),onOpenMobileView:()=>C(!0),onNotify:ot,incomingNotification:a,isNavbarMoreMenuOpen:j,navMoreMenuSide:H})}),n.jsx(ht,{children:ct&&t!=="empty"&&n.jsx(Y.div,{initial:{opacity:0,x:50},animate:{opacity:1,x:0},exit:{opacity:0,x:50,transition:{duration:.2}},style:{position:"fixed",bottom:"30px",right:"30px",background:"rgba(5, 5, 10, 0.95)",border:`1px solid ${ct.type==="error"?"#ff0055":"var(--accent-cyan)"}`,borderLeft:`4px solid ${ct.type==="error"?"#ff0055":"var(--accent-cyan)"}`,padding:"12px 20px",borderRadius:"2px",color:ct.type==="error"?"#ff0055":"var(--accent-cyan)",fontFamily:"'JetBrains Mono', monospace",fontSize:"13px",fontWeight:600,zIndex:1000001,display:"flex",alignItems:"center",gap:"12px",boxShadow:`0 5px 20px ${ct.type==="error"?"rgba(255, 0, 85, 0.2)":"rgba(0, 229, 255, 0.15)"}`,backdropFilter:"blur(10px)",pointerEvents:"none",maxWidth:"300px"},children:n.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[n.jsx("span",{style:{fontSize:"10px",opacity:.7,marginBottom:"2px"},children:"SYSTEM MESSAGE"}),n.jsx("span",{children:ct.message})]})})}),n.jsx(ht,{children:a&&t!=="empty"&&n.jsxs(Y.div,{initial:{opacity:0,x:100,scale:.9},animate:{opacity:1,x:0,scale:1},exit:{opacity:0,x:100,scale:.9},transition:{type:"spring",stiffness:300,damping:25},style:{position:"fixed",top:"24px",right:"24px",zIndex:9999999,width:"min(360px, calc(100vw - 48px))",background:"rgba(10, 10, 15, 0.9)",border:"1px solid rgba(0, 255, 65, 0.15)",borderLeft:"4px solid #00e5ff",borderRadius:"8px",boxShadow:"-10px 10px 30px rgba(0,0,0,0.8), 0 0 20px rgba(0, 229, 255, 0.2)",backdropFilter:"blur(20px)",overflow:"hidden",fontFamily:"'JetBrains Mono', monospace"},children:[n.jsxs("div",{style:{padding:"16px 20px",display:"flex",gap:"16px"},children:[n.jsx("div",{style:{flexShrink:0,display:"flex",flexDirection:"column",alignItems:"center"},children:n.jsx("div",{style:{width:"38px",height:"38px",borderRadius:"50%",background:"rgba(0, 229, 255, 0.1)",display:"flex",alignItems:"center",justifyContent:"center",color:"#00e5ff",boxShadow:"0 0 10px rgba(0, 229, 255, 0.2)"},children:n.jsx(gg,{size:20})})}),n.jsxs("div",{style:{flex:1,minWidth:0,paddingRight:"10px"},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},children:[n.jsx("div",{style:{fontSize:"11px",color:"#00e5ff",fontWeight:800,letterSpacing:"1px"},children:"SYSTEM ALERT"}),n.jsxs("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.4)",display:"flex",gap:"8px",alignItems:"center"},children:[new Date(a.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),n.jsx("button",{onClick:e,style:{background:"none",border:"none",color:"#777",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",padding:"0",transition:"0.2s",outline:"none"},onMouseEnter:G=>{G.currentTarget.style.color="#fff"},onMouseLeave:G=>{G.currentTarget.style.color="#777"},children:n.jsx(vp,{size:18})})]})]}),n.jsx("div",{style:{fontSize:"0.9rem",color:"#eef",lineHeight:1.5,wordWrap:"break-word",letterSpacing:"0.3px",marginBottom:"10px"},children:a.message}),n.jsxs("div",{style:{fontSize:"9px",color:"#666",letterSpacing:"1px",textTransform:"uppercase"},children:["— Sent by ",a.by||"ADMIN"]})]})]}),n.jsx(Y.div,{initial:{scaleX:1},animate:{scaleX:0},transition:{duration:7,ease:"linear"},style:{height:"3px",background:"linear-gradient(90deg, #00e5ff, #00ff41)",transformOrigin:"left"}})]},"live-notif")})]})}Cg.createRoot(document.getElementById("root")).render(n.jsx(T.StrictMode,{children:n.jsx(ef,{children:n.jsx(P1,{})})}));"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").then(a=>console.log("SW success:",a)).catch(a=>console.log("SW fail:",a))});export{fa as S,J0 as a,n2 as b,V1 as c,Bt as d,i2 as e,W1 as f,k1 as g,P2 as h,U1 as i,M1 as j,N1 as k,w1 as l,B1 as m,ed as n,S2 as o,T1 as q,Go as r,I1 as s,F1 as u};
|