From 3a4e217e70bdeff3cfde64032a6f353b22be0cbf Mon Sep 17 00:00:00 2001 From: "lkh14011424@gmail.com" Date: Tue, 19 Nov 2024 00:26:32 +0900 Subject: [PATCH] =?UTF-8?q?[feat/#123]=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80,=20=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20UR?= =?UTF-8?q?L=20=EC=84=A4=EC=A0=95,=20=EC=9E=90=EB=8F=99=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=20github=20action=20=EB=94=94=EC=8A=A4=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=95=8C=EB=A6=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 20 ++++++++++++-------- assets/icons/icon.icns | Bin 0 -> 29264 bytes assets/icons/icon.png | Bin 0 -> 29279 bytes package.json | 13 ++++++++----- src/electron/main.ts | 9 ++++++++- src/pages/DownloadPage.tsx | 20 ++++++++++++++++++-- yarn.lock | 21 +++++++++++++++++++++ 7 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 assets/icons/icon.icns create mode 100644 assets/icons/icon.png diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e9c8d90..e62de55 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,9 +23,9 @@ jobs: - name: Get commit message and author id: get_commit_info run: | - echo "::set-output name=message::$(git log --format=%s -n 1)" - echo "::set-output name=author::$(git log --format=%an -n 1)" - echo "::set-output name=author_username::$(git log --format=%ae -n 1 | cut -d@ -f1)" + echo "message=$(git log --format=%s -n 1)" >> $GITHUB_OUTPUT + echo "author=$(git log --format=%an -n 1)" >> $GITHUB_OUTPUT + echo "author_username=$(git log --format=%ae -n 1 | cut -d@ -f1)" >> $GITHUB_OUTPUT - name: Install dependencies run: yarn install @@ -39,6 +39,8 @@ jobs: VITE_OAUTH_KAKAO_REST_API_KEY: ${{ secrets.VITE_OAUTH_KAKAO_REST_API_KEY }} VITE_OAUTH_KAKAO_CLIENT_SECRET_CODE: ${{ secrets.VITE_OAUTH_KAKAO_CLIENT_SECRET_CODE }} VITE_OAUTH_KAKAO_REDIRECT_URI: ${{ secrets.VITE_OAUTH_KAKAO_REDIRECT_URI }} + VITE_DMG_DOWNLOAD_URL: ${{ secrets.VITE_DMG_DOWNLOAD_URL }} + VITE_EXE_DOWNLOAD_URL: ${{ secrets.VITE_EXE_DOWNLOAD_URL }} run: | echo "Building web app..." yarn build @@ -61,8 +63,11 @@ jobs: VITE_OAUTH_KAKAO_REST_API_KEY: ${{ secrets.VITE_OAUTH_KAKAO_REST_API_KEY }} VITE_OAUTH_KAKAO_CLIENT_SECRET_CODE: ${{ secrets.VITE_OAUTH_KAKAO_CLIENT_SECRET_CODE }} VITE_OAUTH_KAKAO_REDIRECT_URI: ${{ secrets.VITE_OAUTH_KAKAO_REDIRECT_URI }} + VITE_DMG_DOWNLOAD_URL: ${{ secrets.VITE_DMG_DOWNLOAD_URL }} + VITE_EXE_DOWNLOAD_URL: ${{ secrets.VITE_EXE_DOWNLOAD_URL }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: yarn electron:publish + # CloudFront 캐시 무효화 invalidate-cache: runs-on: ubuntu-20.04 @@ -78,7 +83,6 @@ jobs: echo "Invalidating CloudFront cache..." aws cloudfront create-invalidation --region ap-northeast-2 --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths "/*" - # Discord 알림 - 성공 notify-success: runs-on: ubuntu-20.04 @@ -95,10 +99,10 @@ jobs: args: | 🎉 배포가 성공적으로 완료되었습니다! 다운로드 링크: https://github.com/${{ github.repository }}/releases/latest - 웹 앱 링크: https://alignlab-client.s3.ap-northeast-2.amazonaws.com/index.html + 웹 앱 링크: https://alignlab.site 브랜치: develop - 커밋: ${{ needs.build-and-deploy.steps.get_commit_info.outputs.message }} - 작성자: ${{ needs.build-and-deploy.steps.get_commit_info.outputs.author }} + 커밋: ${{ needs.build-and-deploy.outputs.message }} + 작성자: ${{ needs.build-and-deploy.outputs.author }} # Discord 알림 - 실패 notify-failure: @@ -114,7 +118,7 @@ jobs: args: | ❌ ${{ needs.build-and-deploy.outputs.build_outcome == 'failure' && '빌드 중' || '배포 중' }} 오류가 발생했습니다. 브랜치: develop - 커밋: ${{ needs.build-and-deploy.steps.get_commit_info.outputs.message }} + 커밋: ${{ needs.build-and-deploy.outputs.message }} 작성자: <@${{ secrets.DISCORD_ID_1 }}> 실패한 워크플로우: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} ${{ needs.build-and-deploy.outputs.build_outcome == 'failure' && '빌드 오류 메시지:' || '' }} diff --git a/assets/icons/icon.icns b/assets/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..8fd848abb2d942dab2f169aa31e11604ec685cf3 GIT binary patch literal 29264 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
  • *%7-;(&`w~;C8 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 Ljz*c9ZN&cofe8Yc literal 0 HcmV?d00001 diff --git a/assets/icons/icon.png b/assets/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..786dc0e9ffbe2da13e8c5ae566556c6441ea9156 GIT binary patch literal 29279 zcmdqJWn7e9^fo#(3@s8Wol1yGh=kIigf!AE-Q6{V5(Ws;p$vj_N+WI2A)Nz)gw)Uj z3^ViIJn}sMbIzCZ<$ceG13!NEeb4NB?Y-Ap`&w&Vd+SRr4J8UPMluixM4_VmPzMBp z0Jjhj2@!BP2pByDE>L?pbvY2|Qylr(Q$paG-C9{k9Rv#E27%xaAkcXe_!gu3dz�w5KIFi0PeuRF9^&CI+q6AfgXdI{=3%! z-@Ir8j3n9-1iffu3|!BDl!3qVcm7@pvcdl&F&px4YX~Tt;D7GVUpxLX83kNOJ(P{S zK_K!g=YL>O#yfgInvtWfp^u@unz*&QEB{j)cPm@|09TLmw?L8s;=rw|t;JS62ky^57P!v-PZJ+!sq2R7TI>q$UbgI_{DS;~*QLqW+1Vw%Z0y8!9x7hE z4m?R+ckuD?5El^e_xI=bzsK+HWiN2|!Gi|^f6^-XHBVsD{1-ZvA39B6(bS?K^SDH?wq? z!|NI5`gT<6RB^=p&l}izbC0vdwx6qUr+fNyO$|SM$tmk3_X7HYgZQ<#o#2R+fu_ZX zzkx4{Q9468o-SScy`Gu9f&TL0{&r!5>8Xo94Krb1tnOc7 z{F9Z&jj>YBzw-_Is#z>;Yvc@`UqnpY*^&~4P2udYI<>r~N(Bc&*(*aKa$N2)+C0S> zkq?qPGiKi9H)U))pql;k`KAv!f0P)v+UPgy-~7gOH_7gC@YXsL-Zf3zRQ@$Qjlv>e zcfy=^ZVLU)Fe62Yj!C6ROSvafI7z1@j_y@=0Aqqe(C`~aamL~MtbFN11Y)dLGB4dd z-TPR2mc&}Q8j4@TFAag&9twbW9Q$@KDaQ7whU z#q`7Drd2vKuY(qh&#p?`%EAdF28k!ENFnFC5|?AI?k|VvvX&gY`INKlnf&>Q(2Or% z(}sxN312uB?KP!E_Ho^?iQh@ChNXkihH2`2=9;u$Yvq-ZM#?Kli-y$J5&D-Cchu&F zcNMNNue3+mo4;CKFPpg`s$H(jbR{oMx6>w9$+i~pB1Jlvcu9dH;zp3x0Lhnbt?EIQ-Z?ZT-jNHmu4Rs4JFXc_Ak2x zx0>wVaq@Q8&+j~4d}mCrIsC(_?{GjOXRgLX^D;i{X-r?7f$))M`Sc|*yNVi*BE(KLZzwdGRx+S-UC<3NvzkEzjdgAlf`?|@oL=t_oWPgJnFMR`b3chp0x z>7aO_8we(!{{8QHkw>mLn>&x_+dCsno&lp8Qh@5~wl+UbiF8@fpPw+L@8X>?cGI72 zo*j@RMt+mvSb}MogekJl87qH{jsMpBN&CKqp<#$~m5|>D;}%$dt9Vg9{o%8=%Q_=9X`+tq~ve1&!$df zda38ebwd4u0XeiU^t@}9z5+~@SX(K6|D7|1F6-w zPeU|6af;>-tKFNG7+5%D62Edin%((<1A1E1-G2P&(HfGkAL@OXtVCm$Yvj0^|HJnA1crwDWlB zl$bN7G1DTG^dGbUh5JF${o6B%Gy0)M^YRSolZNjMYAB77@Yha!t=XrmC5|uVWh9Kl zuoV_$I9mDnNE|iD;&j3(?<15bY;78VKqVYZ)^l!(`NLlpHe1*6X`Pz%n^U!6~p z4RN1PO$BeE3V^BB_#jALH9kb67ca6Zg%` zcz9vFQ=1+YQFp z>#ffo%E_AyB(Fm9-M>SAn6o*!D@-fx92*cOJ&J5-8w~UK@z}lD zd1^skwUZaAAX?^XKS3KjOF;FtTVO+^MM~5-BU2_b>dWdOZbg6;ckjdfMHbA*AI*bN zCc$^YCbF*cUjjO^Oe3*jAtt9K!=1v<`eWB^Yneg}M#RWsPwQ2!bKM8$s;5+8Yx0(X zwson3hc%%4yU77n^h|@%^4LFVQL7Or3eQeH!r91{U-`f%3!H*HjZ$91&E-{%|1rO1 zB}v0w16OI(9YY5{+L+g`85QrFCx?Fi$i0TXq8gTsgUGnt(Qk$Qq5QgRZaefE(mrxE z4j&|GcvDz9Gva{U7@KtItom8G*s)XqtHbqwoEHTBtRZWsY96lTl2KTrKeqPl$laO- z*Q_l7+vs77$TZVjyhXZJ1qx^|`~5q02`8V2)An7#)Er5dXwVK8k^d;ta`4?#6*0EZ zUot2|{M9zqnrL`)VzxB@()*ty>x<7Wjm^*yR&*<1^F_l-%uAa?PD-ABM-#Eug*OG> zHlqbmx*e{Xzxpn=<3;hVnl z=@V-r`k8wB?TF&t1&hh!u3q~C*KqSd*Gg50W#jq-tVwmJym6SZBAz$2=T9Q!h;(^P zNnQ?RdcVshf*aOPQx8K){rO1p59+5-E04+v{#5mIdpc({XDBJKaahl&y&zHLz4}CT zJ^+vYQQp&98#C>d*|2FU(J-7h0ouJ&ARyS9qI# zgSCQMuad_}8A-ht{=ze6vR5s1j7Z7+T}pJ2-t}XrI~e_B!{XllB={fMEo!pd;}XQ5 z#n`py+VtO#rPOmma57uRin-$fC&O%Se7E?*`2#_H8i+Ir=8@r5;iN@6!rzG;yzd4w zRGr4m2h@j&E(Xa7P7iANloD7y$3b=Q=j7vYvxw6YWvhos`F!rptIk3P7$)Gu>$&C6zJkg(HowaT5d;-nz~Wrp{o{j66(Fjx84I;zm~ zbqnA*h{i)x)}>IT9n(mNiDx9d+_fn+UwNQroQbiX+q>NqIMcKOzJHiJwWRXttOkj~ zH($aEbl={SPe^)|Kgj+1etHQMTbWUb^_vf}> z^N-LKv6VqXHS-rmPFRi*bFp9zv+LOW!;FZDGf#~F$JX9c5s%7iUjo5!LqRsPh=b z96E50N+5`oI(x8!EX%w}^3$=dxTdlg{o?|2&jFXU%gFXOfuQF8wzMRKI#aC0TW`F9 ze3923(KD$RDH~r`|24wUm3Ur#*nJeyDuVt^ZDh&m+5*BswnL_K#(y;#YQr;qFQ_Z>50IQ5S$u6Zhn6Z)BgY)~f? zKL(A>TCmnwB*Mjd&o)7IeC0@u}p70Ns;D=$El4ZBi0XZt|H2pz}gm zSa`AtLP2LYh$!W)pPrfOXyQNBg~*xXz9N5BOl>3LUZ1h^|4o4budJc&YUNqa|ls9jK&MJm&Y_jtSF6w!` z^8(?dX%y98|A|V62Sb_{1)3OK;^NYCA0M>QS^XNpEt_J7+uT}O@$E;_x5`{e;LGbv zqXvt+#>`lkgb2j=5E0Mer`(*0GwXE)OkI;Gt4I+u@!u6lPXuw3$gJqLCs?t~U5Og} zW_bF=S`)YTXBnC@v$%{Ix0s0nITXdwD;%jcT?-j@-G06nw@nIElMd#%1NT7|K0aNTaqSsm zqBllHfG+w^=mMVD(5g!AL zLkXnIR3G7jR8o7Ka7ZHA^E&1n zS{8ni3QK`~DXwk0lSJ%%e205oY;O@TQr=oR!rw?z7xYr;2=wk)J@ki%->*b3m9v<4 zR|O)h0`d#L~zxfOphFLp2S4m(2{uWgbO&E;ORBL2oM@qcJ%R7A)qWumCI*Vwr;5EqdWoE z_2Nt#5c*cV(%AA2VIxDBMn2xAbR+a3#pC~cDf=}vrFmz!oBj)(m9n|y{#MiWwMjvj z$DmPer5_3}G>fM3IRgQAn09y;Pv_(LsV}@oLYdvpozRB=M1e64#lRPOA4qu1Rf&Rm z%bk}d*vJfB@iOR`$k*iFJR|f7vhO`FUDEL1Z@Gdb(muRn{A;>OUdV}ac;2fh!b$?i zmeZs+n69acK6Qh>@-`<%(SX>>a?t(Y(N}aUbcn}RzwCWhp5Vs8?wB&Ug#L>q?nd1; ze_1$KEek#ms|P?|&Dz9nm>rEaG@D7jrga&+ZA_ zKWq-o2)@_;WLfw@I+smsE2xAVu5S|>bzEqQUrn%D{y2@lJ=JZpMPb$;!B6@Z+2HL? zP@$y?cPQ;`Y4zg8Fm8&xYR0dtYxnF*M9~$WcVmnmVEfmv#44WI#O!|hc;{*ODoo_J z%kzt5j~1-A#YOn$p(>*K^mTa|A4J!oYE|}ib)rkHmoN|J9Bv`8r z;g-74>@sv#Uu^5}<20Ccg7{1$`I-8ixKUFRZqNYovz9n!(C#vquSC&hX!J7)iUht; z^MG3CN{YYU017wbSRjBD63c!l9e~^VA~iLQa(5591?Fe)eX5>DPuhjR9u=Pol4zeJ zIn*?|uoka;-$xI?ni6bHp%+;20HS(>fJJ%a$NqPnKSk?&OpY>mA+Q$mo{ppLV|#0w zF*m9M{tr2er|zrYg)UYun)FU+l^Cm5ByLJLqS}dMXsw;{3-FQ;B0T7lv9k1?-nNO+ z%pJMtXT-#xpcm$pMbUJ*)VEPvin2a`uOE!tb^3Z%-J$yQ!~}G>h>ZW{U3>sjmLlQF zY{8qjMdT?M{)^n%^`rrW$Swc0VTAYIiVSPwx?yleCM$@7d6UVSW2)kqXVlXYru>SF zr7V^N?q_-Dyha3G4$6}44cky}O?ZbPenv>K%BDCo@}3l4jUS8LdpZA3I)2odCy)Lz zp+5~LA-3bV{;L(kg-&FkHeVCJ31ybQ1uyTx7EkaTZ`zKX?>dupL1mZQr*xjmt+R7> zex!LkKD4F1k3vXt=Uo_cjHD|CBX)LRh9K<@x8I&m!|c2d^{>i@tATXg=h$kk{&;Rl z7SzFCmM+OaEJc$3b61LRJNx!NgiO&JESrY){nY&BQeO5ep#9v)#|fMTAE^hFp=u4Q z7HrgOnM|A?{`LkYDOF^@x7KRS8F8SjylMI2t)v5lq}Jx4D?XiARvS>{E~r#7!S!Nn zIF1E%kP|_?Kg^T`GVt-IhF)*2izIwgq+O?*tQf^c(Vv@F-JvlJJ+OEjTedl}|&=Sk0doBmhun-37ZtwDQdB zq^fuAqOE8$-h&Xh$M4h<4&s}LM@8AilR$(}jA-{e6x|>0;rp?ga(W0w-4uYg z;a2ZbgDCf{$S+m~g0!nntUp-0nw0!|iwfhHPw`O%pUb@Ju3+W|AE-@VkP4Jn0xV}< zZ-Xnp9UZ@hMO!P661NKrXLklrZTz}dN%-&LZsi;jMtx5^e$nO$%c;jTE65rpA|dU^ zXxsb*hYPIw4BaCOyVEnSS$G1gn1(DCii3Kv2ny=T?O&S_7pYISCaDeLl!B4yzFN=G zM5yFKXhw~d@sR*%k#KFKlxyl@ej+4YznfBJB63!q?BRI42-E8EaXl;xZs1KkQQl9bA^2R9#dt~yFPa#EP_>c5m*$-V$OQRhdel@)hJHw~^Kg*9_-!4t6kM3yVQoL9 zSDU^wTPJsFEnNLl~z3Z@&edUBK+8I2Aj4bp#3olho#hZujCYol4G^e~(Pa zuc8%}$%%H=9Ykoz!DTgRWI+cub@4ZO7HY%9)0C!@_yNd zeawFE%juFg;*7d075iW$_tQsSGxn4NkC;Eymd`IW&q z@@U6K!g7H$vrI9J?7rjs08@-{Ttc}#Toy&Ovlj;n&$_-4nMc>-R#{M6mFgr>)MkhAz1B6X?o&5q86OZPG>xviWvL;mY z1T)E2`XI-Vx-Z0LE(uSZcx}jhSiZaEUlGm(MYB_##>whu8dRCx_-JpPhEwDbLZ(Z%9i_jnvz>8hRe{iP|!yI-!b>pPGvZTC^2BLzh2n59JeZ$YgpJS$w1l z)#V~t7cajh5FSi0Yf_o*i(fvY49 zWk(Aq>%AwxXOi^NJ2XuK7a;@R7tPg`nvb?c{P}{_k%Y(>E7GyW!pv`XE4s4jY=@L= zW;=z|{}^R5Q;2e*MhcJA9cH9oK5wy}E>MKc>ksW})6G^JtR@-KPaG{}v~l0{P?102 zdpSVxYH5%X3~7-ECVl&XoOlY!$6FobK|(0UUTYy-+gbC}eu3Ul@d957oWF#E2~+YKQ{EqZMIs)^UPE_(BsB7QEvX0$oIwq`IEYbUx?AUbAA;arZt$? z9d0VZrU~!>SH-t;CfUn*j5*~kebx(HpP8uDw?%g5viQZs(^q9TA_l0sVw!QsvymCE zs~!6{vf89iE+dlaRmWThsVaVMOzo%zX)B(5>W&xTVu=T{jYwDYqb8~**02nWZ{^Tb z9}i4zK6?t3rUhRKmx<28;!02Mtqi6F6AZAB`Dv|UhN!FW(LiB)Umau;>@DTxzqCBg zdI*6Ag@Yj3bY9`Ycc?v{hp7;qS_>Twb{)gkJ^O9X2D=Fs2sd+>eEVC54xi~RJL=yL z?#OKV6S_Tv)f9EN7}ua9%%Zy1=9}3vSP5Rji^Ul}Pgp9B(Ah2D)vEr|oPrGs z+nSYFV1-y5As5`>AyX6yVrBuKtIQXT(Y9hVS#ORUji!w;!c5Z(?<8%!vAZWd-DrCx zU3e0*nm1hP18+&c^S1nu^FiPi()oa&zD3bu_>Je-0*}uEk`z!(fV%n8pwqt40LG?< z=N5rXbn_8FD0#rLHjZY;?|2?=L% za%ib`ByNmdSdtcZ!YbSfvdW{kMg zSqghGu{L*GxV)L~C2X|grEIWzYoTw&7@f(6k*oPkPnITG)+ApvWW!ij1-dT_|F6z8ZGdpH&D1H@{fmkKM}g-EIoy|qPX9AYHrJ| zvPBV98|Z$y$7z=)+I$9?IEJ+K(R)5$;akxk%!F+)??NvL(S>H^=!;8o1RC!#hH)S7 z1;hysNW)tXsy{Ze%US@L)9B(1QMLk1{#CJJ- zh6sjU!A*onor{1)koMbr-->dlPe78w#xq`Psvsa6i zDc0|y;>-zad^p{O04NW>lXIzU(J~!uhWZ4Mu>% zx3BC#Cdt)NKFj>(?)CjaHXEdeTM`_g6tb{3ED+1SOm}R(Wa9DPs%!G7t_pb+zMVxN zHk%I8;`u634E{{qVPWJm*r6^$spfpLltF8I)owMD^|=u#ky!RNmq(mz>pQf_jxTmF zf7W`zPlWPz!dv$+hgNOLwjYX5ZJFC_>3EAHW?0n=gl*q*_+Fpiw)(ErwQq}fYxUsv9osRyi_Qc!6h_k8UHS;&c zHx?*F?y5UX5r5M0yTU$n1+cf&TMEt`3sM(O=&Zw5>Qg3znVNccf#Nz;KZD!B+aB6f+Q#ndy z$0vHcN~ybUnL5}8nR39YLfs9A_kh`Dv+YT0k`v6I?`6RB6W8C;NU25@bcefg03nHf zzqsPdFrU*?$Hv-R_L7xQBDZd{O?U2qg0GGYXMh-@PHz6z9LN#B5U` z(?j1B&3<<@A=!mmbMOXS!dz;O=rJ&Nw06A^I61jNaFVW`;ft|k9Sq2Kuxk9vG(Hsz+rU^o+uj_O{9 z9oF!>cP>hC#^P!74bA72@KLulmN>T6=Zl+(;YYvRLg(hT6NMI~ZTSI&AMz6Ij$Np* zT-n-|4ttKSLx=l3{!EOZOPCB{(ZncnMVL}G7c0I; z0H9t;A*T!g6&(Kl`hwz}l3#Y?F5U*7{{CDW6jQHIibCY7!+itfW^cW91<68S8pCM%EKvPDCJTgu0gZXv$!yW-7_7Dq% z1itODT1;h_DC>4}BBt`kWwsMHUB#1ML$fJNi;{}1I9Vs*xW1SMa&TEtW(X$4c6O8G z{Y_^?YT@}Q3+#E?DiiqVF-IjgSZug)wf)A)XMFcc>n!W|G?JF*3NhtX`MQG8OaXzh zgW9U=PBZC-KouL53}EzMe>hlXRI5wlJUCtP`dK zRFscE;7VGCI(sPNExBf@^e0cfZ2C4wmTs8}t0$d}RG+#vld)7d9;dEVy^u!7r%Gt5#cf>^>MXO^XVanb^E(z%ZMiy<2O8#IilzKpriQ)ztY%BtPv@M{2=--cIC zb1p=_HrOr^`cZAX`)AFtl8#j@csqiuMy0xCPvp&GlB-ujMa;?A?dGEoZ_KD4Ic{C@s<>^%NlD<(aki2yACtbmkj>M)7gymh^WgBt-{W4eXI=gWTYt?*D&>-wy z;8q)x#Zf%IJY$0pyFE<5xouiQY4=+sGx2BYFWBMZ8u!+cHDfkj)zaIabEw&Or~r>q zP@Y_XHm{%}CrX_J*pffNRy->0ZH@?G(*3a_{xxww5c*<=bX~ZhXiJX*K10GQX9=@(-bUTl?~5q3g3_53WFo z;$(3qQ!gcME5EdV)@(bAE{q$%@wTYs&i{$7$PC?YoodL~%RfBoco6|&wB+&nAT#(U z`91^+uspxAAGaWl5_)y^b^u4fe7oWlXYgT>uqS8Y*n6qX=PEfBT(+L1pc5#}c1l?EcPmRDlsS>Lv;4zToiF4H@***v5HeDej`SU1fr@}qBI z)w~QiHP8;hcDLk)ehw9A?)rT0L|GAh$GkV+VCRQOtW&^UIw*2L`JBf_$RarxDnO^l z1f8R7mb0NPdmx+s;1(G9M~_sJA!wy)HfC7}Nz7itS>r@zo@T>=sMk*i$gvg`c0Bg; zMET8M+wQ~xiEzrzpHAO5`XdsH&3NFTN#Eb0UUJFTjhb=>lYf_L{Ym_os0NU+j%Rb; zV%O1aX!0GlPv~6^S#}<{wHQwaGeDrV!>MH(C=H|hj{T@WEJQtj&f)L?63#`Lr7O!1 zouvkFM*{?oPqe)Jm-VN=eh$1nE^ZfFkMRK82I&3*HKSet0Q*8H)8t~)_&2cZACRtG zFmW8$fwP}EeJlDGtmy+VR955J#fdh{7w4(O&FV(IzdYXmTel0=vVdd-b#{jsT{do! zOmurd(TM?lYLqw2`s}Y24j`zr13DosepihmsbRwR;n49UT}dj^X~FYvxjF#PsyOGl zoCe~{SpcF7`z-%+>s#^q$#=9)cCRyZTwhDqhAP{3Uis)uDAL1~(Q_K%{Ak3X@j>#T ztG}k|E2_y|mjwtFJuRS)r`?X*`y3GSZh@{!e$l?|KBXp~&dnaPYUd175?zt84fVS_ zLmd*8A2^oGe+qa3>#2*i+B&#jV|yax)@0f@I7%~F|2*u4Yfu5Xz_aVCYque8$1V9S zHoAVzTn>1X*xyVjK`#;{XHi ztZm+}(j;wQ5l{imCeGk_CUQbiQq}bWkAkroPPnSx{i<^09l`6lFtrUOn}ba5`PjPX z5TvOyuD^bHKV&{=qZi$%El?aK!?U}ah_PFp7i+2%m`>z*Cgm?aP0sUNiaQQYED1he zh#)BIdk|#d=ai=ng2toTBrzP3_4??CZ8d)B&;f=H7cD+=zc#k4*US3$dxe7zc{o>w zfY{h{1A$z|x8ELuwThF?O{c5j&YV66Yw60e4*PhQ@>0aV9|di`q>uZm0y6+Tp${8-uHIGwDB&Xws5Gq(XzsnIj!iXP@!TsErZ&k84;XDDVBMw*Hu_5mUWh? z(x7eN(aUR3yxZg4(n1ZbZ0C{LVW6M+zq7g)%QFmR2*BqH^c33sjziY+CP{;5 zqkK1(;H_LkLK#R5{*@C}CWWLydu*<2to#jHib2wd>*W;`%}#kUtpOLL7)UJ%Anae; z*?>b9)aT?nHFNYKFL+ABe;*@(^S3=K@%ofn%U9xvUgNWs(aCG%zqWv-b3mhh##}d| zTDu2yC*3QUFv9?mhFIDi`--Ci=QkAfR9r+gkL5K*bOVA&faNE1zWl7q->xX#7^=#V z9^EdS9;1vY3Y?q4>6Q4=1q%>se)cyQnt`X`%?EA{6NO6y@UfQLcfDwaXF&v8B|iFo z(*9_ZgJLiD=izM5X%o7IUeZXfD6uN6Xz-87_s-<)yKLFAA0}F8jjo>%0I+rkz?(rk z3epW>uvi*0N;;o%Q}ToVI^uzoD3>O@$N(D?&8VYFlrHOfaWSE_fR; zD!Qcr@;N2_6+%VN4~ZcVG(C|T_1`#>LW7tSNCHf+FBE9}@of+OnJ==Ad_)Rni%=3E zwE18(=vKD5cxQrxv2f_}&G*S)?eK4hPu?!s6;NiVE7t@t!_?!?6WRssb1f$`cOLSA z#Wtn4-V0(zqlIhAi9n}q7Gw1wa|2tGP)L<_z^vFfA0fNIBR|(zgKSFbN!W=`rDm3h z#0|>!hGFA_n(pHzFcmT2{X1QN_s7M&A;4t7FRe8=4Qnzd%8lIydk1lOw9@j8(SvcM zmau#6Tb0ps!(j6dXy?YKY(E96ZzapuUEQk@nK&i~#%X!Z z!I;?ppbph&rzo4q#?IlZF0J47EyaBCUbiWz*fJZDl`zQ9ol9jmjHlYEG$Gh-_$AP_ z7X10h*(S&O$$DvF1)gPYLKv4derK!SW|!{V!|MRxuZxU(j!BkvQ*M!OQ4-mBe%d~u zQd?`G4TD>wpY?wR?Vz`>&awxemHHtwFh`Q5bpkRl%-!4dC%dil&r!~FAWTyJ5+fQ9 z&)_|yfJ;&|VDFipg#)MfWr6wx{Nh~>p0wd9-(!kRHuo^MdgO~B>ukr?!zmVqwZb-O zm}Sj=lew$K$fSS_cid{H2wLX;#B*Pk+}@N!6?u0Q+PF>Z#GWHAsp8)G4kxf#PXc#s zUmC*kEQpE}%SmC@vr;<8Hp1jb2u9vb{M>IunJ|n`*Lz`l4wF}R5AELdjc>$}Uzx@j zEPWFNwAch_afYjFm*7!*zdLdT)$8_RA_Eh=cXZN&ZOw{4S`zw- zaPPVyc;4|42hj25@ZZAEfjy&o)?5kt^lmetwAr9BbTT&;qXoF1iy(ayXc*q3;YRd# zkF4?m@Z9go*lHMP?I+D94Vk?QJLVHeY3mspNm$eQIzu{p84|#qh@RNTW z1Mbywvo|C;*7SGWBm8z&X@kv2C2GJk6-Ah-LoJzGAQkAv0}Fy*$C;>?#gxsjM43+p z&5mTkX9p&P6Y^l{!!ka}Ei1+Atb}3sRd*f~eDy=3Fy_qE+{59Fp`@`kb=RWM$>q#N z@SSwq-2}?;r`NOREAc6GoQv)oi3wr{5B>y_f)hXchid{E2%H=K4!R!$ucupKg{MEb z#(qn3+reDV)vAb(S|7lYL7J{ty{pd7iN-uQAYP`)k9JDqCXY4A> zVvY(@`v;V3*ir)qB|{`UJqM;z0q+V;ca_L=sK`?*s%)qz{+8Ed7c7we{+&zM)OP&C z_EE#iS6S~KM!uqRcz*;vK4})*cRrrj83IXU&c6#?B{_EQhTRasrmS!kGU@ccrvZn# z;a!hW-=ixveBIgxw$dF8Mt#sr{<$qdX4Iq6_U4FG))99no<~jP4=>Qa(oD7dG2N88 zM4`;cI?3@NBCRF#_H?6l2df0LYg_9RnWDk5avo5#M-MqKqMmqu^=a*vZ?aBqkWieO zXk=99Morg_Hw}B`2=om7t9H9o0U3Ijr#*OVLD_1%p51e* z+P~a{>Rm&$F>ifQ$NF)JAH_XZ+mNTn9~NF-m4>!^tYGp{L8f{AdMI*_`Az3NqO<7g zpVE>nn`<8>32yX%DdX5+K5#Fxbb2r4)VsGuX?2_seFUj&_tR-sJ%8u{(u(i%uuMPLM9n`d+n*w!N;NwOLy~Nd-y-G2ch_M43ah zwCcXwP(!3N+3)>2t)BG4S|p=4Q5JDW6LkF=%6gapCd#7uP4>3had(?1{zad}ug+!C z(hB$g2}0W(YZiT-&j~}|GQS_Yll|6Glm}h1t#jYXZ!z6__DzWvQ*KTy49n|My(Ul) zVtlKi=B$uICY6luiTX-u2K{VV`dCs38yJFpn0=V(fl7W2XK2yEOp8>v!SuvDWfNsq zXDGJXq}s9`e%9pgqb#+=*rbqB4HjXhLVxHI+xNQ21c9LA7;6gxo(_ z@tXNPaeM<(zN?e79p}&2+vq_|a_nt7>fNHW9WaxtvUmh%+PF+ukCi^*B{$w_v`Czf zm8BZz0+dNdDKSGDz_CQArXRSQe3?j~lrc;r+5FyTS-UfdfG`cha5tJRm;`QVSM-Fm zei+z;N(aR~O}z*2y(ncq%K?#tV%_x0UkDvKPontkL8%vKTzsAb3>MR9BlpEQkzQcc znGJyWDgPqy8WAunu|jY4i()1f2=JfZflXO2q@9NlH?7r-i^_-}sG@ux5Hv_$NMiz| z&1DaWTmZTmH-HyjL>_?`(!_v>`C0D0^93>XSq&KK@}-5pXT?F`Zs%3RbMc9b<08P! zAlbbP?aLR^=773rjmWqB;#l6A5HQsL;}dU z2!&K9xrn+iAEvr2w)H(I-28l6k*4ev3}69zJ@bsBN;NJ>h?M__Q#*hQiIjEwy%F@r zzT~G}vE6H&N69z7gI@Lcfp8uz=3|N9M3^X9{SmZr0$I<4Yiae{nRDa1yhTGU$%UWF z5VG^L^rS4}kVdqVw$;(PS@mmwPRMUkj}42yv5q0_Us1uaAXd0}?^_OyxYXBE1Vxce zG$7QhXfVo8m!g;#)U3rNo6SZNFrugZqxDuU9?4hDW=823tj%kXOin2)^LxSLBQ<5a z$8YcXSzG=4#Xn%q9h<=@rQ6BR^%5MeBwIeZR%~8r_w-5@Tt9JRxMelkMN#Q@XZbsU z_nXwTd){UKYeAkNh-gXd#`nX3+vo~Oi!X0jQBNh`*T;T(QiS1ZpVyvX2ij zxyF5RrnyDo=L4(pOn#S_0@}$3Wf17!=&CEH9;!BR(nGoTrD1n;Y77o8A=((X7Hg&) zrJ8PJRN~EgIry8O0lWYqm41_IJ9#JXwH*Jk!1Ys>>b9SIjS4?+Io+R=0M68E%F4}D z4TQgXH_@Q4e%Q1AyXV&LV&YoS6=0?n{(XuVV5W5LE%#do72M>;UvKQ{Z(9U5cN*P3 zS4G7&*u9y3pn?BC4JeVYCib$DIs93z!+fjdQ9n?%xZmohsi~#D_n@ZArF;9i4Ap<0 zFQX<~H*d4r&ppbZ+&-(pnF zgdW|7ece=V#JU#~WJ{F2SqnTIfHg+_@e68{hQ5=%k4+}bQpt+U;?&X!57cyOpDQxo zkO&*yT#A0qk}7zgom#LsA3_HzzxJ77yrjnOo>`Oc*3&lFs%a`HE!D8)=5xHi+ZpQR ztJ6;n-(`$a43o*ael$#$sr?eCnuLNSL7DJ}N!wI~B|FS-eJf&0;A0^VSxU-hU-(%> zZWdl@qboLwzGVP%izK0%bcK}JYaY!zoqB5yIwbv)DP6s*oL!7}63xDb)$^0EZa~@r zh$5=+@;-3)kagtAI$!Ft>yK6XT-IDA~zw=hH?h7oYilLv^}t zyQP&*7k_CNGzz_u`0!8I%aNZc_YYSmexgKiTXt-nl*B-B47jz$d>&nvd7Zv)A?vWb z86dc1J(TdKAx7Mpn0uFR2I0H6Ul)c}I}yzq4DVhHZ>EN}%i3*NB9rKfrHfRO|7Nu_ zoY~^n&P!q-69$Dp1>BUrj(Iig0@Q%oaN+L%)*S#UkR-vs#1#;p>A$G0rd)JJ0?PUe z^YC^mpo+cpG~c`TZ&NT7G!N&8CH z|I|6;SREawP3>d)2R2DXi_UKs;7*qNK0P1@ykSe`6|w*Rz5NIM_>eA00g+sp3Qq)7s| zU1JUWZY0XtK>O|NN6fTw9E33w+ zY~RHIiup`qCmOKzUS*$Nf0+HQUWr4nIANpPy5q;_ zfl%I`Gc#U-K*F55)zdZYf!@1R^xQxu@U+KuyVe@&R>*f618vvbx`&x0t(8-SG9#_^ z#|508elmJ;*mLK@KD3!P`_2(D&)8sPk;E+a2K+A-!ewmvrwWD6{TeW(J3G z6Qt(N4wX~Izx71pj2N;C-gGU?FjfyZAUXQyMkC(eSO^K-DKSYzrOKxbwIl7jivWN{yXqt+OQipF^vmz;5A?Qu-sE zizWO1oIJX!G63*E=bM3RHvqLu_uNS!yLi3|BtZqrUaS`x78~HS2ikUTbuXR^fSHLu zO4z^HNIV62?(8_B*B>u3FmYhZZHPDF9q~narvxmv&?Fi%eO>{*J>h&n`4?ESb@BWJ=5#niX7A##8AUJi*sY~&_}ynjibr@%{nH~!4=P}u}lV&?{lHNhuCOeeCp zPNMbbdyr{&{a^XT_3WE#Z^(hJytv1 zV)V_b%C-ydE8oVO+tVKY{L|M+@1nbOD{&H8#HN;lBwD5viqc+mO={T-5ZNCqu@XPc zo9z6S%xj#s;9ae=n9XsCBp_;1q+Gputq<0fZ_Vd%O@AzMqwr9Nw86G@`_Y&yk zI!TaBgR5x5!(g0Norpr#oVX6);}+!D8}O{g9eqmOh)}t%}&w8vw zV5~A0NZ=H)Ap_6+inq+XB1X!bb+4gyyO+#77rjF3UpTs9r`LFj>RyK7f@&rz(#*Wk zZAYlLg6C%wGSBzKByU^EFK|HOHt2pw{jo3`XL||fLI1DzzB8)HsOvHbp;r;<9i&P} z5b0F~5d`VIcS2F=Btb+G1q3P56+t>Ey+=Wijwrn?Zof{z-+X};wUaHuu@`c~%c4%ruynMiO+}-j=K`uSDFikAHY@N=0 zrr67`&Qw#ahrg5-2sFCDQSV7h_l>hc6kNV4)U>Gh4W^ZDyj*qaRA21$YRcyVd#1`3 zcn2B2v;Yp&$;92xn4XYrSKOvMS}~csNkYMYhK82p1Ezsq5%$o>d@KC>!qwrl=ih@! z5uuI^S0L~j&78dQkE-EKDR>9J!}5)dC;b!j_EhZu*bZkb-3vvxE?sf8GfpHbm^AQF zug&6`bj2r&j?l}=R;*h!ieQrIYZI2Le_*zzPfRzKF(Z8+>FO(fqvp;@@qboz zKn}#u)&;uN4L8WR3&JT!DSkN4`?%RxmxIvVyd>*RFrK%+z9DVz7TFwvG0r2)bx-%d zK%^@?b64-mDm^%@e*?pJ6dAjxX{Tvbk7|PKuuxV%b@*CZt)*~nd*Hh%jg3a&nha_L zh{!b^F=I5QS~(MvS`LyL9HX*`>?}!nIX4->d7D>Ap@QVK8Sv-ai(fU88HtW@9tP&$ z$(=`C`eqtk(A`zzMx^D5zc%hL=qq1$iDgv+TO{@JR={EKFJPmR_aypW!ftJ*Toc76ec^sL*ukX8T( zfQ|+)96~kf-w)rinq1wlHA=OJ*#_VcRk8!Er6?2~yUseZ@m9eXtO6Lj3~=U*rCyNW z+z|&efF^=(i{cZDj`a#gTUjnMfFm<6&xHwv?wN<1Wg+f1BR`n1BOcL$TD&fRD=L{# zgfK&C-kY?{r2w%*H1RBMIF^tQgnDBd|DBiuV{84eS`oz z;&2Zsd>{r`FMf$laGMXA{CJmn<>_;Hw2gs@Uz?`N+Zx905Q(4M6x1pvd&n3xKLCqx zy|M<=UJ&c)!@(jigL%(iD;+j2+iIM!u&&B{7Pp^iG%NhTUWIpy3{Ch${pKGH)Hj+X zE~*D4qK3H!1J002iW4v6U*rM^M3Epir4}g8kx9#0HK6ed5700FlXh(ag(}Z%E|>FA zu+IiO>#P$K={cdwGaHyQmO}0R`j_IymXt)8Q z98pAD*296N!pLsl45FrSednxHPr|t&ie#-1v87FN{F2O|HLiMQ|Ej=(k>1omqST@L zJ-!6@;oml9n#`(4EC2TwbNC8IfI&DdbO_D6(poCA1zU&P&Eb>vqJ!B~nGkFPbj+x-(LKsnPlf);8lH%EoD#_gr1N?ZC_56B`aJ%L&S7s$ zVcN=oBK_tg9`B&HP}PdJPzW1=lm;8#kTzu7e>e6y-X>c%WYNAV#63bnq7xm!D$CDm z3s^C@-_qM_nM7K*xnC^T|3=3O@pkuq4?c9mwxWy#M(9axi7AkZ< zJ_xROUGEAjSi+wkzO}0JswpVKzeyHg5fYfX08t7tuXs)rxVI-*5^u50{0@EB#LI_RogL0w4I7 zR!`3d66>@4k+fx#aZ*dGJ!@K2tcjH4GCkD>$2v;Zp^``aTc4E+x%be-2m~c@R z@MuIUp!UJANP1108=PaqpbK9AH96ED@gtc9E9~zK53qRx)Wr&qow5P?`A*Z09N>0i ztbkoCUAsUIDW>&l-2Pcb5&mO=9htuNQj|?)j0@tupogtzt7*CtggROVNJX~(K)gtw z*SJDbqJ#2!`9yPA-{tCb%GI|QZ4+<3$Hx{HDHnDTpZJ!8fWZT$fpxwy-*Fc>ggMK@ zlATgRCu%*#gwH%7I1cel=!{|WC);cLKS?b8UzC+XDV_oqA~w!B4uWSG!(r*kwCg_R zcRr9IKem9b8;_)a+JI( zXZi7{V`$SyxZ%}r-z85t!W72zGNt9~^|)=@0dF&HQv^qPT@;A+HL94ccS1M!IL|iI zZE{E-QUud7lCN9pi7=u}t0>q3Hj4qrS5@OF>8s z#a`L<($>35k{V=OFJ~q71u#o86)LfTLmls@0B7%z!AA5 zZcoF)?aJ7Ik{kLpHQ}UK+qTy1WFAXVtd<~QoX(gMk~2#*AN?XNOe11_F0jfF8^Ly+ zW77sVwvm-afPOC9>Pxk^`Fn}t5par#9|iTYZGn&>l3LjP_2V(?N|mFz%hmFN z&DMr7>3fCGTSLf5GP&lorkh1`?Ki%^iyU1rt$K}heljE3C_Xv0-K)qBSgmO`VomUG z0++w&jpi6wjxAg&pTHv(C5khHOJ_X_e_(30@6R9A-yMidDmi(YW=-|H=b|{%MnPn1 zA+^@qn=^OMI3%7x23jG(W3Mu22a(*Lf%<4iE%(|DYdJk_sD}5FNLD3q;v=5LOReokPoHGCS3O(+w9Mh>5DWA&k76VYz@LBn@Dr= zy<8Eo^GlHgXDn;P>u!-v2!L$_i_vDuKr!&n8JZZ>1AP7TmBqViAjcu*^nlEz{1|TX zRn(eoEprAlY^y`)EW%RVcLzFT&zu<r79h&CjPrCl=}>}{iiNB5ds}@T{8Tk zac&#W=*^iqg+B>=!3h4o>2XNVBEgt2Fk-7B^;PqKnwKCHm) z3)jRXirY$9GBW{!2n#a#!|USL)8%PK>$KpB%&Wvznhw6pBvl_dgWJH8!Ua7 zMY~>eiE~2tb)qHs=zn>gx;x*yKP=Ep#0#r`k;$(gziwkvA3VD;#CD3HPn!lMObKm< zl11Uj2p3h&MwEnjymfDcm<4^)ua^;pfyTx6zVx_h{$$cr*XIH?%#9V*bCKQ?}O{iaLHI@h2G< zFKy*T3ajSmk$lxG%zg@0iJz71t!{E+JXPvaN*L#XQq_U<&BFu#K%U2KpXeRKw1hrs zV~mc)x>-h&32kOq-q%=XoP-|B0lhN@>w5U&ZVzqke=CLSwhKOMK5VR0^mw>yTqUbC zxR-IK$V;?)=W_{hYFOJHl`l7X2;xPDEM+$I2oCW#p;LVuKTp`0c!t&B==)U`QlFmP zs?z3i%p78;1@);PHR?jV=NN_$fBounoo%v3Pse=AABN_#>$0pBds(NoaSe6?r2Dx< z*)+`{kf${aJXUqjpII%{9Sx3;e0b?BGK}!fX$jz8H;K&uo{w?PQ>)6wKGKcVV&R}P z76qtw^;1pe4Rj~OE1zl?d&Z+iveBEzzClgHBfrCr<&4>9TYz~A$C+)8g-&({g_jJN zY*~0I#$~_fk4uCNECW{`#?_Zs zSrG<#YCL+o4`(-_2FG4xUdbSiSJNeA;!p44_kk5M4G_~Y?vcaqXYmsx&>C3+}mcSd)9~tvfE~`Q2W6nWT42owq1m0k2g7GhGWryI z4i_g!(v~~RWCr58%BR^o4@+yNYl9T1g;T;TuyPY|hb!g-gs*;=b#*Hj9#NWwHh*oR z6UXTYm?BVX(2tO=^b=i5H)D|~M(_2jsAyMJcEoU;o$wzdi(jpKnU;8|Vfzt5eV$*; zE0&rAYL{(i(rd0vxHicXr}6_sXRl<|-KZ=C-c-8lXgy9#>{j_YA>Sb=)w;l!8WGXC zs}^&1WJV)mJemnpo1e5~A9~cZdl$cKPCbia7J$7lXWN@T=bF(TT6l&5y$gO>m}7Ul zi5ijpJUiKtQ^i&udUVO_3415dKgi_IG3X-Cw>1jF!P?bM4c>l3Yc6@m{v zai{&xvPLehx7_-v%YExySZD`2iIE*r z+JUc{dFmE+HxpdWFm$gi$!T_A2n%=Hk0Y=g#$0}IF*On7il%2|SDO<23*&8fNCF31 zd-FYZHfY2wTtoGBipDMAW*1d1zZ;f*k)k%p0uH_`4yCMKB);(P=~iqY9~WQi))r7F zPXzu{n^iOBFzxxV z#fv@D5v;P_mfyPdhoTnhP}Q;slVKcOIHo-iBq#ju3JH#LuEPd@K!wVTpD2E8+Nj?g z&a-}!G7IQp>3?Gcxk+NQZhz;{hEDbJ{8h<5t3t(*)a{Ojgx}2ssU=v8#>Uzx0@~LT zkh$TM&%eIRQU+Y1pB-FAihT)wAR%*-1nNS1uH~ll7yflTq}}ECwRvU9Ly7fMSjtSO z;M6OR)|ps`*TkH&clCOtB;IX%Sg}FoZ~L>_F#uG)b0Y{&RvFpKHub#HZ;^}1x^j4| zb=%up_n-Jm+x= zIajFi2klC|*=MiHgh2GdiAFCN@2e6wg6do}HNUg`Pd}KdqIwCPkk1HfXT;~+{#FUilIZgRP>v4YZlx}7 zon*!YI1QOx0x?i!ls01x>WoRg{JuUKvPN+&_g0L%?p!r0iNfq35iUjLcP2csw9LF2 z(_)R6=b(QShlSO=-Bi|FDS~juHKks$973tUg!Y1TnQx=yA!Xq=!`06B6HEe>ol2%> zH4$AN9G{gV8LeaTzO5b@ybPoCDJ8M{Ib&%cx3B(yNFfgfeIBLemfiW{!7;<1;?|i@ z?-K!1cqW93`3J@Ho9RX6aAiR9y2AR`NNNA}xc|qyLhs6nbnwPFe9U-sAd8P;*2cM* z+=ddkwr@tC<1_Zw&{1QjR!@0|KQ5Tm%mj3l1BT)H#}>5&nwae|&Lv_~&tlfd=XAlk zCT+pX&K&=?Nd6XQ<(H3LF~jDb_ryHrvSnGKtuX5;YKpLaoAteQGQ`Q8V@v2|-mdkJ zC*|FpIbcG7(gt>tKM!8DB+`?(X}(FLVO(o^`_9stytQ*#YYWIV^XIhQ~PBC z*0SOi!%thFodF7<0rfY+j)g%m-sQwEzUShCn13rVuU+N9WK`-qyhSp!tnc^Ev7o~0xqJ~GF77Rce_N(QiKUszB>JprSD$W{W}YR z8|F15E)q$_HUv0R%(9!@Y1ZUQsmeqGXz=kb3;g^THp%=LW`FxsT~&6!OEpYTMet`e zs?_H{T9fNgc4Qy#}4k=(f+Xnc2Aws@Nt%X@|eCR+WZS!6M)=Zk)M^PafOrBtY5mYpbzeO)H*DtcJWKE0qnS-hTslCXXXCv5DbyTg&!KkBLbd(D9e_TXlh}_+YV- zp>jf<*1X8oTO7AN2E67Uofq=bQ~Cxe>sx(cx~^6 zrCY26J^%1GwQ#Yi@5v^2;CV7k4ySb`EsolQQynRtj{gy)9b3(6Qye_#@E8Se3T z#{`D&KN6N#bz=zwjp*HRkAcyV{frx?oD*9lO{F3X0!`(;4Et0-AVR%vlhu5_SV~-+ z>8W2?dz74OhP<4g!jpJcTW_z&z&3v9ZlnU2doCW%mW8U969J?$xZFsw$#9lL@vY(+ z2GE5H!`IzGf7(MiHY8QRj?t=l z;%(g4N~3(2Bft&e$9=Jh$(zI$E6=*N!%Iw9l!b{=_}Q6boR)8fZ)n!|^kkz{2a!X? zhd0pYZbKaJC=yYf7)~7q;&9j9-VQ(NQWk3ofzbQ;8|u)3ygwtQ zdaxgS<|I;2%Z0qcDckUM4<$wEz)swNaLI>#a_K{}p7Fie>>E| z8JXYe`B*H^iQp0Q%W116vEfi&#_Z+}FCNN23G*fZP z$m{ppccsdrf%4pNuu<3F=TRZKPYL!@V8okW9!BWm%@|P%9|oY2_!~ldWwi}&N+PN* zzsR&=rkL*)djo2U+LV^V*^!cY_T-h-x0G` zy|5Q&^=^?JfjNkQuViwBIV?uZ+l7Pjx`m2bA~~P(EF3G6JXP5SbrSlRBA(M0NF`d5 zkem%za}hi?_E48Ki}=a>bOfyrja*fyKF2BCW zNVqGs(?n6a^5oi*nLGE%dMYo&-<{jk0bQKae_FP!_igbMwgTnQki)|(34_P_`KoV$ zT}|6jjF^54_ooRfrU~uyKJh1X&ro8o)*V_vIYj$dE9Q0^~Vj!3wkwuC14=hnyDQI^_&r<|3Bs5bWi6c{X{7L}=s;c9}1%|7KJ zzMgj<d$shGlvFU52maQI8G0s0yRUS`w;&y))||ia(It zxs@`}J?~`LG-BuyA-IVE^HD`)0!rUPJMol9U#Hz!?j1aG zGkcr`5!(?mVz9y&y@(5-hU(Bi9mnEiW~`SQpJlRVMk(67 zZgYr@&L-~n9SWwHK|DgpQ{dDWFf9kDr#Db7@q1i(X@Tgv6)xK z^6s@3Volp#-X+do1VpO79CEK&2b$WcW2zyIGm`KR>ZIoVW}*V;rhW$$0d-bt!mS(;T>FgN+wLZk$qsuQ4y@5^S#If6lc;zz@ndI^(Ux{ za@&f8JZ+J-sYcuJ7V%PWU84Us;dD>MHoGD2R;csc0~sbEdyNUo?s{1lvir3xPw&S; z^u;mp2CrT1B+5hKwd!3tGVXN6A}?}0=CF)vM^_fG0bP9?&I5>|fy<7I;bFYsMzX*} z-oLA9bqm#SXsDBYnKJ}C&bJ`w{7Z=ZbbUppg>c>{;cK&o^^%k;;pGy2!!5%iW(9$$ zFUSu*^5!RT$^%<>LF_Q5mNW=l?j z;)z!f5EY@^HpvF7Vc$c>Q zj+%NII!m>d+L_^NdhBOU|@7$hbqS+1=`n?OaA#zjUWTo45_B~ zhz*7+B7i0QT_f8b(uz8JotTo!@PmDg3%_brod?4+i~i^W~DZCCl5#N(_o zh-YjBKua}m7L=OWzOX$yE=~#8+qiIKoVRrV@Bi$#(b#EZo(#v0-H*mwey>u$zUO_K$$PKC99_0ttQR6bt&g944^r6_R^w@Jo2NWg zveE18?>&sVvt1$6AZyTNt=+5CbS-c^Q2WNEUxW^-**cmEYBy+`EEIl%ng}!WKWZ19 za&!C*P8Ckj5(3cA;P&KD5jzvo@7v*zPlN?XQZwV&Kj*cATu?l{Q%@9LbBP7`H|TI5 eu5ZpfJHdZUNS*O2d)Wm7Ubi&wXq2hhM*I)qbOs0j literal 0 HcmV?d00001 diff --git a/package.json b/package.json index f24a87f..0d5345b 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "alignlab", - "version": "1.0.0", + "version": "1.0.1", "main": "dist/main.js", "license": "MIT", - "description": "alignlab", + "description": "Alignlab", "build": { "extends": null }, @@ -12,7 +12,8 @@ "packagerConfig": { "name": "AlignLab", "outDir": "out/", - "executableName": "alignlab" + "executableName": "Alignlab", + "icon" : "assets/icons/icon.png" }, "rebuildConfig": {}, "makers": [ @@ -31,7 +32,8 @@ "config": { "name": "AlignLab", "overwrite": true, - "format": "ULFO" + "format": "ULFO", + "icon" : "assets/icons/icon.png" } } ], @@ -80,7 +82,8 @@ "react-router-dom": "^6.8.1", "react-tailwindcss-datepicker": "^1.7.2", "socket.io-client": "^4.7.5", - "zustand": "^4.5.5" + "zustand": "^4.5.5", + "update-electron-app": "3.0.0" }, "devDependencies": { "@electron-forge/cli": "^6.0.4", diff --git a/src/electron/main.ts b/src/electron/main.ts index b46c5c6..8918db5 100644 --- a/src/electron/main.ts +++ b/src/electron/main.ts @@ -1,11 +1,18 @@ import { app, BrowserWindow } from "electron" import { join } from "path" - +import { updateElectronApp } from "update-electron-app" import "./api" const isDev = process.env.DEV != undefined const isPreview = process.env.PREVIEW != undefined +// 자동 업데이트 초기화 +updateElectronApp({ + repo: "DDD-Community/DDD-11-HERO-WEB", + updateInterval: "1 hour", + logger: console, +}) + function createWindow() { const mainWindow = new BrowserWindow({ width: 800, diff --git a/src/pages/DownloadPage.tsx b/src/pages/DownloadPage.tsx index be1af8e..7eb71d8 100644 --- a/src/pages/DownloadPage.tsx +++ b/src/pages/DownloadPage.tsx @@ -1,6 +1,16 @@ import WindowIcon from "@assets/icons/download-window-icon.svg?react" import MacIcon from "@assets/icons/download-mac-icon.svg?react" +const DMG_DOWNLOAD_URL = import.meta.env.VITE_DMG_DOWNLOAD_URL +const EXE_DOWNLOAD_URL = import.meta.env.VITE_EXE_DOWNLOAD_URL + const DownloadPage: React.FC = () => { + const onDownload = (os: "mac" | "window"): void => { + if (os === "mac") { + window.open(DMG_DOWNLOAD_URL, "_blank") + } else if (os === "window") { + window.open(EXE_DOWNLOAD_URL, "_blank") + } + } return (
    {/* left */} @@ -10,11 +20,17 @@ const DownloadPage: React.FC = () => { PC용 앱을 다운받아보세요
    -
    +
    onDownload("window")} + >
    Window OS
    -
    +
    onDownload("mac")} + >
    Mac OS
    diff --git a/yarn.lock b/yarn.lock index 88d26eb..4900869 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3214,6 +3214,13 @@ get-tsconfig@^4.7.5: dependencies: resolve-pkg-maps "^1.0.0" +github-url-to-object@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/github-url-to-object/-/github-url-to-object-4.0.6.tgz#5ea8701dc8c336b8d582dc3fa5bf964165c3b365" + integrity sha512-NaqbYHMUAlPcmWFdrAB7bcxrNIiiJWJe8s/2+iOc9vlcHlwHqSGrPk+Yi3nu6ebTwgsZEa7igz+NH2vEq3gYwQ== + dependencies: + is-url "^1.1.0" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3771,6 +3778,11 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-url@^1.1.0, is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -6031,6 +6043,15 @@ update-browserslist-db@^1.1.1: escalade "^3.2.0" picocolors "^1.1.0" +update-electron-app@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/update-electron-app/-/update-electron-app-3.0.0.tgz#d705889e5bd86939f22e144c0c8b5f919a90f954" + integrity sha512-Ccs46fgUEcMpSRPMNw82DFMux2MGi5tkKkEpV723JmtPNI3qAtxvTeiYkKczN2/LehA3U7JGrGr4MhraxGdRTw== + dependencies: + github-url-to-object "^4.0.4" + is-url "^1.2.4" + ms "^2.1.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"