From e7c1a603b51aacef6dab4c208e0bc571baf93fd5 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Fri, 19 Jun 2026 10:02:22 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Add=20packages/site=20=E2=80=94=20landi?= =?UTF-8?q?ng=20vitrine=20(Vue=203=20+=20Tailwind=204)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Scaffold packages/site with 11 Vue components: hero (animated terminal), features, showcase, work groups, how-it-works, security, FAQ accordion, footer - i18n EN/FR via vue-i18n with 82+ keys, autodetect navigator.language, toggle without reload - Animated timeline (terminal, dialog, toast) ported from design, scroll-reveal, copy buttons (2 instances) - Self-hosted JetBrains Mono fonts (@fontsource), optimized assets (mark 28KB, og-cover 1200×630) - SEO: canonical, og:image, theme-color, robots.txt, sitemap.xml for git-arboretum.com - Monorepo integration (decoupled from npm release): build:site / dev:site / preview:site scripts - CI: add build:site step to ci.yml for early detection; create .gitea/workflows/prod.yml for FTPS deploy (lftp mirror) to git-arboretum.com - Validated builds ✓ and UI rendering (EN/FR headless test) ✓ --- .gitea/workflows/prod.yml | 55 +++++ .github/workflows/ci.yml | 1 + package.json | 5 +- packages/site/index.html | 53 +++++ packages/site/package.json | 24 ++ packages/site/public/apple-touch-icon.png | Bin 0 -> 15518 bytes .../site/public/assets/arboretum-mark.png | Bin 0 -> 28148 bytes packages/site/public/assets/og-cover.png | Bin 0 -> 77191 bytes packages/site/public/favicon.ico | Bin 0 -> 5650 bytes packages/site/public/icon.svg | 46 ++++ packages/site/public/robots.txt | 4 + packages/site/public/sitemap.xml | 9 + packages/site/src/App.vue | 74 ++++++ packages/site/src/components/AppFooter.vue | 47 ++++ packages/site/src/components/AppHeader.vue | 59 +++++ packages/site/src/components/FaqSection.vue | 52 +++++ packages/site/src/components/FeatureCard.vue | 17 ++ .../site/src/components/FeaturesSection.vue | 76 +++++++ packages/site/src/components/FinalCta.vue | 61 +++++ packages/site/src/components/HeroMockup.vue | 212 ++++++++++++++++++ packages/site/src/components/HeroSection.vue | 80 +++++++ .../site/src/components/HowItWorksSection.vue | 42 ++++ packages/site/src/components/LangToggle.vue | 37 +++ .../site/src/components/ProblemSection.vue | 14 ++ .../site/src/components/SecuritySection.vue | 47 ++++ .../site/src/components/ShowcaseSection.vue | 170 ++++++++++++++ .../site/src/components/WorkGroupsSection.vue | 55 +++++ .../site/src/components/icons/IconCopy.vue | 20 ++ .../site/src/components/icons/IconGitea.vue | 22 ++ packages/site/src/composables/useCopy.ts | 24 ++ .../site/src/composables/useHeroTimeline.ts | 113 ++++++++++ .../site/src/composables/useScrollReveal.ts | 52 +++++ packages/site/src/env.d.ts | 7 + packages/site/src/i18n/content.ts | 60 +++++ packages/site/src/i18n/en.ts | 93 ++++++++ packages/site/src/i18n/fr.ts | 93 ++++++++ packages/site/src/i18n/index.ts | 37 +++ packages/site/src/main.ts | 12 + packages/site/src/style.css | 120 ++++++++++ packages/site/tsconfig.json | 16 ++ packages/site/vite.config.ts | 15 ++ 41 files changed, 1923 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/prod.yml create mode 100644 packages/site/index.html create mode 100644 packages/site/package.json create mode 100644 packages/site/public/apple-touch-icon.png create mode 100644 packages/site/public/assets/arboretum-mark.png create mode 100644 packages/site/public/assets/og-cover.png create mode 100644 packages/site/public/favicon.ico create mode 100644 packages/site/public/icon.svg create mode 100644 packages/site/public/robots.txt create mode 100644 packages/site/public/sitemap.xml create mode 100644 packages/site/src/App.vue create mode 100644 packages/site/src/components/AppFooter.vue create mode 100644 packages/site/src/components/AppHeader.vue create mode 100644 packages/site/src/components/FaqSection.vue create mode 100644 packages/site/src/components/FeatureCard.vue create mode 100644 packages/site/src/components/FeaturesSection.vue create mode 100644 packages/site/src/components/FinalCta.vue create mode 100644 packages/site/src/components/HeroMockup.vue create mode 100644 packages/site/src/components/HeroSection.vue create mode 100644 packages/site/src/components/HowItWorksSection.vue create mode 100644 packages/site/src/components/LangToggle.vue create mode 100644 packages/site/src/components/ProblemSection.vue create mode 100644 packages/site/src/components/SecuritySection.vue create mode 100644 packages/site/src/components/ShowcaseSection.vue create mode 100644 packages/site/src/components/WorkGroupsSection.vue create mode 100644 packages/site/src/components/icons/IconCopy.vue create mode 100644 packages/site/src/components/icons/IconGitea.vue create mode 100644 packages/site/src/composables/useCopy.ts create mode 100644 packages/site/src/composables/useHeroTimeline.ts create mode 100644 packages/site/src/composables/useScrollReveal.ts create mode 100644 packages/site/src/env.d.ts create mode 100644 packages/site/src/i18n/content.ts create mode 100644 packages/site/src/i18n/en.ts create mode 100644 packages/site/src/i18n/fr.ts create mode 100644 packages/site/src/i18n/index.ts create mode 100644 packages/site/src/main.ts create mode 100644 packages/site/src/style.css create mode 100644 packages/site/tsconfig.json create mode 100644 packages/site/vite.config.ts diff --git a/.gitea/workflows/prod.yml b/.gitea/workflows/prod.yml new file mode 100644 index 0000000..5322212 --- /dev/null +++ b/.gitea/workflows/prod.yml @@ -0,0 +1,55 @@ +name: Deploy site (production) + +# Déploie le site vitrine (packages/site) sur Plesk via FTPS (lftp), à l'identique +# de lidge_web / tracksniff-web. Ne se déclenche que sur un changement du site. +on: + push: + branches: + - main + paths: + - 'packages/site/**' + - '.gitea/workflows/prod.yml' + workflow_dispatch: + +concurrency: + group: deploy-site + cancel-in-progress: true + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + container: + image: node:22-bookworm + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Install scopé au workspace du site : pas de build des deps natives du + # serveur (node-pty / node:sqlite) qui n'ont rien à faire ici. + - name: Install deps (@arboretum/site) + run: npm install -w @arboretum/site --no-audit --no-fund + + - name: Build site + run: npm run build:site + + - name: Check build output + run: ls -la packages/site/dist + + - name: Deploy via FTPS (lftp) + run: | + if [ -z "$REMOTE_PATH" ]; then + echo "::error::Secret SITE_REMOTE_PATH manquant (chemin docroot du vhost git-arboretum.com)." + exit 1 + fi + apt-get update && apt-get install -y lftp + lftp -c " + open -u \"$FTP_USER\",\"$FTP_PASSWORD\" \"$FTP_HOST\" + set ssl:verify-certificate no + mirror -R --delete --verbose packages/site/dist \"$REMOTE_PATH\" + " + env: + FTP_HOST: ${{ secrets.FTP_HOST }} + FTP_USER: ${{ secrets.FTP_USER }} + FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }} + # Chemin docroot du vhost git-arboretum.com sur Plesk (ex. /httpdocs/arboretum/public). + REMOTE_PATH: ${{ secrets.SITE_REMOTE_PATH }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 29a31e8..5fa2b8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,7 @@ jobs: - run: npm ci - run: npm run typecheck - run: npm run build + - run: npm run build:site - run: npx vitest run pack-smoke: diff --git a/package.json b/package.json index ff86b98..299742f 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,10 @@ "pack": "npm run build && npm pack -w @johanleroy/git-arboretum", "test": "vitest run", "dev:server": "npm run dev -w @johanleroy/git-arboretum", - "dev:web": "npm run dev -w @arboretum/web" + "dev:web": "npm run dev -w @arboretum/web", + "build:site": "npm run build -w @arboretum/site", + "dev:site": "npm run dev -w @arboretum/site", + "preview:site": "npm run preview -w @arboretum/site" }, "devDependencies": { "@types/node": "^22.10.0", diff --git a/packages/site/index.html b/packages/site/index.html new file mode 100644 index 0000000..1ff6e15 --- /dev/null +++ b/packages/site/index.html @@ -0,0 +1,53 @@ + + + + + + + + + Arboretum — Mission control for your AI coding agents + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/packages/site/package.json b/packages/site/package.json new file mode 100644 index 0000000..5c157e7 --- /dev/null +++ b/packages/site/package.json @@ -0,0 +1,24 @@ +{ + "name": "@arboretum/site", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview" + }, + "dependencies": { + "vue": "^3.5.38", + "vue-i18n": "^11.4.5" + }, + "devDependencies": { + "@fontsource/jetbrains-mono": "^5.1.0", + "@tailwindcss/vite": "^4.3.0", + "@vitejs/plugin-vue": "^6.0.7", + "tailwindcss": "^4.3.0", + "typescript": "^5.7.0", + "vite": "^8.0.16", + "vue-tsc": "^3.3.4" + } +} diff --git a/packages/site/public/apple-touch-icon.png b/packages/site/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c975719ba970d731b858682f333e57e4106526ad GIT binary patch literal 15518 zcmb_jV{;`;(>^&lv2ELSvavVT#>U3BZQHhOXM>HiF*ml&ckg=t!t-Hfs(PxXr>47l z>gw(*LQ!540Tve)001CJONlA}TbutI(2)OTfhkB<0D#|AT1;5gJ^P}^EgOF^<>`a( zX{+*-n{A#tfS!b$JYI@2J^Onz3@Nl2GUcjS1D4nF)#aVF-uhX~$9Zkfcmg%D0XSv2 z$#-<@`k00>X;cvro@h#!+Rmr!r?}JH1hLFnsZ1q5L3p;zjNIDV*M}M>g<=y{28&sP z^!(N*Fm?+?1>8Ve=4uP*&Vl+ul4HoB$k2Q|c)I_s5VolY$$-iqj2oc(!9}7cbu3CW zXVA|M`WRP4bD;Kz2(Q|v5<&;VB_=|)<0IUwFD5yD-2+j>QU@!e2%$)+K}`9FW2XA| zrwS1gOS7w=b`!oR2L6zUN(!{(dlxhF$lKQXE6pgHs^JJkrz!)M{W~GC0-!eL9 zk)1ybz+`}Gq{g>K@7L6SdL>N8e_N9dd#z54wB z3W?4>6m2xIdI@uBxlLg_akukuKPKN$5#FAl;2=BkMPt+rT!cZ#m?civf%4>RS+sdwMrkU2?Ni9fE!B7EjTVXqh%KsT9|mB@P*0#K$22G>uOIn*4vVc2iNdP% zHp0UQUvvpWygfEZpyE2ek_8Tkn7BJ0`0RRl86PGI&T^uZk*z}h;_?j*EVPd-LV>A* zYDDGm$3I77-p=+OAN|_P36M7Lewd%$@NG*8xUOfN9d5V0pO0=OHkEP~JzN*L(oks$ zMHW_S$L;kk7%;PgbcwKGf&L60fj4OLXxi+)ecnCCT%Yyxtu-|26XG{m9}bJBrgV{; zr0K0^QbWZYBO@4-h9UJeLF&?RCQ3lHY#7#k(Z(|P-yCdl=vkC<1P_q;I)(@}~7 zMjHbChR=JcAGapUbkgi@{&%o7KhYQkTZr9AiEHxz6)Tb(^`Cc@XG>SR7ky|v3HCmg z|4gFf_j_dDsGn(Pu}Oh$qKp|XM*o|Phq?cdT~$NP~l{h4cYeLSz`J){x^cK~(7AY<#T z;Phj9u*1Kf5a8!uXM8tha^Yk%vVF3G^Dzq~MkPj9{PDmHEsSnt=($KN>9>8J0Dw^H z6k5AVHK~jmV@i2iWeOtlyAUE5i1F*)L-4#^<=l3`L+{i!7@|*Cfz1~F@|jHlkO*Nq zBqxIT?}DgBZ?^C1lVH5ewF^2@t-!=lq_jz4L;4L^fSloSVIX1U0AK zkOqxg*g?vtZ2WXR1Eh=Q6wo{##c3)>o%Bdsh@gV*iHIM*2Qm;fGsj3rfh(-5%2tSH zU!jTE8R}$4)o}0)*x})ZNs7$DGzVw)g3T8D8m31LTY*!o1ngmitCmZrjNFkKsqYT< zH^4~gh-Am~%R`S5bBcxv@I~d9P&r6tbw7_Yru>}78vTCDV(W-`Qa$iXjiOpJRiU+x z)?U@Nuzc`5AN>azr|_!`@)4gC#4i7eR1mE{cYeAZFk5o6)RGJ8I8Ry;r5yjKE;7@x zx^QXN1}h}1nKJ4gC1=4bhS5c%k>f%o5Q|qCJyje4WP?r|k*`15&;;qClpE25>hd!s z4rR*pI34m9%;npy>m0U@i^C`gHofV!OJEX(tm~eZTU~&(A{B}5!iW*h<|qAVnT<`1Ij<$)t_l}|othZGDLRZ# zejT5@5$Ptm@0T9T_sXM0p@vspA}D`&Pm_$+`;7vT!PN50>DQ85^3E9vUSC+8dc9Bf z!@dbF8Y>tNtRbF%D^>gWJ5R zW6X2;{`i_ydMc{N>(X}pV6L~A;s`TQ3Yo%9?$F8hQ};m#{=5zvSvVnNzCey6#Q7D= zY=hrP|7*$A!}|*>?&#)~NW*xyc`1*`OZCi7VKd0r?Ue>C*XyM1Ea~dAVr;q;!USdz z`>^$Xn)n!3L`KbhaBDT{ab4i%ECxl-?|H68Zf2{8J6Oo2dU{GO9S7^X0E5?Hu5sX7 zPxE6-<5EJ5uJIuDEP)&#(fy|hPBfgHkVy(_iQ^f_X|{JElONUFZ(x1N?{lui^F-EW zYxiimmS+F4-S!uj;6n&FrPqx7mLEBTmjk#^kOvzAjVokQP~{g@IC!Sk`;s$IcI}Qi z$A$u~zrkX$p;szvE%Hocu$C-Kz(m3#zA;!!U`Hq~hghto4$9>>Rr%>2h6G;10}2@4 za;nQ{W;TV5b;0(F8g-7&svH$laG&93UCppLm-cV@1pnNc)hpXcNDJ8%j((%FdDfZ&K!_CZ?ls5KLKTbws6tdm>hxz2wYY)Y+&gUMd z2aK5=bq*(tA0HHm(uPrx^EzR z>NQ(JIcchUwXUBg#WweE`;9TFchg$_7{b$HR+NZ2Q#R&-{k>SO@=c^%I0GMKVR$1Y zovBex{cMHh>fPf#G3+OM6*y{6WTM^`Bw>cJ!)LGrZYOR<*n72Uvg|pvR7$M;`xtKt zPsHE|nH~BXVj7E5f8yY9m`=f!;j1o&Derbkyo<=^xlG$t8k#|Cfw1@XFW8CHswZAcwGYGHiQ&b3|p z%jbs8%>+J~GwsF5hP)uwj($PSdc6t-> zrsgQ@0CJ2Ua7m~?5=5rU9V@bnUDRR1ed1nL+X@uCTI4og#1#;6&bs&*aplanu;-j) z14`MEJL3FOYfy#@2#|$Z29te_(BtVuDciK(W)H|r+N$d~TO~cG8LDpntkbfzwn*3M z9HiTbU`vR3w^Nf${=|s#C_9;MRf%OQMXs1kautc32U`(8eaZI_zjvY)e8bU!;(+byhHAiEszk|UokJK744Yy%yAP}B5i_k?A zS3)a6lh&HcU84FLJ4ss(na`Yk%!T71>hKEJA;J97N9=DIcVccJPM5C;M%gSjCz_UY z&aqVFaxj+VV_cl4$sX8vGDjQTI9v`_Yfpg3rPuR?AMT1P4HV*hF52r4EhPZCd)~2vN~P zg?s9}q+_3@*5^kRV!hVS3qdR%PZ?+eV?jzBl|v8Z>Ex;|yj-55`_tN&ksdq)WTEDj zZ@vYfrwipLt$OK=YB}$d4c38C{NQm}Ob@+x2vG;2iyAmjtiCaYY*sDWOO9mR*|wf$ zh)c7Z0=hy3`aEV%ayp;xrx}lt%4jX=H<8Ped_hl3ud^{SCl;SCJ3gc0&_zGoiK0}w zLVSXEk5V0e;%)g9I6-}9ZZ0)?&|KE^e2)P&W(3&CyP@I+ep1teuaeh02h}O`fqDLY zg--hAF^43GMdH{x<5$*7a~@UQ0;Dx{@N@DGiQV|UT-BNL6vDUi?&@$2M&}e%gN+zy z1|acA^*4I3it;>Q_yL)@kngtq{JNBuooLpN^qSi(k%g7`WUM0PpTIsDXqw=8%RwgR zqMKobafJamIF$@%sM-l57hOe~3YYwr45F3SD?3%D1_ru=ZUC?VoQ*RR$Yj)KiEwo4 zNbohEvM;%WVIJp#<);zBp&(OTT!zL|#-gF&i4^olZ*BjNVs+|tcf ziphilV1$cl35+mBjZ}u|LB%X9F{nYsMk)Eg%KObVf2oIZ=;N?T7!VM=fDE27z{P0- zUM;wgl}051I*F937&Hh=|BWw=yuDnDVJlB-f*`Pf+M?pIZ!C$Gf~7P+B@M2{Apuc} zE`*pqu_*;!965l(UkOWzPZGF%)u)_7`TFp#TC+0`>r$T!Qe#QtWh%Cgp3F<*=O#o^ZRYI8* zv9oSV!bQDo*B_W+1a0fXx{?qC7dc9{f1|SgRKcxvUm{?rPGCZp@M;=JsYM}i2us4# zCU8=)L}Z_{cHrl}r3iePO`q(U$=e1h->`b0B^v*OR8)J)pC8LiMbi&r$RqO2f#l5L z=rWb2(<2zvA38Q~lJArT^~Uo-T@7MDTHy*-?>_C4%r)7(9D&Pfx<2*`JH!|C1Tf+HGXM+OY7AwErjs@<=`r4h_`fRpU<-hs<<~2<7w+Eh+!c$UlH_I469rB*R zRNgCP4+6P~qaoK*k|9i_&m!l2-EQjHB=oLZ>MmcVz<=#9eboc~v{r4i8l~@YhNz4` z^`~)Nc&#X$Gdk0M-6lo|V%TL1anQvDT;zcjr30_8t zGz&19bnd+G$|q@ZG%g?JJ>D`ps0ampZ{QScrIO(=B95RCZO?<0MP`wU-mq08NKl|3 zh87FTx!l$kT1FA>XK^Ay#f8j^_!Ni&uFHPh7VwN-MjiZuc3X~ioAa%5MU?FN?_1+t z0#7Bz?-^lN3(hkFd+*L~m9wb$MjBi36_`Ygwd?B1^H!L4r+SU#ef8wrCKJQO>~Yf6uC=GRxT?B2$N?+<>|pr7&N|$x(m2{z zcegxs0AHcZVwa(*BAxRCObGGxD-N5_JYxhRmAmg;v0Q9Q+e~HUsUOQ5^EoMGo?a z(9Xlc(Z{DbR6hVk#^aJ2y=DoNbBn_6QY_F@F&*Q-mctc zDjt(t0-g?1vs&FC@Yx{JKOpg0uf2c8JCRebh`${Q~meBK8?h(G1lo3BnuJ3sT zhu-?_>D*ZTB=<06XbJ{)|_x5Gq@qL5QEeliKL z4&d><5B;`Zh@*;xm4{oB$}+#?wKuNV3nrK%FunLf{WlhWQ)|uo?mE@^(WxNZE(bLY|R z>wV#^b>n_D;&fnh+ETOqbSxEov~9P!0gTbkPSQ}Pt$4|LwsxfMp%gEjfEtzRsqTbx zOOs3dF_tOW;ZzUib9EIa+NSY!9SQuT`SfLzfmlc*>X%^kT(nZYj{NycnAV1UtkQ|u zZrf7u;k}jcRqKls6(l|lc|R5=LJfP(6{$cexJH=O{s0Wx&$ToK`ERY>UlnK)?0dT~ zG~P#3h~2K+0#}sFjAkhE!tIoYzhFOL455w0vK@qIe{|N@?+AWvSB*}3by|tm`VYC{ zMJ=AKJ%=CZ)$kvr3i-I?jsJa`&J@epjFif>V0Lk#7n+9>dA#qqi|%}zQWPTJ=ACH2 z$|EdPGz;(cYm)Mx#|2ivdN$>ujkvlqB6&UB6ijB7SkK4%m`U&FJhPRg+T13{A#$Ey zBowf(t*f~o-0WSqg?-nSwp;ki)Mw<^XWip%Hi&&J17p6`Qt!Tr-!Q2thVVUhk-cNQZ^hbCuVj;e6RVC&T;q zW816q4-%m?SrUr@VYYN7v^~5ksnypRJ)H(YxY+x!_9f;s!bR67^U>s5Qi5%qOd8v7ym4DYqqYl~^`0JJvihg;t~F?})|u7~(xh2xJ7(}CMC{D$ z5V~-Cm{KR**mYuBY3#BPq`;D9G)kC^=TIK6+iDuQLGih-Th%S^E2W_CyqZ`_QGgNF zF1x&m+nG^Ih`2u=cFFdi{7A9zsDz5JB*s}2f8q2O`6&$p_iX8_%+n|m* zvNaR>c&D+L=NOnIw^H0JnAyEmpjhaL)1o#Y!kXSrG<(_0pqX4TC#&%=s}OY6%fLhD z3!qU}D6*Sq9F>%_Wzo3hMC*gC%2#KFyaSV9tJ6aaR>O;ugHVyd5D{Tv>$UXn*$VS= znJz2A$98uT;|v3)bCm*{%hr4DQ`3##3U$joT-`X9{Gn% zc2&pO31agvvg7txW&`Ia*68C8AOm z)b%z+M@zQ5OAvoKeD+ zx&DgeMAB37USGx~CPjrp1iCsgHFLl92ZJ|!E`cw3UnKxeRPlXrtSc=RjR&y^&d=i% z9{%FY4z^%8{f+tFVP8z%O-^gbVynf_67IWLm=^FIbHxzbGHbAg1w;;$s1_d$G)HgG z@HaD(7NY6r%I)39oEP*Q5Vnf!b!)up^{NytAXfC5S@;qH-Nmf4yeH{{NlEz6)y2c_E!9cKK?wt<%jcp{(-7P6aHD{C3@E*3D5eo^5GhL11Ca& z(tAW{dW&0oV4;6cc9`!#GGAvzbP$|J9@QimXpTXy!q8|#DTTJ1;xTq=G)DNWPCZ;D zgL>25X9vKYMm3(q(=+C|$(Hz(7E0>bj7_D~b=q?LeMkgO)Inv%&ypZYCZYX{n{B_2=s2ou z?CtNB=<692!aR&x-l7tC2XH?>BIP(%HaT2Oz@>@JH7 zeB7*@(IrrT^R8g}^O>Ha0yJl*(d4$ok?$=|QXVvF0$uL}jeCsY(r~`vHxv2H6blVX z{quw+c6dd!Bt@yFVDHWRM@+z_ItA(rp5LapK!*zinl8=fl2Fg_BU=a*|JLY2>!}7p zza7-TpPExJvm^)3+HE;(o#Ta1$dg>V!m@z#CFKWf1s{s6c6{+tIcr?y*@upMf5jy{ z)r_)7D+TG51X#Y+vi^%jV{Q6C9+T=BWCOLi%+xcADU-B4+dbQy{_YO@hZ*J{y{8< z%U=d8xMLUr(nS-0tG1aFUYS|n96&R8&%xm;igKSZHti$M5DwKEQ} ztc;`>ZSE>{wRkpDtSGSS)a9lj=VO^KFrNWjTqvYi4onNHnH7RX4;qUG*o<~FBChGc z$w03jfC0JQ&)2(Ej7r$>3Q`DyHeks29&VKv*k)PWrLM_O1fw}_ch)E-Y>dSIgHQrH z>l+bHt92HLEm+CvpfSBluJniA+6LbceZbYWy0-^H7w<_MbW%v3m^07b`D4rHi=I-> zPP~^*#N12DDs>;tY8!@!o{v}tPL`pNqg)Bao)lj^f6O0W)^2^BS5)XKHGdlJhc!(? zFyf@T>hO2)3-L`jI7NSDi1d6s$}uMu*&kbX;grp>HemRQw0u4L3OQyMT_l5!Y{)E4 z6c|>PT_=`aaJ=Y+tUpzd1?L93lZ?IX({*F*#${^&L*_ zY+`X0=pZ+oqshX6U$!)?_LiatQWL~sBtp-E^}Ddcc!6^T55%~52}b%yf>#@}Xcg=W z@mp}k0H`D9DJ=TJO-i%eGR_N|`kIf_%yYRPpKlnhrLNz90YA^UX52#h-dD3e8?pEl zA;FCLr$_ro1(7l@I%v?r=%v)eyu^Rvszgq=d!Nc_%n&+_L^n9UW&L&-+C^9~PeXCP zr7L5P>pnmAxv+hsVb#l(O2bhV-WakqKo*kscLq*8_kU%}u{x;2bld`71^w=;&{2fw z0+xcl->t*f?B1&?XuDikgZ3mX^Fy#&{Grb?@*S!PdhlWFNKf6<{zrD6A3`EGz1syYI=4}_nvb;xMfY! z%H}%8_x0pCwpsy?P!?lJh=j-NB_#;!q#faGZcO6q@Jru;g{)f)uirewY!Z-jdm3V& z=lY@U4l!}1d??5k1-=(8(#BUU#{mSAxrApnsj2r z^JmzbjMg(4T3{jubI4^%we?MiDKa>fKbnC6!-#QS^Ogc3lt1AtG%(8Wr!+N08#he= zInBZ{Oo~a(Hl8Nl=zsY_z58QR^3m^%1ziC5AZtmI2IC+pxMafYw4q~n+$BaijJL5g zO#*>&th0ufHSmI$@jy`HiKmVNFadfX0*e`7_?vnaxl%ctygEFJG``B7B03lXASvHm z3o+DMwQbu4sZLG!R3%ibc#N2*xgJAjb}r&Qc#?F-7K^Qq+xGBd#nbA>2;AlP9Y1WkdG;dRnYS9qxzw&F=YFM~ zv&d`|jLMBEyxbqpZ%JOB%6Hn&&>^MgZ&||y#7>Wqkp@`QTel&Q)Nl6SivT%ODgM^D zx17Dc5pF+s*i91pY#-#wz1wd~dmY|+xSfD4+~0J8xIGSx%9|uwc9%B-n1M9u?G+XT z9t&B+LNXOiU`iNONu6KRb z%$yg7qG5|i(^2eVg>XcKfe}(q&AodXl*mM^w9%gO&uf^Xe6H|=dh~~mRz-+mZqxn zG&99ibVu;l-**5njghv!-i?#FomQ(ol59j?o%QZ=P`xf2&JRps^1>Q!U{pGHKWrCj z1bwIU-w-2WSVBu3b%cwr4!jPUBtE^ z`V1bHLIJDfrzU3i--!OzJ;g31n~JVaXG;C)Cl$V$VYmI>3B0ZyYSO#S(P$x}V({pi zkK-;P7G=>TQ_NPF;aqVb#)%OF?66wf#tosRV7j<}XwyV#KDd5sIITgXGf*P*V!Y2T zq6($;*h&xqTw@Rq zA_m6yD@`QCq8YA47@Hf6)lrXUa7m(T)zy0R#Rl|) zJ7Uc9G(-c&!Yut`a^LE31l0FzI- z)Te&!P>JKQWikyW(vo7sAd=B@;UB^);IbkC3oBrr?&r{fkpBJv2v;zn1b?#fF_Cbo z6@XE)sJ}I*;xZF;WEt%HkP55!U~zG;n><95ZIkMDva~-$A@sf#H8S@6Q|d>SC`ehg zr6|Cc2jEG1Pnt>(!$U3FqBS0XKlN4-vC4aNm^4MUA7@Mwr}ua@=x216sQsO%_iSgD;yU1>ke7j!qzUb#&OS*GmPTer&(n1Hc>+UN zbc%jo^&DR}ct|JBNGJuC`Ju#!-6Lb&nP<*nKRxQnD4v&@!&Q*2u3i~7g*a{TgxWp^ zj_bY|&@>N9#ykzaq(LixE5a{SV6c4)7efTbIUns7{397W%i_t-&rxPgF zW&9AJW8?GMgE*hgJ!ES>_Vd}u_;ME`ON!vjl~Lf+6}f7WRu`<)rFO%26%+R3Zzz}E zyysK!`OBC(9e>ci*?pWF^&=A%v83F$uoV*kmP_c~&88lXA^7y)u^}Uc5 zaiA2amZfN6!-7hh$AoI_wH%ZZInu0#?FmhEjms{r1-@dcY!%Ekrr4l*gzBq zhawFPQ21ecPeVL?95DNf7*Pi4n!}^>l)&(}o8M~1-6Mj|bmME37u}&>-gha=s$Iug zFoHwGf!JmmeC!19#-HU-`Zp|+YUd1C;rPr;WnPT2_Z@8^&AppZSX?U^uqj)5WYwBW6tIxH!?dV7Xml;6Rvj6GGQ z9+CYHVgML0k**d>dipUIgfTUBI`sg&l?h2ea-a+R1TE6`t961CMwPc5c?+$k;*}J7 zIJ77^p^rQL1~I1MMB|Z{RO2tf+zbk_8!>SR3%8*?^j6Fh*HBm#N3nAony(Q^*c2!a?LLfl_{Lq!rdE`%c7KLyhP z5nVzo0OhtNW#&6^bL7A>66gK>Ze({O=?CIv1jX>gVQ8~qJ8)wLEP7>$<)?xTu z;D)swl?IC?pJR*~a}-p#qM%n3MqbjN5To&P8x2c5K7uU$8=G(xEqKZMP85QxP-t9! z45XvSPB9L}+i#xSXn6RZMwWZ|u22h?vboun^IU~2Kawn;%MTo|dR!=Z*pum~zopSP zH)99#Q=N-*PQTeRS$!r;$~`GPwVoag6KY#ghic`fH(e^O4OM_N;!EByOH!K+%mq6( zA6l>Z-$}^58}1kzowwNcY&(b*%0pA^+c)8$8S zJ{lNRU^4u~kSLjlWU4DqU#JDE`Tb%cV@Duxj^c0qlF|B1kVEWw(-Z7=D3{=~!)oO= zgT3JuaL3qDSL}BuA@b_km0GE}khb%^CS;}Ap&-jI<4`~w*qpYa<6>Uy+rlire}v@A zKqPGa6}FVl)5d$t1amOyFsQK^#AZlAv zQA@hSPvq50gHkSy%JG9b-~N35UJ!BvbKFm!{X7NEltxoUajH&cEC(&QKuAH|$lzjC zJYE%PO$Bl-dA_z={rE7n36bFXnJYNzgyr*#MB`YLh2f#~P~=SF>DqpDY*`@S!6+bvJ6i(DQE z@bF$4XStb(E-DLtocLhhqdXN|F8mp5f6_oX!&VF{D zc99|U?4p-RejCRjoZ;aXyCnNP1ro{-7FXhx%uORhbEdgyp_y5i@@+)Wn*}SmgI5!y zKee!j+VE>_86N=105Q1I<~qxx)0)N)9aq?Y1p)Lb1a4(?d*Oa-Mpk2(gVmSTWKH~e zWhQC}J9w*`wHUYbG_?_*>BelX=A6>?6Q6;Brtm;F;hP)dTxG2L ztz{1v&p)dv7e92|txR>5M{BB}T|$jgS?F*o`+Zr3s2X_UZ*YWHR^Y#Xs%0zIU`@j4 zJCffiC_JG&Yhl*bJ|As~S$bqKt(y2aqzlGhfXox8WJl^g?=+b6f(#ma&j-pUq{OjglwQcDosuREMw=TxX>I zA#yydNm?IfvvOst4XXtT&sWuK)=<@()m-~(S{1GPtn%@--_0dFamP_K_vU@cAw#tF z*-zz5dx5+B5#_xVW=dfoO6o9MhYf_1Yn;o$vivEB+_Qj^p;8Cd(=>OL0ro7tgMAG@ z)@aVyExu|s6J1Y6vxZnQdZEJ!yr&6;H8pG^z)_z z>;!%M?zhNQbRLQgt=h;tOb_Pa$|Oupnfa9I#@9h2-=&K5=SzmzdG+go2t<;qffXw>gl0x^U6zHDiTB>DNpFe;jZuvghWQg?}gs+=`$KIwEXt`LWJ@UbJ3FXzfVyPSPC9%Tjk z%Je(C**|KWQj2pYuguwiT&N1M0N%Y!smtza`nK?HT4`ps_s_af&RQButZzC7C2WJJ zs++7s^0TD>vVEFU__u$8Bz*VwgH+m>PJT^sO>gfrdH9BCj7!3)=P)1e8Bbe%{4zwl zz8_|~AZpDf4djeJLoH4gVj-?3C!nUkayEOc5tHS#G*Nlz;A_uN?9(%Fj__;Mx&Gui^soj^f(V$|JxBm4f zip6Upi{^K^oazVHNL{?~A|JFee=X;RI(Vbz4JVg^C>nLNZG6330>8PQ;P-X?ElO}W zb)*4FaCSRGzhR!{NBEMm`E@u8Y1U!zK|Y zcfMtEz46LA8ETq!f4jWiVCW*;R&(L$DT)H4>@T0h7JwSy*gGem^w-e@yRg1`r+c9m z<>Qx3jKbjbJGUi5-Mn;7-(7v#=L{Lfs;W`%ju4rjFR0*0E#<@L-=lV?#7J$Dec7Fb zCz8)D6$H0n5kZgIUBAETqB0&Xgk*DEl?#w#T5;1ITPqM(s@WLaRKG&h`D!@KlO}jd zW>ZE@uxwYwe3ZYV3iL>N?N;DvU0D^%GD$J4=pB^q zGP8QXni-t&;%_h7cVTmEa-8C)epuKpYlNu^_-8{3$An~BARP?qIWyA;8vPd|WE)zI zN&RUmi<$zAR@h8yzREXnbkQO+J=uZcgy=Ehi^lID}}0)0eYV=oV~#2b|gkZ6*1}crs!UQK;^BPZw>yy@Mb3 z&jJtNqeMJrE>^NYk$Lu?j*ndnSvN@dm>QE@zv)eu@mdo*?+}&!P#m=Y8bZ*n`L7p z2)?d9D`ucDOre8r7ARM>M%Z&UaPY-eYI<8|ep!U+>zbE}+>fHUlPjKOzp$~M3Sp%; zwXQlF9gj9#j-VQc@~3TJ(!j9d@Ry(eICcLUFO_umB9ztN5xHWwXdRM-XT8kRab77J z|8({)VyTxiOqXwNcT-Wlg0H7Nhj|@+p9?o{ZI}?;oiOh1;$UAMn@sAjb^;5w0hC7O z)R)EV^bj?>rL5Kw+$15f&btF=8lM&yULlgx-`wVL-sHx~(f>BOajNQhUoTgEl-cS> z)V5Lvr?6+UfhrE5&+Fq!nL*IHcJA@eg>6#Nkrfni=ivwPEnV_Vum*A|juPh*zaq%wrph4UoJPX{ z%a?AxF~}f^t>VdD+`^52+;&`V&Y$WB&x}SMJ`6@T&Eqc zO(8krV?z&_+SLi&K}CmBYhCRz*M`f4mJ-2_K#K!7Zq%R}R#dO2YH^ogC!3+f4ZrMK zNA`n(Rb1Fte^5C(kkshcOmFf_b3BS_d@(En^$5P|%_nAJ4V=7*X?r0jNf|39#O;5` zP&rGA+i59*1>+^qH5fqz8tPjg#>1v zYAjcZ3o?SqmNosD<5KWOt;m%yZIMeNv#J~&Zph%TWJ)0Net7^QF)iv5DV{!8U_E5; zzyGZKaLd}s$EHqA0ZfXn9)%K%tCpBbfM7>l#o7pjEt7JB3$SFkwzTC76(bRX)NVJ< zknYd-jAMK^x!GfGWp1F8p0Ovc9C@``w&`m5vzgoG0E{nxZ2&o7*SP+~2u+N)imFO# zXH}}ui&^6Q0R*$j*_lD^(loCrAh8yCUy@UKN8Ic#^zG7bA{b$;$tf<7o>^yRgiD*^ zqd?hR>#Ol>dO~lVcy#@SlumG)Y4hav$39TirS|FVeGjM%S*#Wp#f#X=E%X3yhyygc zk5v$zbrHiKUH4x*tUrQkQ3qxzz2y+laI?ez<0BE?|LPDo2w*}T@NZHIrbD01L<;*RWd^xNNp^arfJQXZr}U%89KsehUT9|Afxji_m>f( z1(l?((dKX2X>_d*Bas&Vy44}V4XlOg(Tjb~%d$#>CJs5B-PxLrtaK%7k>~u4XUi=0 zZ=XyI1Q}Fwp~eViq8hh?=iSIY?I>U<(bC!F){(++o9(rHndvsPfRI!a`;Q@`umV

Ce@7aF46-+w}P>LFJW+%=fKmP7B*gLLo`T5({ZC;KVE*`I~}yLTkO zq4)>bu8o=KsLjCentNWkrP{W`f>>VCtO%*;IA_>8U9;xrI z!TZWLN}vdw^#ocWwR|$7_m0~Y>z3AKy{wkxlWw)iuXI+&g92sa_Mv%hFYtdouBcHN zS3SW8*PE!;2w72nG^ZIQxYB~00%F8?x4{S@?P=M7YlM1}B3AP)cr9IrboS}CC;f7h zwJ}!5l+bc0;k`)&P|dCy*H2QnFRYN*O*&y+lq#OS@IS_ObS5ee;P|BdjmlT9p?}mH z1$c_-g*d_JSM#TExcHj77bcSDdVTg;LuklE_VEe{sbiX!^mjEWkmIs@-joZ9C?WAR z%RbMy8gswqQ>O+oz!K29yInbYwpwAu&pfp*v>+R$XMfXqyF5;*w{*l)#oQF>>sMY^ z972ci#<*^cTVywUBEzB2?mug!g=aI5ABi0QIp~94B=9@W2>{-^Qqy zfm9dsap_%X>xo|xnamO#W2tcCO!>2pcSo%T(djWc!b_Y*>EZiRD~~5`@mHZs9^uvM z3zim65-itQ;dVaKf5$ZgWhll>C4*l#z9eL-}Ht?a)AVg6Z zHBj((MZ%ssh|9x0(GsfmM$O}EG6S$=OhX7I_~ao8Og+JWzD}eXbY zEeT*7vIyz_Gq~fUK>;`Nvm8SRH^cp-#L)3RsC_ks^g;MT4SggaRrHs(*EZG<%9wCP zY^nV?fJP4YM!Dk&R}9+{6NntN*7*TIuA4q5_KHE+oE%E_I(JOKF(%!YxiOgX6_9H= za~GZcD0TSt3ZW*42p_FTSM+}+}gA5`_CK-yOdFC zcuzqF0VZt4wl6*A(|rt%C@0soJh@puiowby3JHCu<;Nir!P0XG_-{$PsAHc!D5<-Z9*>46JKOvltLS_W& zP3$_j1CR@u(tjWR)d2pqEnHddUZkB;mgA`TCh3-;L{CktK6@?t6c?KRCNtwb06nh@ za#5>P@#9pcMG*@h$}V0ks5q&<^DB(mlfz~N*?z4X{gGsHC|7?4V@u;Lzkgkh-q5XfEF6g z9}{i{0((+8kR{>3xRFm7B)H)GQ7WKw|K$K@Bgc+c*p`)MRb!pw=w=;sYE4zih&uEB znN~mCXd8Ji$lPgJO!If%R`%FPTt!P`mB7}5Hf)-I`$H`|Dg8(BKcB@y*(q`i_52=> z^qkSRcv35^){1+98P!9w4>pT@-)eG((c@rO%@@-z6J#hZI*SmBfgsF`DpPCfP1wr$&-+BQyY+qP{_ZBA|5#yijb5BF2@A>2t;cGg}ASCA7& zfW?6Y000P*5+X_f0LZ^A2ml)LU!vn!W(okY3kPl4GPB*TyN}zCbG)XV00eyAFE_h`p-BH9nFq>If`CEC=~sZ$ z%;wits62oVajxCB)#Dh<`)ZIJKmc`%=k`s3SO=-n8her0myfjhul(@K&{i!KD0)7q zKqavN!)yg$)HdYW3#6+%NqhifgF5v}g79S|{5gDHqc z7MSL4AntrHFXI2|)vni);I$A|5p!tOW3WJV7M9>AW3%rU$qelnA`ghDi{rM`=-S%o zcdE45tnQr3QOiUWRI|W1-}vr<@_8fmjR4#}8;4`Vg2xM(k`|*_#pQX1v3WnyqcXh@ z;un5}$d@6Kh`?qVVRy9|R<1W$h?B6@=#wpX-=(c}-I<8|?u@gR0~z%K?aEyNB5i}+ zFajh6gf-JabXyHH4u_k5^Ic`R_y3LM^VGUAQ%03!sCWLhY}?X}5fdgv$? zN4(U)!={n+wdJ^;1NO;dH4 zqF&UsYUYazl?wW13rP*Dtv zUPdD&gh{>+3FjUB-xl>(GR6rRg4kuE)d|A^Tgg%rxzz~CXsHz}u)^Gs!E4DD__ai~ zp4nnwaFiVX71Du7tIPRC<-)ESwE2PEh-@a3T45LIY3 z(2nxK*#L&>Jca;6a3M0$5CLcbF;D|Ym?wiax;4?Sk83ZGP~;D7pfH95AYX`0yT!(V z&Cc4Fk+0-zu`ZvXZCPdCG^?t39>2kGKT`mjq8zItI@7s<-TmRFP#TN@ptWoPc3VSt z=!ux{2UznV$osGZ1%fnm&rgVqjw2Ktf^qGG)br{;B74#OU?DKC$DjYmZ~|vI_ifSt+1_ z2AF60e5(13*@p04># zsd`gn_4n5Zv%mUxW1rKKoO`yzifhlWzGrZ6&>Kb|3}Gm`K?Wc*A`9LMB0fX(E$?;^ zDtQ(OO7mm2pC}4XOOSbZalTbN^cAxZ&ONNSGICqaO8(=1HGBCUj$o9<&IgTZ&fnD# zto%w;um^Jo4Hye@4O6rL1YwYw?~)mob{Z?h$9ga&G=`^#nU@UailJfr*`FetEmid7erel4&j!nL4cs@x}=VeTvyFL>f+gzu{#yW(Ji_azYV0WYuc3 zEGon2U8=_R0q=1hmRz2Vs2g38a3jP2xUX(rSz0t_tMZ&%Z8#z$U1u+(T!wLWriZzj zzydtpw!OkFipR#B`VY6ztGGUuL(?!Tlm`O^KwtwQcBjs#78Ce4c7HNj{y?<|OVN-% zX>8Rw6V=XS9={BzEQkvSFHpqwItO`3dH?o(fc4=G&;$A*tlW$J{k*@TAI<^bJl_Re z=?z|kTnfOUQqao&mJp@ENy93fSD}W`0*nKBxf9JT^$=HcfMFCOZbxoD?Xl`+HWkmnWm!x29t&CR07Jv|0!? z0C$!Nxg;QHpNRUy|1(a>4!d`S*Ve=YheuwRqG)hV_5=h?B+BuyugW1#M(U(vGQO-e zmVIZC9O%3G2>}4xt%E@W2`eBp3O67OVhFaXTwwsy>Z;7%$G4$OmJ%o>9oS_lC;@17 zq6ykz;ams<5Xds_0C#|zRDDyq&!Pl4y^wtZhK7J~*a3Jgu{D_V;zNvvwx)!l zeM?=NDc6B3ds=D)3lrq0`7lUm^AJDMe^w;K@>6qW#$!XFp!8SO_^q-e=PWLloM2GS%fX1&bYRCump!7tVxhE^hmLSv}3;<-2tePIYePrPL3R z1g4e)j&o@nQu_vEXzU*Yr40&baIEHFk-_D0>{8})F2XIx3Q362l3)*99;OXzxvE=h zv8&g{StgcS_czBZ@QRKPpjX;M6X3u6&^)E3f*znLYc|dDjQ4psb^5b1CM<`e7mg++ zE5b5RQWQ-Vt*g=Ls|`A#r)Sjju`(#`L z#IQIG6Hrzo$B$Fq1;zR)%5feAWf(S#mM*0jNl5}~R5Z5IIiAw-ZKzr-g$wIH(#1DT zWZw}LnnmtZ~~$r&H$BY z0ODZle^tKjVppi zypSxj)oWYh_Xv;K^eQ_ZJ05=(0IjbY00oj%Akc)bNk*5;V01$eF`&;F6nBLy|Baz* z1eYhBm;LU%@eiC3{AvMe9M-_80fEahi}c^quk(_nKh>Wu4)WHH+#gPxEiPX}5J^!T zRFYG7?@5Tgm2H6JS$wc&7MOV3RKwin|p z;4Fg*V|83dANPMOFthI8l|%0@jCN{D(0$wUby>*p(nLi$3TT3GL%?6+9f;@}V(7hR zn|rNYSy;K|FxM0=N>D151R8S-F8(cRoPcOBBvn&Xl84H`XWn*VQ2WcO-3rmx#^w>X1t=88tTz{nnY#rwRey#>0< z=%Ic0tsP`rTt&kw7SWg=ucMlm^_;g~6&d#3%B1}FK7 z0i<85yVQlh2*xVK<%XA+ItfiC^~3l;9%3=`&;?ggbQv8;si>iHbt~rPn^4bN*#x&A zhVRR#tn>q^*WMo*t=U4F?j~-%&fh6C0-Q`jeL+w zrJvy`!|+4gnf)11hZ3Vn2!Ep;ntW0tTv(k+twliKVM2ig2~6wI=zT2C2K2jAdSsvw zlrNq#b`G?m@N(YDmumr~oz=LS!1X{yk#%jGoxt=ezbS7(xc-zJ_bD>Oia(lH&7rg>h*P zL~wz4AV5bE>5owd3o!^e>VPNUv8ra$aaD=_3O4O$VO2Q2kmpRJ+EjCpFBM4zY_>iq>?gRf_~7?VK+ zOVUh?OeJpEZ(uX|ka+N?kbk;4a7sQYPAdc8!p1uE5R=WVgYpz7@xle+3!j%eTSJ|+ zZn4y5!^~FY`^bJSkM;bSp|!!uH>q!vt5&1)Y}9QziiL7%eh@Hl_mFlat$}}Qyr(wW z&tzu=AeHXVLA*gv?l<|L>oo`PQ{*xmrZ#Su&nvgw-wSX{7JqE3)RZ4Mu(nZpZ{(#c z-yRdEr$A?{p^#YKX2PJT;DVY}TOTe~(({_xx*tM>M$uteVERzDfvz*%XES@azsp7rG%?ar0O#Jj@FM5CW18hbdTqZ{zEZ zw<1#S@QZ1FoENiV`#es_7p<+g^ogN{tMQ}F{&NEYg`6`ZiG-EpCR$YAtmJ9hIL#;J zvYb?2N(VvDCX$=GSTqC6j1?^`&oq>cI;WhUYJSk5AXtODe*V>bAC{8IgzS1X-KM&# zOPTuI^_El4B?UF%h8HhH{FVA^qcw#F;iub1!li2XZ~o=22z`v?n*xWSE?Z|tHd6uc zA?3h;Q0N_hHZtFrNv@sf)ZF7?*-8-J5RrL*detK|fnIFCAE@;jIEXfPU+>SMk1e_g z&n%a38~df%Oh@zKsvL~O3bK7QN#dz)lpkARg%hhZ%>`{Yblhj$YdhC9aoex2emC{l zAUxeX3$1gxSyRs_hZjFvmE{yQ8j7Z}d;}$rGWPk4Rmt3yrDc3*&=&YG@WgWK!G|Fs zNWpW$nLa(G(doO|3czalUXkiuPZOEe+VO2!!2a+&$RY&)_xyK;2MV!d2&!0#b24p( zn9R$Vp`PQmWcv<<)$c3f&;>Z^kSft}t-I}_?T1=0M^vgV{6HFFn$*vE;6a%vu`JJ zi@|OpJsq^VycnqxylL>XJ1lpr?egE=C-g1%FHQM86iN1&pu;@Brhm@EO?|919K&qC zIauBSqS;8r&~nYA9c*LWA2u3kk1F`=pp=H>cW=cEzxOE*Ec~>XBS@%2H6l}4cXWE4 zM~5uu_sAVCe3k9U@@g+7|Mv~kHaXy#?#F{w@g6hUPxV8VXf7?hB(;o<G>xL z-_*Tw!2!sXo26;pvSn^YAe#H?!Tj%1qHlh`c&EvR;pY}@oivMsHL8L!>Ar)yuKoTN z{gSN}8ywHR2~xq6H`5seK@n~wvtAct$=H7F?EK<`@lHz2i;cyD8$F(v&f668R)@Vz z$BK&~8ii5#1%tKHweX9UN0@V2hOV1$m{NcIm)H zIL=oCsp6W6-t6mo?02RWm7HM5=8;fg5ILe=5N0h0no4h#Ixh$$3bf2>P@f)i(Zw{q zw4bZ1!@~yU_ih+tAP%<;BBpj-xoX$P)5xa$MkAg+7a1@#l@!E0%x&J6r}}g0<9+zr z3jlT{5f=-0Fhu?ALrJ5vzcAi zIw=~oTLqu{PV(cqQ`}JP8V?FQ3_8gxL$9v5>vr2$FrLloZNGuWoyUdLIw+Esw42TM z@Uqci__8+e+rnG7r8Ssyq)(kA1jRdFNDrJ&B1%h6rN zixG}@y7XyA_T2Csw!9|2|8*kae}ZYro74nAWTJEVJ@pgo3&MW`ND?4FO_+X#iZo$XQEuEpsEj&mAu{7 z#oXI?Z@i7xeC$bx{f9~dkFb6@)h>KZ43-Q4(9`EpQ+N*d&4KN8lowf*A1%i6pt|kcWsY-?Ies=;h`N|b0qKp$UDb8 zUV-0jw_*^)sLwNcd6pyu!e#?MN-Xk8lI``^o%4B)b4q>o|09VyJwX2*ma(_qW~^sE zhn9^5jsE_+p-YF*@xZ~X`x2gDaXxOyf1^C(yV$6nPUm)z$A9f7w8uBx8Vg=qBltog z8N{?VD-AU8FP_&5z^vs*BIrD)+j@L(b+hQYEzv~9B&RDx z{7@*r`JVeGkL^JCs9+W?@;u4txZaea2-re9=37kDAQPyjYFTx|ID0ig^)7IG|5=wW zj6AN*P0?xxQ<{&CtD9Cu#~PU>Sb?F-Yx{FlIae8UH>VxWSeklSPzvb>biQW9*2*oX zj{8jGYPMgB-3K2CymjNC0BUMhqe6hD^w&fAkNic*DQMU}Y-2t9e;*griTFJEcu+QU76W_1-Hk-{_2S|+)i!D4W37mmzIf0*YsZj z(;@RRM@PSw1TD$YmVqTDTX6*`_xj|SagTjn>X^DVJS92_Ex-Lu00yN1Cx9B~R*!pk zW#9AY+{>D)ViB5bW}LgIN^tvm?+I9a=U=0RYx#@iGx|KbNy!AJ#F+4D`SOm+1JoLy zW&}`xW^}4L^c400eLy*ybbS$uiy^z>ViW|xDs@a`h~F7?_XXv>PFQ&JRtIyO7x^xP zdl}woa-izQai}kSuVWwZgu=j1WADXrjX}({{A#OgL-Y*^@#aw+o&S(2;1ReIle`(4e{lUH*zs5Z7y%*kKu0(*Asi}X#0mjXf5!{w2yWcneEeNw z(7A5MIo0h106@?{a5Y-%Jbjo*%G6Eh7qD!^7c>5oU+_eP;^c3(zBq?95ur?xs-i*~ zhM1~g_=u1>YFtO0T>Qn&{03;c!~l)U?A)BL#Yr7uz+gDQaaiB70F;OV1u;1ZzI9}p zhmYBMqe;d=k}@Ee4A~PfXHIUT^%_xcd%7T3V1nOPhF>2db9L3o3& zbZjv@;L4WeJh_H9SqB^DXuicBu!<1>nk;}0*dQT>2Sa} zlEvd&=3!)lH3-V3rGqrnY}PGZJU8^wuPjyAWRI2RABEP$XvWxm9f!|3IuZ+uF)Jft#0Qy zAC(vW%+L$pr!8XxD#Kz?IqUFq05OO0%YE7_4w|NvsP2b)KL;!xfe+$q-n|r}iHd3d0m8G_l8rd(aUQ@bdYocN)z+OlZre9RP zPF;R2;o!9(GeGShMD~oDO}`F&=WwgOJEoVMxt0uFyA{{-UiAeGv^4;1@f7>~xC;_` zmF%^K?8aUi(od`%w%+WZA_6J@>=<5alRUxf7=+NEO1Pz2p0trXge#Bmu+#&2)#t-& zU1wvOwFSA^E=9yAO2mZO34U@}4mgbvVEgWu!9MPc6`o8^jpR_Vcil3%R#^zfCko)v zz1>WwB~PkfKO3CSb`jglb1{j0Hd&Y+6DKhCsZl6svhpzd4v+LWoEh&=m}GoRz6G`H z^j7k+Sa0Q5KBKJy=(7_uWrq%6a88XXYgVF2{IxQJYAXVLaM)3}RX9w~ z9M*+~^xN`F{&cy8^(&Ld!1uCR&&yPL?89n%M4#*jp)et!b|6l}dYm?lK!!FJX{*TVDKQr1^1BIzcxmg5NZqwm2?6U z<}3Ec;bv>l`CDia*P7e=^%Em0h6R@>y zU=^c$7cY@nS~#>jj9AkDSkEue)mB-UR!wiN9#96$DnGG+7%&)8CK#LIB z=@a_1V2@PkD;w+a(Q0kX-ch)x-dO;xi9Z9%!SVqxD^8LkwrCczG|J|z&qEAN>V zG0df8K?))wgU>Jt91eIY%vm^x6KNpFphhNTaeO}bdmrj&m;dyKQS*Hi0}@oFHq00! ztf3TEosu-c$MORpaGC~2#9<8$*wM8>k{C|RlKbOyi;kO<8ITwr?%WWm0~K8(p3DUT z5lq%lR)vQ{BT@ePvo9Yc1R1tvlx!|>&Vagx4HzLoBx0xt0RcNMXo}olzyKcX`QBV`uz~eeKFbn%& z6m-eUXz8QU-F%8Z*#>GwF#;}MtBZ%Alea$(c>+Srj|sqY#tqr+WP{}9h0s(aTI1Q)k<)pQ7L-6nX! zn_>J9Z;lO6<49f|_C(XpIgQ7SeO$dvkGop(96jH^v!IW|^=LzT_OB{QYRh>R@20AZ z#%w8opy5hzMbf=>nyQ4d)mVhk<6sZXAk4{bdf zx?~dcR1928;rHAFlJlM*-0wXDUxE^F*E7`Ql;6#Et0#0mF1NI$GimpWFG?NfVN_py z@<{6$t|%2Da$<%Y2{@d-D?5t9H-3e}U2|Z*&qs)}!+&#KU8}UB4H$x_pS*`lV*`00 z2?1CFF3?L$hhi>|@oQ$aud;LeEjN*f)TSx?b`DF7((CRgdp6#aRUzX_?$M{!p_$E^mfMIw=){o9Zsw{ zIoxgU&)wp6a!`Qk)0S=MFYH7&YUQ($^BZ4jqjovt-yr~-_D8oL+cSdit|OBhmzE!d z3vV87*T1l?5^u+5>S0tccG7-V02b4F+pb&9H;2{96BE*x_S!0^b(f|K^;U)x^(_vl zTS!$@q%h2$Vzid~+wS^J`eDTN!{+;&+c{g}s<9qLMG!$iXFB@(9FsD$g&pfSH;n+*Vs&j66!A&CDZ)(Lwee>#hhmSRjX3Wo83=3F7-}VYS_hzSV z<*8;gqP3OLYPE`j(4Z- z?~D}>gzOV3D?m<8R@JIA2+Fd*puzJQ=Zu#`8=1t@iiVXQoUY+WvD-?Qv#&~yq5lcn z7`=L;qJpwm=X!4EzW3Y{W0Go~b{hwEwtsIZr>d^)xmo@;dZTY#PJyPY%Z3R-vs8lf z=RO*<-N_N(4RO&q5Ys%5Q^~61)3Ac-rQn!MfYJ;<^jOwiem}QSVQ>0=e8^1xD^d-O z3nCjohIr6;K51>vj3+j!pw(|MDN|!b3KODwpK~4&!dIiaSDb6i?wLtCWNzTT`2+4JGlML zcg!Y_KNDE67$Dd`F5Y2K%Vp|i@&!#!=yHX`03zVTd^N_VQY}cW>#f7*x>YU-GpZd& zs}$TUi2@quZ5*N3zI53y(!(EeQqe~alyjer;ByW9It}F;z4*;MV#r2S$2>dWjWH7x zM4Id1X51#XzuxV$d)v6zqaHEi@RWY*M%H7pOkaR%NHT?@iox7sy%$XXd;4297R!xA zOfEZoU|x!pYpwqGU_@Wcqn*)lNHli1TwN+qh7>t^ZDk=Y>EDCpK|%nm!a0Z;vPuc= z0s|*bG{qLHy@|!V<50@UP^u2a#hO27Oog`VQF>pm<%i>a{X7d z&*;l-vV1E*P{fc9tIMogvkUtNDvLO%%zM%N6QAjl*A4^@-=jjI&a8ch<#<=sI2G;F z=q>#G(r84mKZd$D49nlCA@HqN@0t+<`po)L{2eMnvyZoJdOoo%jZUomKJ()>Ya%G&D28%dprz&g5%Wu zx7aWB(sl0Cl8pn))OKu2T1aepq8}50%h09i+>u>Um}T8L^7rEyL>On}g3YdccUoY` z1znpnru~=)k=JnS6-MobdE~7qQo~iiydvhl)bV_YRap2@fabx|bdNR*i@52`AyV@g z>qst{E!Xq23R*i*IXh-iS2&aDpw%DY?_blhuar*@Dj{SCxA;c4C^c8{zifKn4mA`y zWmZ&0THMyEsz!>FniKLi+(^0aLr0&^FP97MVeJ)H??yVW^1S5L9I`*9B4j)}Kangq zlJ)y8!nyP=j9F?XrahX%fW}m%P-*&To2(#6uW#RjOJFMm*b>Ic`du5;rQi#*mrfk+ zC-v|zg2MRR*F-kb52&;XRq=+f$uaF%n!e#rM~}TTrqPU^C1%@D0yUAyzV}Kx2t8NC zTT8DDLPNi#pLirrqifnZ+a5y*2xgU0k|w}b$Q8+33$1W#dLW%SZ=c0Ow@r|6@;v3cJQiZjl`iGOt;ag997NN@X)j|(9n^ghb)cG5C|KCm zypG!XA#m{XRzVEhGQY22_(N539Uane{M-bQ+Gh~!u5&TWYa;(O_Vn=j9m_sKhe5Fj z&O*dh7?Y;+!FgUyzz1JoZMM#B}O-BV() z(2N9xMhtB2k*)|@o&!j7aSFgcNx$R!7r=J;b&-Fe$SpPQ`<5Aa;5_G@|p`SGF5rqpWp=b}pSzkQ+l z@8XTzK8jeeLA;&8MqvN4e2&le^R3<7|EZzxR^5+OpVGCt#BJNcdJIy6!2YR!2p8G z&2adm$)J{>i)h0_K9mS*oaDVt3b zV{J{Xq(SX5T#xHz>4rlwQe!Y^3^|_SPqyfgm`5dc<%$OLjsOJOLz_Z5yF_l|8;cWb zr(mQ0l#+7VOLe2OOa9AN?@-&`(62XEekEndZ8_Hsk|_ma)ig`9L6U~2jv2GD@|^d> z*MABONrCqnjN^r6V`0!Af+xQ?etSj8L=#Eati8I(yp4Sy`HJ}!{ZZm0EU#@pvcysM ztdv^&x&DWOo^^5h&$Z(FApOPa>lphN5=bwvI}#q$!N~P%s>aqGCB*_tzL4}9%sMqv zF0HTg06#-Gyg7S?FDJKhHc0vJ?OORBFt|6qe ztR*b&dhf>63vZsj>(_!=`-@u0k548*OfaNgTgyz$m-#HrR<7P3ND! z$xxlk)5>Yg5f%CafnlYwqG>2)4;ix#*gX)ksm@Ht?imTuYyI zVJyF?4PV}rmw$Rlfvc9+2c+rUQ#xmm_=uy_^jIC z=rx^nq`c2By#*T_(aaXb&Iq$E{gf<~tlac{w{E>DGqu;H4(NHF!Og8YR?+mG!QE-c zoZu&dy498)P|UVpIsd3)NIDq6?9cb7k*1W)-&z$p<@X^`JDnQZUWcEXy`|f(Y5+68 zW9td)k6R_8YopywN=g@T%&*6#F|fneCh{JS45Dk3!T0jYPX6040wbF0?^|2qdv-d0 zNTA!V>j%FCs3k8A*YN)fLVDJ}ddr22w1kbS;lU$}`7RWFtv4UhB<(;&i$2pe6z3fZ zr5QvAL9*<9=+};4_B3qg)EXJJ{H`}aR2opd@Qgs2y*Y~MbWquBUKPpX1QRTcg*j7~_D-zX;6t_ut$;8I2bKKfTAfcXxc}5laVTY#+D%8R`#bzi=PD zPj(a`ipA`LL<^-SMf9K~&V4OeFar@y$Cgbjub(R}ZJBxI- z`Jw30C*J9{+vVZk+^x%EgtW(JkURqL;a++ebAf7rHG)aREFIQpFHR?>*M$q$^*wp5 zKIq%p2uqq68~2j3qXE1{3^2(k1e6g>38Bm&qr?IyQ*+1&0Vha_=G_e;!Yx4{I7BI3 zUHs^RtBG`WwtJ=QdwH8k0MIl8ZtV6puY{k%VyOKi4Q9|830qdM2qU2xmT?_K>wcVW zljO>W14dI`Z6SC#0}=)_9HfOvVhjjs1+eJU4tx|G*?*1!>0_atViBa#lmI~uxcIt{ z>!g;npm1SzC&DkO%Y#EB#cHWmsF5_*!3<~W%xsti(lh@&`6=KF+Mwl|JVdlop0}$Q zuBgVUVLl+zR4(i8$|YOk=pscDBnK{~d~#y{WN37yePu*Z2ddKY7*g5=!deHe=HXie zA|^)~hD|sWCk2YVN`NT99*YJ^jDlao05kw(Xe${6QwN(sCZBU!LrB6B*~FU%A2#*F zl_E!Ttti{_81VZ0O99@m-XQ;R*HHuc%d_#nFHn?AI-AjA11vNphPC6OhT<y z-CVmrsn)dFNbuwcaU6leAEXbD(?^u*9S5GsLVy;PRi>raPoAb#fy}+E4u0l5V}1{* z_nk%7_U9)aR~`XMqrbro#p|)>GXf6v5dTDd4-r!tMElv{BRMHmSbRS-@&l8=;`~+S zTU>43H@9An?oX`OfCT|`e{{KzqdoaRyxV}0G4?9~s!HG!cs2M=M`o86xm|BY zMv#V3h9G&yG_a+2+ih&jwVHc0y&lVh@1l1%F!U@h%ZGzna6skWMO{wLBvnY{-e)68zEVP27iI>GJp;RPNMvd zb(Q1!u3TPBSC+?CjVvVoA;n^#thKjVLb0XS{c5b$V%(td^yk`mzlObkBU}Ums5TuB zKwv?|D*GwGHj5gL1uYU`a3WkqGSfE8cZsI|v2iL6asAW85hBl(LR1PEN+eKTUi?r< zDO`C)Pxn$_3awk?y?cE!;0e$T6YCrS^YlaI=nX3}0QsRLNTA|f)b;$pG`sPHv@u-C z9smrgib@wV@Tp}M_@+^U1W8N_TUl`)Bvu|wohWNTv#30Yqe+eMRU{C>IsY~!@D`0o9>3HWrQCuc}yEim@u!?AN8+FDO zIOfIo2|NK<+Cab{2abx;$=61*AA{|3IZ52F?Ui}ga!Nd`xSJ8Gbq$z-x5;E}zA8l9 z>^yl=d>%%(v{CftKRfRp$qOa8UHJ1Lm894CD=>SVZJ;?(o2o)whuP8bFrzSZ-;IRE_ieGffBVv$W8z|^dHB?F1(rEp z2>s`sBvB944Ie0jlI5s92of$Eq_9}j>(&aY?GuooDi*cc%c`^8=r(slV}vdZ!m!X{ z9X&lN+aa5?*wOV>;_Yda!LPokOaM&{kYfmN-Sz~i)b_ayq-%ZK(Y(!_zSReQ4I37U zxm+}$z{nw&#(0T+PnpfQmHFy!Q=cCx#iuvvSlxL46xfCWxew+qLkgR^|01*$%FSE; zHG&A?f&mZRUQ@0om&VSoF1p$}sj&-#B{*nQ$--!THg_zGE4=SKO0rDW{BUmP3i-F^ zEormPg>{Eh%TTg-dG)sbn?xpEnGxqN68#Z>R3^iukJT)L#0)rQcorrX;mjIXJODsP zoY>cb(ojZ-#nS`*;4Y)&xDUCm(YdGDS!~fQ^#@nQYeLKH(@H+gj_;fP`m(yb*V%Kg z%_v($(m|6;MZ?+>UBF?sZ)*(igamcg;YnT(j<3@q#k`qa$e zZYr@smhY_+5ZV_2s3zD;XkXkPfSRE$#c$>H-#yF~(B3eVWtTwlu(N#+$+DmNxKJ#g z=|&IOKe5M4q_(P5)Z=_8EmwBvnd3~PGR8E&PS5$ixcKR$hYJJ}QZnAND z4`7r04WGwm?T;b7AnifnTRL%w*4G(2i>0NMK&_kXpfqsLL!3AE8+Fb+%gAO5S!m$a znq!OuuN3Z7q|_j9^>@-4cx7E3GFft{{`{%)$?!hL6Djii;f4I#Put7({nT8& zQq-cIY`%qdyorj{V>I!ofqHrh*6jfU#u*9p$QzJ9=Nn_#%`phqAUI3jqj~E47GyTL zR*)DkwWgzDTxJlr6cRI2L1Oo<+Ct+Y=U0XTQwEAajBG%y0xru=j5B*drBqHDCnu7e z8Q$NLXrBe1l(?hPgiv2&?ltKTMhIQLV{E-ZfgGmK3X-CgDz>q35RfZ->%85bpu5sWJ>k0rAFnWfp1S(uqFMO$XcjX2 zusbt4KdVBzZbJpFRYW7H&BY&#-TKK%4bC-jKEeu3*hh?ZEmTnX+exe77lj5A>S%*h z5C&DqEGR>u=n)kx5ad!H3S6w|lP8EhlVtf6<(?j0SrEBE#TTA0XQD&oVh}n~HZT}TG zVFGGcar~*}a7Z)tPb*77T0%KoMG#iYyQZCk!s+G8ijh-Q)_pMXoHvX26K4A1HbznX zS~d?&oUTUR(=%J9UC#kwC5pUsMnGmP{D#Vot8Tsur(RceysNFA-*-kzzdo+c1YBwA z{p)c3(4}hN^hjR3IAMBNNodSZ{2UIpIs+q^PSm!AOHkQmql&Aszl;vXkYk&hz_<1v zy>bGJA1CYE@fXO)=rUIs$GhNf`k+deH-ul z3785#pBb7wjZiBb0PPa4THz6wwGJaM>cK^9+rX6M- zg#Fe|?@zRdCBRmdAuoxAt)Y*}3LVc!1N^dkXo|<;!{f)r{WC|@Z`Ol?wo>PtIM-y- zZKecEwbTt3AN#zUd;$QasG%LIgITCXoBn3=eK}{3(O;gXG+jOMJd41$aG9JJ%eftw z>v5J&aO+T7n>>rku12l=KDVfzX?Pm&`G(2^FO{M0H`f3g*e|a{dqw0sII#24ci{ zvI$I_9S{iD*zeU_1 zu=_?A9?1dDul0wC3;;k!moebmw1NKa;G?DIrkU)nMSHXOGqy@OuY22mok~Jk-A`eX z!qmcRb@mb($Scdq!y!|d>$l_ge#|rFY#WVYKH=c;GR_@5^+%C!>uwxdD+In^T>^t2 zoQu~+2_ji8Y?$VBQ|(N3zIvrNx~`3r&XTc(HEazZsGpYvKfL5^KOq?yA!@E)m-hp( zHJ^LgH+?~f+4R1i*t-->dW}bZCA;F)&@j)fd=-3rMmF9SezW+SS$&>7T}PWBo&BTT zmi0Rxz3x^F+50UL4H8W(B>tv$eTf{C;I{g{mnF{R@*5gW1w{xk6$K7IVb$71OIPW? zx3qtp@^jkJ`@rfMksC7wn>Tq`aCw8ef0M>dWMA3Of(A2HPOY||n(U8lH{WN{$86a` zz_nzmA$MR1{7Pi`rxBOluJ=`ad)97=DD~}$H(S~QC+`nyX~RN$>1hA*9LeWQeH?my z^SNS%pH$r8;uU^u)v!7qVQ9KJwoepl$7hShc4QnIK#*~{Z|HQD#|;w$j$(j1%#eec zT)!57?IDcZPBw(Ha941U6jy|$Rpjqqb6k~t3xdtBUTbqO{84hWnVU-Wd(h>ib;cxL zC#5J;_`zuYn(}>5_i}{b`M5%~Hq4&VjF8Q68EmgfcA)}0=8nl(-nP`{;ZtHVqQxPH z)@9s7x_k_4<+?W`rjgiRu{8@d_XR}}xUW=gWPXE1k9ml=)^>l8J_WFEFUi@N^O z=yKK;lA-Rzt&uhl=XSI{(0*|39%ebtT)lU(CBM4fX8x=5Cx_u#@4S~^!W~W8x12Eu z932*Rp!)~-MGnLUu90Y?8JGriEun_-86OgnUi<7i`Il3> zl_S%W5|BFJ880?t{5cvTF%aC77SbTG)FThzJTHpe#dhxmfOX8-x+X5_jP8{Ko4SMD z%J55M`#me4bSWi~PoZQK);!g_6wS`J zL2JK{JIS^1TXhrBeDsh9(JCS(&3%`~M9jI-6 z?AomZBgZ*A7&gUUM+W9Y>eV)nM42b|25M!Q+x%19+x7707<_Kd^$cL3kby)1ZKc|n zvn!x9eb>~$hWL!38f=bI5js$zj8K{>(H&4l1KPmdTmLrfnW5pr+b)TeGDbnm;;#G` z%yMrj)zBe3=Jk<{YuA{4s!RYBTt(3pJhKy*^LpgON47849etDl>IntLro^W!m=}!C zsRopOSvTX+-e5`AekA$x2UGrpacUs~ZSTq&hkRprLyfuaW*?z{NYH$`!~z65c-%ST z7Po^0F{FPIXv6hDcRwKGyiN(VM&Tw2E-eNDcn{n6*>V5dA24;-)LPRWOrE5lDe2Nq zh_9kxo0ose$NE-rZSZf5$7dKR7l?8byg5$yJ;co3z!@kS#1t>dtr=?iI>Kj%=BGOP zsk?uKG70l*NT|o}zsHoq0XipCYZnG8x7JqcUBMil_Q>r2YwfBZqUgHtF1vJx(y&N} zbSSwr(hbrbk_t$}5)#rSh;&GIvor!qi*zI1-Lc>L{te&nGxy%P=bo84@jTCR@!8CW zM_kk}O(GoBLZ7%K{S9r!TWTSoSgYNyXE>~qKkehaK^6jp&yiJw*P07Po<(WeJ}>7D z#8efloyp!=u8(cRmvw+la@Hn&B7F|vy+i)f+4DmnYM2KCT?BZ*#aVrvbDaI&cGRQh zfJj=U`HIlr>AnvVVut3ymFezf*T)RP?zklzr6vg`12Cw+1!AIZHpATO9LIgpO^=oY zghk}}32=h7v6R8;&LbmPOM(3eqs*|kmswL@GfNgf#%UqD&D_$_3bX1i2W_7QjQsn6 zclc+(X-MZj#RX-HUH6n{4534~ z4Rm)};&)g3ZaNXP8>Kfnd=I@*fL31=E$4^2j+#e{Sv11kFw%YZ40CJS-^Ol;PnNNm zSL~Sj)XIuHb%P}@u1xrVDTmm}4VV)?$DX|4no8T00VFYi6>edbCBS>V=yjst(+#JK z-P~qv{*<*Wn6F@{sp&D4*~Hgckkssps6OsIGwk{T%*n&6<$PObGFDE<*wTKvpqIrdEm*anV~UQYTVwlgN#w$?{5R@Rc-EIiRN5kyNnrrHE5N zb)_YS3a!tiA3c!k>G{bQXmLIZjR=ucdAW4wPvt)p=LvrdPdKH`0s|nXo?K(TW(hvl zGqP-9{KGksl?C)@sTpK<7vs!5oh{W?o|rDC;uN)4d6Lizn}Mtc-l8Q%o%VAZVF(oR zavuysy^cB+nnYxA_L;*^kZcuZ`M&-6`ycCV7{;_79ogsnech^yL zn_|38pI;->_ary4F2sKKzyio&dPKaR@lF)KKi2jKC2S5n%8UdmUM; zS<-HsY#+YXG9HKzy7{pVz&9mD|#|uZNDAniuLA;-k*?F$Z+WDTi^4Bm9n7EuY+K_4*UL z2!bWu3Vy#j4yc%Kj)tdGso7D4V+k~LoNIdYP~%&9KKUHGnm&mG-RXfDx97H#QQyWk z1dC#DhNNsKbfrJX{*Fz1urli=4U>8gXux>EenK$ZjshrmuJT7X(y==y2BNn5t4N@Z z+j1kD>+7$$>&#g&S-fEMzEj3F+{v0|M=J8YASKi|>qZF+wr6N&(|EbiruX$%d|^wb z_p$jkW81f>sB$@1WO(lkUD{1?*$`jscHMLMaRiwLQYOhS)pcHJjZmE0m@D~<@a$p@;~;B;r~pl60H4-X$G6(T{^YR+ zLNjjS2pLWWPT*#b4nhY@UHQ8lcM739$Y|I52i7#h*rrq6HGug*ZpBWh+1+gFg8G5w%ivJ9030tf*E zSyo~>_6sF48II1Z~tB+n?|3@c%Ac zxpz#$AFd%xuTzloyeCZ-|H87t(<4ENU++e!6 z;Q^Wb)Vh39bi!=W&pQF+S`VGRfkMa5Fy?+tFlq`GOJ!+`-Orl!Zrr)6d6GO&j7$*7 zFtX}kj-v!?Be4M#hAy|Sl0pX+T-Eg)(LUipdqU8;gcQ7~XWNL3mfZ$@K(|%ab@XS^ z=}ykdtuPoGY8W~c1ay{5G_Pjk=P!5iQda3aM+61h1Z~YfphB1pBPy}qLVv!V)W*;U?Z0?o5-Q6S@ZX%=iLz!^KsmJvoGeb zt5f8Y&yMJ}BGsC3Q#UdHptQZdw~jO!#{ke+;Z~gE4b7^XT@& ziCLyS3|jUDUq8k=WL!VXSw!f!FU)Qt9G&6220Dg**o)Ef8<^2Fe&HQkJ|p>Wo9-D_ zkq4b3(CpEJIf_mPq5GZm???NniE2hl3$@cKU87Lz10X*6Yt+1Dn1be`*4@02te^om; z)}(1_IX+EIkw1}8zhEv?|HgFv(=pujam-p1clRQ#=%PcJd6h*(Lb0>NFzpqrltKW-4Y|VL0?)s-f4THSdlV zU2qy(p!9)hv)_2EPAtFmjMMErP9VJUuwot19t^ zcS@~(N8>*G@`=OoqKbYy*Fctz!B(G-jr-Dwo$?r8G**ay?LLzjPu>ll+kV5!NU5x` z#YK1P(#qW><|-g$*1x)bQE4Dc24C!2;5R)833E)H8F7F2B8p^@=yRbX*7LW{O6P9N z?PHm7?4;jww<5)Lsxwm><9 zjrfX*z3ga-3;9`0=t9OGlqA{iD8DK@8V}rQIcd2kfhx#N>HY91z=m&Y6*^hx>)M^$q5i$>Z_S}>QhZiQMHLq?R;?Fn?JfI$-g`@dy|qerWg|i% zdyLJhariB@qYLxz`J$_V3+4S;wYGQz9v(`>gIXn9B^kPr3(M) z@{Tcs!rn|kD_`#HNJe2H6B;fX%v@%5cT=GuMf#a;7Ym!TeKnb^tYpp$HI$3om_W-V z<;rrOU@RG#0x`qnWc{{=^G?5o&)6pj-GaN38_zh^MvM}-BWaC}>zKN}FO9M!oV>rz zMR&5!`gI>w%bV{EmtsN3zElbXV0Rc;|16wBLe%4t#P;sQwxM=aL9xIwIrOEfkMZ*0 z_qxqUPw}r#=a1@$#@o>ZnAqPv${%-)w|Uh+A$`hUlZ)hZ9*tJSk9)mP?#t)cKnW3_ zD6sNG^}*J1@h5|j%Mbc%M9HKidCji?+GL;@Fq)#!^dj_2ItvyV2E?ja?yCu}T>+Jt zd$a8)tk6v5x0w}i-jYhWuhW!-1)Q_7OBJA@`#)x;8T%TYr+ehiDs#kE#Tf8GxlM?Y zlXHO1QuB%E!_kOLCuJaww+c#WoPQq8wiq%qV;)_6LzRf^d^PO-F>ybV+DYwR{8WTa zP%AoKodl31+N1_PLHer@=Vb#W^q-#?ag!rsLt`e`lsx)9&nBEmS2OPQaB>vxorzrS zOxhc2Rg;JZopWST%aYe4>2xG!JV(Rj&yV|R(Q$_}_B-M(=bc8vK*d(r20wT$f5&T3 z&>ZOC)3S!h_WdkK4ANIJWJ+;9J%C~d|Hk7_EeyJ9TbVlEllGCI3}^~MQX0`o5p?qo z;ovkD(fB8d>^Af9_+5CB$Op4MQ}PyRI_|m?GQ}83oqAFDk{IAC zqqK;)uNMx*{#gA<%$=e6tcjYCv&l;7UCQ0k-ucPNH{;umk054Y%_?<0=I5i?RnQA> zr}Gh>XbfY;L*vSE$KtP3o)il%WCs%&$F>Vuzv0O@TNED@Fd`lQs)(;&iPaoPg7{~q zmYcVd_}gyGM-o5nD2SAbI{w<)c^6X&85Bh=Un5F4!4Vp(KT$; z|CzB@U_b5Mep8WkKaLMkD@T6Xx_ZH6GF(`%bfwc>a1Svz{fD(lEbPwb)9oeLhAy(h zx=oC$Lhg$nZDeRs^2IP+!wU9MYXi5OJ7(Ihm zCu{QV(D7C=-Gu^hBlHRK0KzHy0=?gh)E<5?29e8;rHT312LxEtg`vZeH&zqz;C~Sn zvtBa2QI^cprEypjC)WS`nQ`WW~TjA)nc(HwYa$S;?AoJ)3zzD2h1r}$|*}S z;;+rxc)|WXRFl)&K%;Q8vCp(S$t62v|G9^?tiU$T2AC3UkI^gWOWy01 z#%aVXv858HeA|?)oDbQv))oD0(CqrQIG~d6_v1TvZ+de#W^)gP)u{$13uhpaK}s&E zYJD91WdDyi&wZK%6?L}^?jEk8g`u3r*Ie`Ec-UQc{IB_$eq52gG3%*@{&R%itnu|( zp!#$J=AlN_0?%so1puu6y&EIEyr-6MS%Vg#Ji=O}68N{cI#Ka=c?0?BVk~D)8TL4a zPRNU9YbjR5dp}Id{zyhds-lrq+sWej(Wp@BUzH!#I}MX^X7~pqb*@=dv4y5LPfiBM3>REjYvVeP z>WZt>j#VeT2gZIeqwpwDn_YUOP8sM(j8W=o#96^D;wO7Tl&5AdIkMiKV)|_+=wHq9 zZ$rpB{S2>A(^cFmtCw5x-f8x2lEk#CPvqBx9FrPuC*iJWKFt_cn>i!PX*y6T#XvNr7Bs=)8h(AqOV+| zD({o(_oi{GwA$}`)E7lw{EQM8%rAGE$LE?F6d8loYi^PZ_}r_oc1YH8fj3^4%;4saUqO0k_jVh{qul$n^l$oI9gn%mqc5Gw?`y-!$k zdUr1%XDUVtOQruB;_%R#0K3}qi!9Munc<_ZJYjGUV7&fnSd~d99rTf9iD+EknxPjp zB1Gy9JHww`qS#a%8@ICrPgUyS%CntNgrL??X^dvQ;1S775kY9{?qQ)0J(shvkKfcB zaUa(J>SUsQQfa=!fZA`Na=*Sh4&vgEL2{@$ru|jfA+RYF)GTgGo)2tc_*Lorl{bNk zInJ{ikzq44bGbT7Sw9bE>x~MDG6{0bTK8|1-_8|P>e>WxQKOwthbZ+}y0I&wFR^ z3Il(1^P+WyO#s5sf>F$Z`0R5kmI@VS|9%;L*=98`*Sx0&|KPmeUGD`)N3V;75^p_8 z`X1il#IZf_x!Y^V!}G&Zv$JlN?bS%BBo5j(WG_cvizSMQM4J&2m>I+Ro&p|Q53XI> zZ-D~kCz@4dQ`Yn{5y=#7Et|Gv#-6BYnCIJ3z=^GUX?R_{fA|3UiGNX zOj;zY)X%v%9tUyP<+LRv3ggvibv|`|(VkB4R*xjT#(~gZ&5_+tV(%biAT|>MFOf`6 zweM3tRRh}QH-mU13l{4AW8SSa(EN^lsZeB)89R;kk|wG$&c|y3M4O8ZVI;T5RBc(c zqhL!1+KMWSg?#vy7X;^HnhK!Rt>^;dUxzYIUi6sj3rGT#&n2N@GZz)Q@w;i z`$f_ee>_ejbq*gUf1|k{6E102-~zR}aDw|c&+_#xV~5{!t*Bq!m4q|j(FKJ0`X~&eiEPya`mfp$S*`P#nmVr=a z>W^Z2tX)8}YP@%orb}89#sPDX=44hV9jMFS?{5YWbg zyL=M>?7`;T!iMRMLQS!YO+hf^WpDH+Yhb6?|+g7()>&2gvfo~ z;+)Ylxg|-N3V2fk>i*gF=Dec`pnjY$i%(YwLdlJH^=z!vWnO#)q@hOORp1FH|8cQo zdUGK*+@F%BKQK3IBzCgMiX!6qZd_R9hcdQLjlH*t$KJ+yNA2On`_#9+Xy%&wy?g51 zW+cyL3z&kr8{*|iCZ%MpOLGben5d+l!NLj#BIG^oe^1+xeMx#|E!u`*=EAFBZPkzE zvGYy0t<`Cr)%K-`hxXKUxcrDJ7>GlA`iOXX>!xAMxDVQmUDA-mV;0eL48e2oep|%1Rad zn_Oeb?)kCA18-+xiV5NE8e<-p?*1V@qF|ljCl<-+YQi6#%lN-8x|j;EEXN4KJnE4M z!6tf=GuT#dBH(JL`CDU1^0Iw{^FsV$tJ8hk$X7|VX#C>)*oam5-p@hh!*R8qQxf+W zb$zL9a?{9GisA(dv6|Zo51u-w?eA8Q9jR2TNavE2wm2%8ap<6x z=7OD!HT)PB_3fRWp$Z{0e0+%zmw{@{$D2rP}WIk|e>Z)aCRMcs{&0gSQgbll|<jQXx=pAE!p%if?&vpzpZ}(Nd>je$r}$E zDR}3(Bh;w##`UR8(29l3m?{q5!Xbp(c%e&%_k8^AI{i&RLm1R~q+=86w{=MJT=e!s zMwY=1LFeg3zUzi+fyg>^a$jwomW&5>;By(jyC)@5<<=@}2&!rP-qh$Qj`*V$E86Py zW4v3SPg3mbM=yCd{#X^t#y|6VSwxgyIL{`2QA7DZ>ks#%mtctgpo`##6cy~VL}vbS zUQd9dk))epR9jH75XM_MJH1OjWIiH3INHG&2iB+XC?47rng1C={)b|6F8y{LY_S}O z6#>pNq5`O<+(k@ag}04(q2NphZ~gF;V! zh1nJ@B6qeJ)FIf*=FN(m6VO}ZAAs_VokY!_Y~eT3i%yxF3uG-wVpW2MgkmCO+kLoH zD=`|u42gDhu4trH*MXlv&WBAWSO;QADuGsC^7c>g z*jwAH_3aK-3mhDr0F zL9I4Q7iv?1_c1^MAd2#fD&kt&x})comoZQAp(o+1>KQt8EJcvgIf0XJutvYwq)nqJ9aAIh|A)>ykg?--rVEL| zbMIOqp3L_|n46&`U#P6a0dL4=^)ovkt^sIDs8=`8_b4df95Tg{$0qa{xKQI%Z8tyy zW5*XcMjJL1Jo^0nRaW@b_s0uV0(jCVyk@vo<@+S2+9jDs13)&wj|!(Q-3d=&4ir#H zx+xM2fQvnVz6zY1j7m*EJMj$s?}|UALHxj49BNDSNKY!_2+>g;oGnGr$}Zp}3j$2~ z*+6?u{*Uh;MESWkF+vJDqYOz@L)~z`@6^1#f6M^W9F8gd6e42idm{W#7C;^YR#)2f zQwMzH`L~Yr{)hKwwx{!9`uG(AdYSVSO#B~i7)kS`0uN9{uPh z*erjGH97i7P3+aA1-GtBw)0_Vuon#J@L-4jx z%?9;Dp^R`#_7b(Pj5xm8A4TaamV`^92goWNh6IKeixhnf^4yD?k-L~2g}8RXrN(3% z2Xasf&YF-Iv6J`euuo83#P6CeExKqt0da*;KF|BmU-?Da{`&RzLbLGGi6?w>H zz{WdWPZqEOucp6aKq|r%BZ4~wECYKjKuqp-kU}aB(<7|=@N~W?PfK`ACZPsC`Y~?ZAnR4IIAHDh zSi)8#B~2ckwdtzqN%Bx^G> zy(xPsi@hSQRPXz(xqNcNeSRx(yx^jw_xajd)Sw^H31*jkCq>}LZK3qQ2PK?}hp=f1 z55UCRy>KRjnIZXp zKFlnku)%Yl1XE>ZH1mw%$=jqw4F$O)JM!x@AD6vo^}dW1D)&p82lb~*zEisI`!F1X z?bhFkn1&v*eiQVVwNsjN-7rz4^A-O_-;G_r!z!^vs~#k4Y)@&;C~v?_ zQ-=|kLD`-0iO6WXiVi4(|I6dI{*!<^8%`J*7Xk!Vo`!+lmGKD8FmS?KBR+Q?2k_^2=87P>@rEB!INR5`q)JoWR7i9v6LceDHe(%Qj zX!Pje*yaJgo$>xGba#A%4C)mhv3~2J)?T%Zj8iRj+eshBJmbz{DX&PL(U;4v$5OI# z-yUvB488X>!Fd7Yxvh{vk_!F~>96Vx=)0aQ==Rj;KUKhRmCWVTbL_|22q_t!UM%_ks1P!`}UTOTzTm9l_U zgKFAdYXQ;wV<9kYA;!(epB8|NYcG@k5A-$uoA7?M!?Hd6ANU>>UzA>uKOoXw8e@qe zSY6#FLE`;C7a&CWDSIez^=cstTL$RLe?papi7#+v+IvI}XJ}S!rtVH!u;j%0IqhIy07q$>>)`Fk?U#?W2UkD!M%$Md@@TIhZ>s5w`v7`ax(I zoOj^dX4V+?8r!-`^cx8J>wvwC=4gfUmIfA=bqRog?PVC2P1__K9ykO|-xjrd+{(82 zJ!UaJ+}_$I;joft?DOP2cx)nHOXd^SbA(IKkY0NT#*6*5@@~!)8Mdki z-WsL`+j!HmxvVakZKtCXb`i870I#O91^@XxPQ)|zlo%8!aL?ERkoYEOHL9Z~b_ceChi~;E@CX$V03SjSQA&bS8m~ocZ6)Ck%u@nHB>0 z__FU&1esA0vz)2%v6G6C8mf7eD6^%u?gOORW7!4Dz@07OgIQ%wN19=UW_c~J>h@HR zd*k0n8yteZc-Wb9ExU|Unz|}%{JYI?7*|5q!hJVxjggu{aA)Z5dl@~=?;@brtziiM zqvJ4SRFK%#_&f@R6c~~pBZi@{V}^mj=l4&x+Q&ir7sF`|E}I_IsqjiB-e1M}VP8xX z$}0US@E_E`=i7h6V==uFyC7e1Y*y}(+@bPZ!^v_uZw@wzoW)OQ45b09&8H0$TAz7g zt{5!b;9#`QvKQmNJ!r`&qL>Q!>W$eL8~<#K_RFZuxe$pR>+C+WpyraeUvkY~WbAHj6gvkUMw_tD z2H+9hNOpywYVsBuhiwzOQ>q``7o+Ou1lf51-8?q^T=NW{C6SZ-6I%Py6QF+tjx!v3 zdyaW|`S3Im%KZN7j$2LjGTH}#dx+!s_Rw6$S&5v+s|cF8>NPCzf*&ilpELs_>cnwhfyGM{+#KqIZwc2^h2Is#vh}p zuxhGtW+ysP|9w*9dTdff{*dpmg~k?0N%LPFi6E$0mph)&Ugzz|F*t?Gbp2R>JFmVM zTEa2O0oD&Fkj|t;bzcbBCAt$5z~r!EgWU@ghpWNv>;-Oy@9IQ0`z4M$c!!VA)01cC z8Zf`u^~QRURZgE)ZfyLM(xN4(+&6cad2YuWn!KM^!;WVbH;OR%IgL{Nom2`RMyG5t zcjiy!JFxT?v*z_%OrA<&s91i17egFt2d+Z5G{klW4}d@S%^xU72pu^DJUzr}ue^+v zF?YvKo+M~WI%x|7Nqj?!EcmqrZd_i%Cpnj=E?K{PE%)!pTx5o2jL5?a^L?rLn%WN0P5JeXtC6R z(e(CMFyD=<^u&htSaNxqEi^_;RR4RY;Jc5_1$M&O>i}E%GXi(#va;vh0n!A>wNp9H ux=?U~&bPIMCg#?!?*H$~XFGHcfgKw-LW+E6ibyp#z#CarnMx_M;Qs-o9GK<+ literal 0 HcmV?d00001 diff --git a/packages/site/public/assets/og-cover.png b/packages/site/public/assets/og-cover.png new file mode 100644 index 0000000000000000000000000000000000000000..fddcc01992d7f77494e5abc64d7f5368120d9e1c GIT binary patch literal 77191 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 C?OYoG literal 0 HcmV?d00001 diff --git a/packages/site/public/favicon.ico b/packages/site/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..94b9ac9be60839b64923741ed84ddcb1558d9cce GIT binary patch literal 5650 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 F{{UBFX4L=y literal 0 HcmV?d00001 diff --git a/packages/site/public/icon.svg b/packages/site/public/icon.svg new file mode 100644 index 0000000..12a05d7 --- /dev/null +++ b/packages/site/public/icon.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/site/public/robots.txt b/packages/site/public/robots.txt new file mode 100644 index 0000000..4f2de61 --- /dev/null +++ b/packages/site/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://git-arboretum.com/sitemap.xml diff --git a/packages/site/public/sitemap.xml b/packages/site/public/sitemap.xml new file mode 100644 index 0000000..080d1bb --- /dev/null +++ b/packages/site/public/sitemap.xml @@ -0,0 +1,9 @@ + + + + https://git-arboretum.com/ + 2026-06-19 + monthly + 1.0 + + diff --git a/packages/site/src/App.vue b/packages/site/src/App.vue new file mode 100644 index 0000000..98414d7 --- /dev/null +++ b/packages/site/src/App.vue @@ -0,0 +1,74 @@ + + + diff --git a/packages/site/src/components/AppFooter.vue b/packages/site/src/components/AppFooter.vue new file mode 100644 index 0000000..b424c9c --- /dev/null +++ b/packages/site/src/components/AppFooter.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/site/src/components/AppHeader.vue b/packages/site/src/components/AppHeader.vue new file mode 100644 index 0000000..924500a --- /dev/null +++ b/packages/site/src/components/AppHeader.vue @@ -0,0 +1,59 @@ + + + diff --git a/packages/site/src/components/FaqSection.vue b/packages/site/src/components/FaqSection.vue new file mode 100644 index 0000000..0ce72b4 --- /dev/null +++ b/packages/site/src/components/FaqSection.vue @@ -0,0 +1,52 @@ + + + diff --git a/packages/site/src/components/FeatureCard.vue b/packages/site/src/components/FeatureCard.vue new file mode 100644 index 0000000..677f179 --- /dev/null +++ b/packages/site/src/components/FeatureCard.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/site/src/components/FeaturesSection.vue b/packages/site/src/components/FeaturesSection.vue new file mode 100644 index 0000000..3a09aeb --- /dev/null +++ b/packages/site/src/components/FeaturesSection.vue @@ -0,0 +1,76 @@ + + + diff --git a/packages/site/src/components/FinalCta.vue b/packages/site/src/components/FinalCta.vue new file mode 100644 index 0000000..085812b --- /dev/null +++ b/packages/site/src/components/FinalCta.vue @@ -0,0 +1,61 @@ + + + diff --git a/packages/site/src/components/HeroMockup.vue b/packages/site/src/components/HeroMockup.vue new file mode 100644 index 0000000..1cc4da0 --- /dev/null +++ b/packages/site/src/components/HeroMockup.vue @@ -0,0 +1,212 @@ + + + diff --git a/packages/site/src/components/HeroSection.vue b/packages/site/src/components/HeroSection.vue new file mode 100644 index 0000000..56d1201 --- /dev/null +++ b/packages/site/src/components/HeroSection.vue @@ -0,0 +1,80 @@ + + + diff --git a/packages/site/src/components/HowItWorksSection.vue b/packages/site/src/components/HowItWorksSection.vue new file mode 100644 index 0000000..403156f --- /dev/null +++ b/packages/site/src/components/HowItWorksSection.vue @@ -0,0 +1,42 @@ + + + diff --git a/packages/site/src/components/LangToggle.vue b/packages/site/src/components/LangToggle.vue new file mode 100644 index 0000000..46fbdc1 --- /dev/null +++ b/packages/site/src/components/LangToggle.vue @@ -0,0 +1,37 @@ + + + diff --git a/packages/site/src/components/ProblemSection.vue b/packages/site/src/components/ProblemSection.vue new file mode 100644 index 0000000..e9f2c2c --- /dev/null +++ b/packages/site/src/components/ProblemSection.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/site/src/components/SecuritySection.vue b/packages/site/src/components/SecuritySection.vue new file mode 100644 index 0000000..5366d0b --- /dev/null +++ b/packages/site/src/components/SecuritySection.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/site/src/components/ShowcaseSection.vue b/packages/site/src/components/ShowcaseSection.vue new file mode 100644 index 0000000..23ae01d --- /dev/null +++ b/packages/site/src/components/ShowcaseSection.vue @@ -0,0 +1,170 @@ + + + diff --git a/packages/site/src/components/WorkGroupsSection.vue b/packages/site/src/components/WorkGroupsSection.vue new file mode 100644 index 0000000..05ba752 --- /dev/null +++ b/packages/site/src/components/WorkGroupsSection.vue @@ -0,0 +1,55 @@ + + + diff --git a/packages/site/src/components/icons/IconCopy.vue b/packages/site/src/components/icons/IconCopy.vue new file mode 100644 index 0000000..66b129d --- /dev/null +++ b/packages/site/src/components/icons/IconCopy.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/site/src/components/icons/IconGitea.vue b/packages/site/src/components/icons/IconGitea.vue new file mode 100644 index 0000000..38b9835 --- /dev/null +++ b/packages/site/src/components/icons/IconGitea.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/site/src/composables/useCopy.ts b/packages/site/src/composables/useCopy.ts new file mode 100644 index 0000000..2bb8662 --- /dev/null +++ b/packages/site/src/composables/useCopy.ts @@ -0,0 +1,24 @@ +import { ref } from 'vue'; + +export const INSTALL_COMMAND = 'npx @johanleroy/git-arboretum'; + +// Bouton « copier la commande » : copie + bascule le label 1800 ms (fidèle au design). +export function useCopy() { + const copied = ref(false); + let timer: ReturnType | undefined; + + async function copy(text: string = INSTALL_COMMAND): Promise { + try { + if (navigator.clipboard) await navigator.clipboard.writeText(text); + } catch { + /* clipboard indisponible (contexte non sécurisé) */ + } + copied.value = true; + clearTimeout(timer); + timer = setTimeout(() => { + copied.value = false; + }, 1800); + } + + return { copied, copy }; +} diff --git a/packages/site/src/composables/useHeroTimeline.ts b/packages/site/src/composables/useHeroTimeline.ts new file mode 100644 index 0000000..b142195 --- /dev/null +++ b/packages/site/src/composables/useHeroTimeline.ts @@ -0,0 +1,113 @@ +import { onMounted, onUnmounted, ref } from 'vue'; + +// Portage 1:1 de la timeline animée du mockup hero (Arboretum.dc.html). +export type SessionState = 'idle' | 'busy' | 'waiting'; + +export interface AnimLine { + text: string; + k: string; +} + +export interface HeroAnim { + sess: SessionState; + lines: AnimLine[]; + att: number; + toast: boolean; + dlg: boolean; + hl: number; + ans: number; + cur: boolean; +} + +const TOTAL = 13000; +const TICK = 80; + +interface ScriptEntry { + at: number; + text: string; + k: string; +} + +function script(): ScriptEntry[] { + return [ + { at: 850, text: '$ claude --resume feat/auth', k: 'cmd' }, + { at: 1400, text: '> Reading src/auth/login.ts', k: 'tool' }, + { at: 1950, text: '● Edit login.ts', k: 'edit' }, + { at: 2400, text: " + import { verifyToken } from './jwt'", k: 'add' }, + { at: 2850, text: ' + const user = await verifyToken(req)', k: 'add' }, + { at: 3350, text: '● Bash npm test -- auth', k: 'edit' }, + { at: 3850, text: ' ✓ 14 passed (1.24s)', k: 'ok' }, + { at: 4300, text: '● Permission required to edit login.ts', k: 'warn' }, + { at: 7950, text: '✓ approved · applying change', k: 'ok' }, + { at: 8500, text: '● Edit login.ts', k: 'edit' }, + { at: 9050, text: '● Running…', k: 'run' }, + ]; +} + +export function deriveAnim(clock: number): HeroAnim { + const sess: SessionState = clock < 700 ? 'idle' : clock < 4500 ? 'busy' : clock < 7700 ? 'waiting' : 'busy'; + const sc = script(); + const lines: AnimLine[] = []; + for (const entry of sc) { + if (clock >= entry.at) lines.push({ text: entry.text, k: entry.k }); + } + const att = clock >= 4500 && clock < 7700 ? 1 : 0; + const toast = clock >= 4650 && clock < 7700; + const dlg = clock >= 4600 && clock < 7700; + const hl = clock >= 6000 && clock < 7050 ? 0 : -1; + const ans = clock >= 7050 && clock < 7700 ? 0 : -1; + const cur = sess !== 'waiting'; + return { sess, lines, att, toast, dlg, hl, ans, cur }; +} + +export function useHeroTimeline(stageId = 'hero-stage') { + const anim = ref(deriveAnim(0)); + let clock = 0; + let visible = true; + let everVisible = false; + let timer: ReturnType | undefined; + let io: IntersectionObserver | undefined; + + onMounted(() => { + let reduced = false; + try { + reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + } catch { + /* ignore */ + } + if (reduced) { + anim.value = deriveAnim(5200); + return; + } + const stage = document.getElementById(stageId); + if (stage && 'IntersectionObserver' in window) { + io = new IntersectionObserver( + (entries) => { + const e = entries[0]; + if (!e) return; + if (e.isIntersecting) { + visible = true; + everVisible = true; + } else if (everVisible) { + visible = false; + } + }, + { threshold: 0, rootMargin: '200px 0px 200px 0px' }, + ); + io.observe(stage); + } + timer = setInterval(() => { + if (!visible) return; + clock += TICK; + if (clock >= TOTAL) clock = 0; + anim.value = deriveAnim(clock); + }, TICK); + }); + + onUnmounted(() => { + if (timer) clearInterval(timer); + if (io) io.disconnect(); + }); + + return { anim }; +} diff --git a/packages/site/src/composables/useScrollReveal.ts b/packages/site/src/composables/useScrollReveal.ts new file mode 100644 index 0000000..c015f0a --- /dev/null +++ b/packages/site/src/composables/useScrollReveal.ts @@ -0,0 +1,52 @@ +import type { Directive } from 'vue'; + +// Directive `v-reveal` : révèle un bloc quand il entre dans le viewport. +// Reprend l'intention du setupReveal() du design (seuil ~92% de la hauteur), +// via un IntersectionObserver partagé. Respecte prefers-reduced-motion. +let reducedMotion = false; +try { + reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; +} catch { + /* matchMedia indisponible */ +} + +let observer: IntersectionObserver | null = null; + +function getObserver(): IntersectionObserver | null { + if (typeof IntersectionObserver === 'undefined') return null; + if (!observer) { + observer = new IntersectionObserver( + (entries) => { + for (const entry of entries) { + if (entry.isIntersecting) { + entry.target.classList.add('is-visible'); + observer?.unobserve(entry.target); + } + } + }, + // -8% en bas ≈ déclenche quand le haut du bloc franchit ~92% du viewport. + { threshold: 0, rootMargin: '0px 0px -8% 0px' }, + ); + } + return observer; +} + +export const reveal: Directive = { + mounted(el) { + el.classList.add('reveal'); + if (reducedMotion) { + el.classList.add('is-visible'); + return; + } + const io = getObserver(); + if (!io) { + // Pas d'IntersectionObserver : on révèle immédiatement (pas de contenu caché). + el.classList.add('is-visible'); + return; + } + io.observe(el); + }, + unmounted(el) { + observer?.unobserve(el); + }, +}; diff --git a/packages/site/src/env.d.ts b/packages/site/src/env.d.ts new file mode 100644 index 0000000..51c682d --- /dev/null +++ b/packages/site/src/env.d.ts @@ -0,0 +1,7 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + const component: DefineComponent, Record, unknown>; + export default component; +} diff --git a/packages/site/src/i18n/content.ts b/packages/site/src/i18n/content.ts new file mode 100644 index 0000000..7b08bcc --- /dev/null +++ b/packages/site/src/i18n/content.ts @@ -0,0 +1,60 @@ +// Listes structurées (FAQ, options de dialogue) — gardées hors des messages +// vue-i18n et indexées par locale, pour rester du texte pur typé (pas d'innerHTML). +import type { AppLocale } from './index'; + +export interface FaqItem { + q: string; + a: string; +} + +export const FAQS: Record = { + en: [ + { + q: 'Is Arboretum an IDE?', + a: "No — it's a command center. It doesn't replace your editor; it supervises the AI coding agents working across your repos: spawning sessions, surfacing their state, and letting you answer them.", + }, + { + q: 'Does it need the cloud?', + a: 'No. Arboretum is local-first. The daemon runs on your own machine and binds to 127.0.0.1 by default. Your code and sessions never leave your network unless you choose to expose the dashboard.', + }, + { + q: 'How do I access it remotely?', + a: 'Through Tailscale Serve. Expose the dashboard to your tailnet and reach it securely from any device — no port forwarding, no public endpoint.', + }, + { + q: 'Does it work on mobile?', + a: 'Yes. The dashboard is an installable PWA. Add it to your home screen, get Web Push the moment a session needs you, and approve or reject a prompt with a single tap.', + }, + { + q: 'Is my code safe?', + a: 'Arboretum binds to localhost, hashes access tokens at rest, and enforces strict origin checks on every request. Remote access runs through Tailscale rather than an open port.', + }, + ], + fr: [ + { + q: 'Arboretum est-il un IDE ?', + a: "Non — c'est un poste de commandement. Il ne remplace pas votre éditeur ; il supervise les agents de code IA qui travaillent sur vos repos : lancement des sessions, affichage de leur état, et réponse à leurs questions.", + }, + { + q: 'A-t-il besoin du cloud ?', + a: 'Non. Arboretum est local-first. Le daemon tourne sur votre propre machine et se lie à 127.0.0.1 par défaut. Votre code et vos sessions ne quittent jamais votre réseau sauf si vous exposez le dashboard.', + }, + { + q: 'Comment y accéder à distance ?', + a: "Via Tailscale Serve. Exposez le dashboard à votre tailnet et accédez-y en sécurité depuis n'importe quel appareil — sans redirection de port ni endpoint public.", + }, + { + q: 'Fonctionne-t-il sur mobile ?', + a: "Oui. Le dashboard est une PWA installable. Ajoutez-le à l'écran d'accueil, recevez un Web Push dès qu'une session a besoin de vous, et approuvez ou refusez une question d'un toucher.", + }, + { + q: 'Mon code est-il en sécurité ?', + a: "Arboretum se lie à localhost, hashe les tokens au repos, et applique une vérification d'origine stricte sur chaque requête. L'accès distant passe par Tailscale plutôt qu'un port ouvert.", + }, + ], +}; + +export const DLG_OPTS: Record = { + en: ['Yes, apply the change', "Yes, and don't ask again", 'No, keep current version'], + fr: ['Oui, appliquer le changement', 'Oui, et ne plus demander', 'Non, garder la version actuelle'], +}; diff --git a/packages/site/src/i18n/en.ts b/packages/site/src/i18n/en.ts new file mode 100644 index 0000000..3b3d672 --- /dev/null +++ b/packages/site/src/i18n/en.ts @@ -0,0 +1,93 @@ +// Messages EN — copie fidèle du dict() du design Arboretum.dc.html. +export default { + navFeatures: 'Features', + navHow: 'How it works', + navSecurity: 'Security', + navFaq: 'FAQ', + gitea: 'View on Gitea', + heroBadge: 'Mission control for AI coding agents', + heroTitle: 'Mission control for your AI coding agents', + heroSub: + 'Run many Claude Code sessions across every git worktree — and supervise them from any device, even your phone.', + getStarted: 'Get started', + probKicker: 'The problem', + probTitle: "Many agents across worktrees is chaos — and you're chained to one terminal.", + probBody: + 'Sessions scattered across tabs. No idea which agent is waiting on you. Step away from the desk and everything stalls. Arboretum is the single pane of glass.', + featKicker: 'Everything in one view', + featTitle: 'Built to supervise agents — not to be an IDE', + feat1Title: 'Worktree-first', + feat1Desc: 'Every session is pinned to a git worktree. You see branches, not chaos.', + feat2Title: 'Many sessions, one view', + feat2Desc: 'Run parallel Claude Code agents side by side in a single live grid.', + feat3Title: 'Fine-grained states', + feat3Desc: 'tell at a glance what each agent is doing.', + feat4Title: 'Supervise anywhere', + feat4Desc: 'Installable PWA. Check in from your laptop, tablet, or phone.', + feat5Title: 'Web Push alerts', + feat5Desc: 'Get pinged the moment a session needs a decision from you.', + feat6Title: 'Answer without a terminal', + feat6Desc: 'Respond to agent prompts and dialogs right from the dashboard.', + feat7Title: 'Work groups', + feat7Desc: 'Group repos and launch the same feature across all of them at once.', + feat8Title: 'Local-first & secure', + feat8Desc: 'Binds to localhost, hashes tokens, remote access via Tailscale.', + scAKicker: 'Worktree-first dashboard', + scATitle: 'See what needs you — before anything stalls', + scABody: + 'A live list of every worktree and its session state. The Needs attention rail floats the agents waiting on a decision to the top, so nothing sits blocked while you are heads-down elsewhere.', + scBKicker: 'Multi-terminal grid', + scBTitle: "Every agent's output, streaming live", + scBBody: + 'Watch all your sessions at once — real terminal output, color-coded by state, updating in real time. Click any pane to take over, answer a prompt, or stop a run.', + scCKicker: 'On your phone', + scCTitle: 'Unblock an agent from the kitchen', + scCBody: + 'Install the PWA and get a Web Push the second a session needs you. Tap the notification, read the prompt, answer the dialog — your agent keeps moving while you are away.', + grpKicker: 'Work groups · cross-repo', + grpTitle: 'Ship one feature across every repo at once', + grpBody: + 'Group the repos that move together — a service, its client, its docs. Launch the same task to all of them and Arboretum spins up a worktree and an agent in each, then tracks them as one unit.', + howKicker: 'How it works', + howTitle: 'Zero install. Three steps.', + step1Title: 'Launch the daemon', + step1Desc: 'One command. No install, no config, no account.', + step2Title: 'Open the dashboard', + step2Desc: 'It serves a web dashboard on localhost. Install it as a PWA on any device.', + step3Title: 'Spawn & supervise', + step3Desc: 'Start Claude Code sessions on any worktree and watch them from anywhere.', + secKicker: 'Security', + secTitle: 'A web terminal you can actually trust', + secIntro: 'Built local-first. Nothing is exposed unless you choose to — and even then, on your terms.', + sec1Title: 'Localhost by default', + sec1Desc: 'Binds to 127.0.0.1. Nothing leaves your machine unless you say so.', + sec2Title: 'Hashed tokens', + sec2Desc: 'Access tokens are hashed (sha256) at rest. No plaintext secrets on disk.', + sec3Title: 'Strict origin checks', + sec3Desc: 'Every request is origin-validated. No cross-site surprises.', + sec4Title: 'Remote via Tailscale', + sec4Desc: 'Reach it over Tailscale Serve — no public port, no port forwarding.', + faqTitle: 'Questions, answered', + ctaTitle: 'Take command of your agents', + ctaBody: 'One command to launch. Supervise everything from one place.', + ctaSource: 'View the source on Gitea', + footTag: 'a garden of branches, one pane of glass.', + license: 'MIT License', + coffee: 'Buy me a coffee', + mDash: 'Dashboard', + mGroups: 'Groups', + mSettings: 'Settings', + mHelp: 'Help', + mSearch: 'Search', + mAttn: 'Needs attention', + waiting: 'waiting', + busy: 'busy', + idle: 'idle', + approve: 'Approve', + reject: 'Reject', + toastTitle: 'Session waiting for you', + toastBody: 'api · feat/auth needs a decision', + dlgQ: 'Apply this change to login.ts?', + copy: 'Copy', + copied: 'Copied', +}; diff --git a/packages/site/src/i18n/fr.ts b/packages/site/src/i18n/fr.ts new file mode 100644 index 0000000..68fc6a8 --- /dev/null +++ b/packages/site/src/i18n/fr.ts @@ -0,0 +1,93 @@ +// Messages FR — copie fidèle du dict() du design Arboretum.dc.html. +export default { + navFeatures: 'Fonctionnalités', + navHow: 'Comment ça marche', + navSecurity: 'Sécurité', + navFaq: 'FAQ', + gitea: 'Voir sur Gitea', + heroBadge: 'Poste de commandement pour agents de code IA', + heroTitle: 'Le poste de commandement de vos agents de code IA', + heroSub: + "Lancez plusieurs sessions Claude Code à travers chaque worktree git — et supervisez-les depuis n'importe quel appareil, même votre téléphone.", + getStarted: 'Commencer', + probKicker: 'Le problème', + probTitle: "Plein d'agents à travers les worktrees, c'est le chaos — et vous êtes cloué à un seul terminal.", + probBody: + "Des sessions éparpillées dans des onglets. Aucune idée de quel agent vous attend. Vous quittez le bureau et tout se fige. Arboretum, c'est la vitre unique.", + featKicker: 'Tout dans une seule vue', + featTitle: 'Conçu pour superviser les agents — pas pour être un IDE', + feat1Title: "Worktree d'abord", + feat1Desc: 'Chaque session est rattachée à un worktree git. Vous voyez des branches, pas du chaos.', + feat2Title: 'Plusieurs sessions, une vue', + feat2Desc: 'Lancez des agents Claude Code en parallèle, côte à côte dans une seule grille en direct.', + feat3Title: 'États fins', + feat3Desc: "sachez d'un coup d'œil ce que fait chaque agent.", + feat4Title: 'Supervisez partout', + feat4Desc: "PWA installable. Surveillez depuis l'ordinateur, la tablette ou le téléphone.", + feat5Title: 'Alertes Web Push', + feat5Desc: "Soyez prévenu dès qu'une session attend une décision.", + feat6Title: 'Répondre sans terminal', + feat6Desc: 'Répondez aux questions et dialogues des agents directement depuis le dashboard.', + feat7Title: 'Work groups', + feat7Desc: 'Regroupez des repos et lancez la même feature dans tous à la fois.', + feat8Title: 'Local-first & sécurisé', + feat8Desc: 'Se lie à localhost, hashe les tokens, accès distant via Tailscale.', + scAKicker: 'Dashboard worktree-first', + scATitle: 'Voyez ce qui vous attend — avant que ça ne bloque', + scABody: + "Une liste en direct de chaque worktree et de l'état de sa session. Le bandeau À traiter fait remonter les agents en attente d'une décision, pour que rien ne reste bloqué pendant que vous êtes concentré ailleurs.", + scBKicker: 'Grille multi-terminaux', + scBTitle: 'La sortie de chaque agent, en direct', + scBBody: + "Surveillez toutes vos sessions en même temps — vraie sortie terminal, couleur selon l'état, mise à jour en temps réel. Cliquez sur un panneau pour reprendre la main, répondre, ou arrêter une exécution.", + scCKicker: 'Sur votre téléphone', + scCTitle: 'Débloquez un agent depuis la cuisine', + scCBody: + "Installez la PWA et recevez un Web Push dès qu'une session a besoin de vous. Touchez la notification, lisez la question, répondez au dialogue — votre agent continue pendant que vous êtes loin du bureau.", + grpKicker: 'Work groups · cross-repo', + grpTitle: "Livrez une feature dans tous les repos d'un coup", + grpBody: + 'Regroupez les repos qui avancent ensemble — un service, son client, sa doc. Lancez la même tâche à tous ; Arboretum crée un worktree et un agent dans chacun, puis les suit comme un seul ensemble.', + howKicker: 'Comment ça marche', + howTitle: 'Zéro install. Trois étapes.', + step1Title: 'Lancez le daemon', + step1Desc: "Une commande. Pas d'install, pas de config, pas de compte.", + step2Title: 'Ouvrez le dashboard', + step2Desc: "Il sert un dashboard web sur localhost. Installez-le en PWA sur n'importe quel appareil.", + step3Title: 'Lancez & supervisez', + step3Desc: "Démarrez des sessions Claude Code sur n'importe quel worktree et surveillez-les de partout.", + secKicker: 'Sécurité', + secTitle: 'Un terminal web en qui vous pouvez avoir confiance', + secIntro: "Conçu local-first. Rien n'est exposé sauf si vous le décidez — et toujours selon vos règles.", + sec1Title: 'Localhost par défaut', + sec1Desc: 'Se lie à 127.0.0.1. Rien ne quitte votre machine sans votre accord.', + sec2Title: 'Tokens hashés', + sec2Desc: 'Les tokens sont hashés (sha256) au repos. Aucun secret en clair sur le disque.', + sec3Title: "Vérification d'origine stricte", + sec3Desc: 'Chaque requête est validée par origine. Pas de surprise cross-site.', + sec4Title: 'Distant via Tailscale', + sec4Desc: 'Accédez-y via Tailscale Serve — aucun port public, aucune redirection de port.', + faqTitle: 'Vos questions, nos réponses', + ctaTitle: 'Prenez le commandement de vos agents', + ctaBody: 'Une commande pour lancer. Tout superviser depuis un seul endroit.', + ctaSource: 'Voir le code sur Gitea', + footTag: 'un jardin de branches, une seule vitre.', + license: 'Licence MIT', + coffee: 'Paye-moi un café', + mDash: 'Tableau de bord', + mGroups: 'Groupes', + mSettings: 'Réglages', + mHelp: 'Aide', + mSearch: 'Rechercher', + mAttn: 'À traiter', + waiting: 'en attente', + busy: 'occupé', + idle: 'au repos', + approve: 'Approuver', + reject: 'Refuser', + toastTitle: 'Une session vous attend', + toastBody: 'api · feat/auth attend une décision', + dlgQ: 'Appliquer ce changement à login.ts ?', + copy: 'Copier', + copied: 'Copié', +}; diff --git a/packages/site/src/i18n/index.ts b/packages/site/src/i18n/index.ts new file mode 100644 index 0000000..e7811a7 --- /dev/null +++ b/packages/site/src/i18n/index.ts @@ -0,0 +1,37 @@ +import { createI18n } from 'vue-i18n'; +import en from './en'; +import fr from './fr'; + +export type AppLocale = 'en' | 'fr'; + +const STORAGE_KEY = 'arb-lang'; + +// Détection fidèle au design : localStorage prioritaire, sinon langue navigateur +// (fr → FR, sinon EN). +function initialLocale(): AppLocale { + let saved: string | null = null; + try { + saved = localStorage.getItem(STORAGE_KEY); + } catch { + /* localStorage indisponible (mode privé, etc.) */ + } + if (saved === 'fr' || saved === 'en') return saved; + const nav = (typeof navigator !== 'undefined' && navigator.language ? navigator.language : '').toLowerCase(); + return nav.indexOf('fr') === 0 ? 'fr' : 'en'; +} + +export const i18n = createI18n({ + legacy: false, + locale: initialLocale(), + fallbackLocale: 'en', + messages: { en, fr }, +}); + +export function setLocale(locale: AppLocale): void { + i18n.global.locale.value = locale; + try { + localStorage.setItem(STORAGE_KEY, locale); + } catch { + /* ignore */ + } +} diff --git a/packages/site/src/main.ts b/packages/site/src/main.ts new file mode 100644 index 0000000..e460191 --- /dev/null +++ b/packages/site/src/main.ts @@ -0,0 +1,12 @@ +import { createApp } from 'vue'; +// Polices self-host (subset latin) — bundlées par Vite, aucune requête Google Fonts. +import '@fontsource/jetbrains-mono/latin-400.css'; +import '@fontsource/jetbrains-mono/latin-500.css'; +import '@fontsource/jetbrains-mono/latin-600.css'; +import '@fontsource/jetbrains-mono/latin-700.css'; +import App from './App.vue'; +import { i18n } from './i18n'; +import { reveal } from './composables/useScrollReveal'; +import './style.css'; + +createApp(App).use(i18n).directive('reveal', reveal).mount('#app'); diff --git a/packages/site/src/style.css b/packages/site/src/style.css new file mode 100644 index 0000000..37d2f6d --- /dev/null +++ b/packages/site/src/style.css @@ -0,0 +1,120 @@ +@import 'tailwindcss'; + +/* La palette du design correspond à zinc/emerald/amber/sky/red de Tailwind. + On ajoute seulement les tokens hors échelle : ombres, police mono, animations. */ +@theme { + --font-mono: 'JetBrains Mono', ui-monospace, monospace; + + --shadow-hero: 0 30px 80px -30px rgb(0 0 0 / 0.85); + --shadow-card: 0 24px 60px -30px rgb(0 0 0 / 0.8); + --shadow-phone: 0 30px 70px -28px rgb(0 0 0 / 0.9); + --shadow-toast: 0 12px 32px -12px rgb(0 0 0 / 0.7); + --shadow-toast-sm: 0 10px 24px -12px rgb(0 0 0 / 0.6); + + --animate-blink: blink 1.05s steps(1) infinite; + --animate-pulse-sky: pulseSky 2s ease-in-out infinite; + --animate-pulse-amber: pulseAmber 2.2s ease-in-out infinite; + --animate-toast-in: toastIn 0.4s cubic-bezier(0.2, 0.8, 0.2, 1) both; + --animate-dlg-in: dlgIn 0.35s ease both; +} + +/* JetBrains Mono (Open Font License) : @font-face fournis par @fontsource, + importés dans main.ts et bundlés par Vite (self-host, pas de CDN Google). */ + +html { + scroll-behavior: smooth; +} +body { + margin: 0; + background-color: #09090b; + color: #f4f4f5; + font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif; + font-size: 16px; + line-height: 1.6; + -webkit-font-smoothing: antialiased; + overflow-x: hidden; +} +::selection { + background: rgba(16, 185, 129, 0.3); + color: #fff; +} + +@keyframes blink { + 0%, + 48% { + opacity: 1; + } + 49%, + 100% { + opacity: 0; + } +} +@keyframes pulseSky { + 0% { + box-shadow: 0 0 0 0 rgba(125, 211, 252, 0.55); + } + 70%, + 100% { + box-shadow: 0 0 0 6px rgba(125, 211, 252, 0); + } +} +@keyframes pulseAmber { + 0% { + box-shadow: 0 0 0 0 rgba(252, 211, 77, 0.55); + } + 70%, + 100% { + box-shadow: 0 0 0 6px rgba(252, 211, 77, 0); + } +} +@keyframes toastIn { + from { + opacity: 0; + transform: translateY(16px) scale(0.96); + } + to { + opacity: 1; + transform: none; + } +} +@keyframes dlgIn { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: none; + } +} + +@layer base { + /* Tailwind v4 ne met plus cursor:pointer sur les boutons → on le rétablit. */ + button:not(:disabled), + [role='button']:not([aria-disabled='true']) { + cursor: pointer; + } +} + +/* Révélation au scroll (directive v-reveal) */ +.reveal { + opacity: 0; + transform: translateY(22px); + transition: + opacity 0.7s ease, + transform 0.7s ease; +} +.reveal.is-visible { + opacity: 1; + transform: none; +} + +@media (prefers-reduced-motion: reduce) { + * { + animation: none !important; + } + .reveal { + opacity: 1; + transform: none; + } +} diff --git a/packages/site/tsconfig.json b/packages/site/tsconfig.json new file mode 100644 index 0000000..eed9011 --- /dev/null +++ b/packages/site/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "composite": false, + "noEmit": true, + "declaration": false, + "declarationMap": false, + "sourceMap": false, + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["ES2023", "DOM", "DOM.Iterable"], + "types": ["vite/client"], + "useDefineForClassFields": true + }, + "include": ["src/**/*.ts", "src/**/*.vue", "vite.config.ts"] +} diff --git a/packages/site/vite.config.ts b/packages/site/vite.config.ts new file mode 100644 index 0000000..2f168a4 --- /dev/null +++ b/packages/site/vite.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import tailwindcss from '@tailwindcss/vite'; + +// Site vitrine statique (git-arboretum.com) : aucune dépendance au daemon, donc +// pas de proxy /api /ws (contrairement à packages/web). `base: '/'` car servi +// à la racine d'un domaine dédié. +export default defineConfig({ + plugins: [vue(), tailwindcss()], + base: '/', + build: { + outDir: 'dist', + target: 'es2020', + }, +});