+
{
diff --git a/src/app/router/ProtectedRoute.tsx b/src/app/router/ProtectedRoute.tsx
index f3b9fa29..35cb344c 100644
--- a/src/app/router/ProtectedRoute.tsx
+++ b/src/app/router/ProtectedRoute.tsx
@@ -1,4 +1,4 @@
-import { Navigate, Outlet } from 'react-router-dom';
+import { Navigate, Outlet, useNavigate } from 'react-router-dom';
import ErrorBoundary from '@/shared/components/ErrorBoundary/ErrorBoundary';
@@ -9,9 +9,12 @@ import { ROUTES_CONFIG } from './routesConfig';
const ProtectedRoute = () => {
const accessToken = getAccessToken();
+ const navigate = useNavigate();
+
if (!accessToken) {
alert(mapStatusToMessage(401));
- return ;
+ navigate(ROUTES_CONFIG.login.path, { replace: true });
+ return null;
}
return (
diff --git a/src/app/router/Router.tsx b/src/app/router/Router.tsx
index 66aee15e..eced980a 100644
--- a/src/app/router/Router.tsx
+++ b/src/app/router/Router.tsx
@@ -10,13 +10,13 @@ import LoadingOverlay from '@/shared/components/LoadingOverlay/LoadingOverlay';
import AllowedServicePage from '@/pages/AllowedServicePage/AllowedServicePage';
import HomePage from '@/pages/HomePage/HomePage';
import NotFoundPage from '@/pages/NotFoundPage/NotFoundPage';
+import RedirectPage from '@/pages/RedirectPage/RedirectPage';
import Layout from '@/shared/layout/Layout';
import ProtectedRoute from './ProtectedRoute';
import { ROUTES_CONFIG } from './routesConfig';
const LoginPage = lazy(() => import('@/pages/LoginPage/LoginPage'));
-const RedirectPage = lazy(() => import('@/pages/RedirectPage/RedirectPage'));
const OnboardingPage = lazy(() => import('@/pages/OnboardingPage/OnboardingPage'));
const TimerPage = lazy(() => import('@/pages/TimerPage/TimerPage'));
diff --git a/src/app/shared/apisV2/setting/setting.mutations.ts b/src/app/shared/apisV2/setting/setting.mutations.ts
index 82a5b6b1..6bdb1a76 100644
--- a/src/app/shared/apisV2/setting/setting.mutations.ts
+++ b/src/app/shared/apisV2/setting/setting.mutations.ts
@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { reloginWithoutLogout } from '@/shared/utils/auth';
+import { useLogout } from '@/shared/hooks/useLogout';
import { deleteAccount, putChangeProfile } from './setting.api';
import { settingKeys } from './setting.keys';
@@ -18,12 +18,13 @@ export const usePutChangeProfile = () => {
export const useDeleteAccount = () => {
const queryClient = useQueryClient();
+ const { handleLogout } = useLogout();
return useMutation({
mutationFn: deleteAccount,
onSuccess: () => {
queryClient.invalidateQueries();
- reloginWithoutLogout();
+ handleLogout();
},
});
};
diff --git a/src/app/shared/assets/lotties/main_motion.json b/src/app/shared/assets/lotties/main_motion.json
new file mode 100644
index 00000000..90873b06
--- /dev/null
+++ b/src/app/shared/assets/lotties/main_motion.json
@@ -0,0 +1 @@
+{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.5.7","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":180.00000733155,"w":600,"h":310,"nm":"ë¡ê³ ìµì¢
","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 15","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":127,"s":[0]},{"t":132.600004964603,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-187.325,-19.9],[-187.325,-6.8],[-186.175,-6.8],[-186.175,-12.9],[-182.775,-12.9],[-182.775,-13.925],[-186.175,-13.925],[-186.175,-19.9]],"c":true},"ix":2},"nm":"ë¹","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.492,0.109],[-1.584,0.3],[0,0],[1.45,-0.108],[2.233,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[2.2,0],[1.491,-0.108],[0,0],[-1.517,0.3],[-1.45,0.109],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-201.6,-8.925],[-200.025,-8.925],[-194.487,-9.087],[-189.875,-9.7],[-190.05,-10.7],[-194.5,-10.087],[-200.025,-9.925],[-200.475,-9.925],[-200.475,-17.1],[-192.2,-17.1],[-192.2,-18.1],[-201.6,-18.1]],"c":true},"ix":2},"nm":"ë¹","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,-1.25],[-1.234,-0.691],[-2.167,0],[-1.234,0.691],[0,1.25],[1.233,0.7],[2.166,0],[1.233,-0.7]],"o":[[0,1.25],[1.233,0.691],[2.166,0],[1.233,-0.691],[0,-1.25],[-1.234,-0.7],[-2.167,0],[-1.234,0.7]],"v":[[-199.875,-2.35],[-198.025,0.562],[-192.925,1.6],[-187.825,0.562],[-185.975,-2.35],[-187.825,-5.275],[-192.925,-6.325],[-198.025,-5.275]],"c":true},"ix":2},"nm":"ë¹","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0.884],[-1.059,0.542],[-1.767,0],[-1.059,-0.541],[0,-0.916],[1.058,-0.55],[1.75,0],[1.066,0.55]],"o":[[0,-0.916],[1.058,-0.541],[1.75,0],[1.058,0.542],[0,0.884],[-1.059,0.55],[-1.75,0],[-1.067,-0.55]],"v":[[-198.75,-2.35],[-197.162,-4.538],[-192.925,-5.35],[-188.712,-4.538],[-187.125,-2.35],[-188.712,-0.2],[-192.925,0.625],[-197.15,-0.2]],"c":true},"ix":2},"nm":"ë¹","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ë¹","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 14","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":128.867,"s":[0]},{"t":134.46700642872,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-163.05,-19.875],[-163.05,-4.05],[-161.9,-4.05],[-161.9,-19.875]],"c":true},"ix":2},"nm":"ì ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1,-0.433],[0,0],[-1,1.142],[-0.417,1.434],[-0.992,-1.066],[-1.267,-0.533],[0,0],[0.858,0.792],[0.516,1.042],[0,1.134],[0,0],[0,0],[0,0],[0.508,-1.1],[0.85,-0.833]],"o":[[0,0],[1.266,-0.583],[1,-1.141],[0.433,1.35],[0.991,1.067],[0,0],[-1.017,-0.4],[-0.859,-0.791],[-0.517,-1.041],[0,0],[0,0],[0,0],[0,1.184],[-0.509,1.1],[-0.85,0.834]],"v":[[-178.925,-8.2],[-178.275,-7.275],[-174.875,-9.863],[-172.75,-13.725],[-170.612,-10.1],[-167.225,-7.7],[-166.575,-8.625],[-169.387,-10.413],[-171.45,-13.163],[-172.225,-16.425],[-172.225,-18.7],[-173.35,-18.7],[-173.35,-16.425],[-174.112,-13],[-176.15,-10.1]],"c":true},"ix":2},"nm":"ì ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-175.375,1.1],[-161.15,1.1],[-161.15,0.1],[-174.2,0.1],[-174.2,-5.45],[-175.375,-5.45]],"c":true},"ix":2},"nm":"ì ","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì ","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 13","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":130.733,"s":[0]},{"t":136.333007536123,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.1,0],[0.858,-0.408],[0.475,-0.741],[0,-0.966],[-0.475,-0.741],[-0.859,-0.408],[-1.117,0],[-0.85,0.409],[-0.475,0.742],[0,0.967],[0.475,0.742],[0.85,0.409]],"o":[[-1.117,0],[-0.859,0.409],[-0.475,0.742],[0,0.967],[0.475,0.742],[0.858,0.409],[1.1,0],[0.85,-0.408],[0.475,-0.741],[0,-0.966],[-0.475,-0.741],[-0.85,-0.408]],"v":[[-148.95,-18.225],[-151.912,-17.613],[-153.912,-15.887],[-154.625,-13.325],[-153.912,-10.762],[-151.912,-9.038],[-148.95,-8.425],[-146.025,-9.038],[-144.037,-10.762],[-143.325,-13.325],[-144.037,-15.887],[-146.025,-17.613]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.95,0],[0,0],[-2.242,0.109],[-2.184,0.4],[0,0],[2.275,-0.083]],"o":[[0,0],[2.883,0],[2.241,-0.108],[0,0],[-2.117,0.334],[-2.275,0.084]],"v":[[-155.875,-4.35],[-155.675,-3.3],[-147.987,-3.462],[-141.35,-4.225],[-141.45,-5.1],[-148.037,-4.475]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0.734],[-0.384,0.584],[-0.692,0.334],[-0.884,0],[-0.684,-0.333],[-0.392,-0.591],[0,-0.733],[0.391,-0.591],[0.683,-0.333],[0.85,0],[0.691,0.334],[0.383,0.592]],"o":[[0,-0.75],[0.383,-0.583],[0.691,-0.333],[0.85,0],[0.683,0.334],[0.391,0.592],[0,0.734],[-0.392,0.592],[-0.684,0.334],[-0.884,0],[-0.692,-0.333],[-0.384,-0.591]],"v":[[-153.5,-13.325],[-152.925,-15.325],[-151.312,-16.7],[-148.95,-17.2],[-146.65,-16.7],[-145.037,-15.312],[-144.45,-13.325],[-145.037,-11.337],[-146.65,-9.95],[-148.95,-9.45],[-151.312,-9.95],[-152.925,-11.337]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-139.9,1.675],[-138.725,1.675],[-138.725,-19.9],[-139.9,-19.9]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 12","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":132.6,"s":[0]},{"t":138.200001854835,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.192,0.792],[0,1.267],[0.658,0.675],[1.208,0.367],[1.583,0],[1.2,-0.366],[0.658,-0.675],[0,-0.916],[-1.175,-0.791],[-2.034,-0.15],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[2.033,-0.15],[1.191,-0.791],[0,-0.916],[-0.659,-0.675],[-1.209,-0.366],[-1.6,0],[-1.2,0.367],[-0.659,0.675],[0,1.267],[1.175,0.792],[0,0],[0,0]],"v":[[-125.55,-8.65],[-125.55,-6.45],[-105.45,-6.45],[-105.45,-8.65],[-114.15,-8.65],[-114.15,-10.625],[-109.312,-12.038],[-107.525,-15.125],[-108.512,-17.512],[-111.312,-19.075],[-115.5,-19.625],[-119.7,-19.075],[-122.487,-17.512],[-123.475,-15.125],[-121.712,-12.038],[-116.9,-10.625],[-116.9,-8.65]],"c":true},"ix":2},"nm":"ì¨","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-123.05,1.575],[-107.7,1.575],[-107.7,-0.625],[-120.325,-0.625],[-120.325,-4.85],[-123.05,-4.85]],"c":true},"ix":2},"nm":"ì¨","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0.75],[-0.909,0.4],[-1.617,0],[-0.9,-0.4],[0,-0.733],[0.9,-0.408],[1.616,0],[0.908,0.409]],"o":[[0,-0.733],[0.908,-0.4],[1.616,0],[0.9,0.4],[0,0.75],[-0.9,0.409],[-1.617,0],[-0.909,-0.408]],"v":[[-120.65,-15.125],[-119.287,-16.825],[-115.5,-17.425],[-111.725,-16.825],[-110.375,-15.125],[-111.725,-13.387],[-115.5,-12.775],[-119.287,-13.387]],"c":true},"ix":2},"nm":"ì¨","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì¨","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 11","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":134.467,"s":[0]},{"t":140.067003318953,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-90.3,-14.35],[-90.3,-12.125],[-86.425,-12.125],[-86.425,-4],[-83.675,-4],[-83.675,-20.225],[-86.425,-20.225],[-86.425,-14.35]],"c":true},"ix":2},"nm":"ì ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1.7,-0.583],[0,0],[-0.925,0.9],[-0.484,1.2],[-0.875,-0.8],[-1.2,-0.416],[0,0],[0.908,1.225],[0,1.417],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.95,-1.3]],"o":[[0,0],[1.283,-0.433],[0.925,-0.9],[0.5,1.1],[0.875,0.8],[0,0],[-1.634,-0.55],[-0.909,-1.225],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,1.534],[-0.95,1.3]],"v":[[-102.225,-8.75],[-100.825,-6.575],[-97.512,-8.575],[-95.4,-11.725],[-93.337,-8.875],[-90.225,-7.05],[-88.875,-9.2],[-92.687,-11.863],[-94.05,-15.825],[-94.05,-16.425],[-89.5,-16.425],[-89.5,-18.625],[-101.45,-18.625],[-101.45,-16.425],[-96.825,-16.425],[-96.825,-15.825],[-98.25,-11.575]],"c":true},"ix":2},"nm":"ì ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-98.2,1.575],[-83.125,1.575],[-83.125,-0.625],[-95.425,-0.625],[-95.425,-5.375],[-98.2,-5.375]],"c":true},"ix":2},"nm":"ì ","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì ","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 10","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":136.333,"s":[0]},{"t":141.933004426355,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-64.1,-20.225],[-64.1,-3.575],[-61.35,-3.575],[-61.35,-10.975],[-58.25,-10.975],[-58.25,-13.25],[-61.35,-13.25],[-61.35,-20.225]],"c":true},"ix":2},"nm":"í","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-78.725,-15.6],[-65.625,-15.6],[-65.625,-17.775],[-70.8,-17.775],[-70.8,-20.25],[-73.55,-20.25],[-73.55,-17.775],[-78.725,-17.775]],"c":true},"ix":2},"nm":"í","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,-0.833],[-0.459,-0.65],[-0.817,-0.35],[-1.05,0],[-0.825,0.35],[-0.459,0.65],[0,0.834],[0.458,0.642],[0.825,0.35],[1.05,0],[0.816,-0.35],[0.458,-0.641]],"o":[[0,0.834],[0.458,0.65],[0.816,0.35],[1.05,0],[0.825,-0.35],[0.458,-0.65],[0,-0.833],[-0.459,-0.641],[-0.825,-0.35],[-1.05,0],[-0.817,0.35],[-0.459,0.642]],"v":[[-77.575,-10.4],[-76.887,-8.175],[-74.975,-6.675],[-72.175,-6.15],[-69.362,-6.675],[-67.437,-8.175],[-66.75,-10.4],[-67.437,-12.613],[-69.362,-14.1],[-72.175,-14.625],[-74.975,-14.1],[-76.887,-12.613]],"c":true},"ix":2},"nm":"í","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-75.5,1.575],[-60.45,1.575],[-60.45,-0.625],[-72.75,-0.625],[-72.75,-4.875],[-75.5,-4.875]],"c":true},"ix":2},"nm":"í","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0.667],[-0.509,0.375],[-0.834,0],[-0.509,-0.375],[0,-0.666],[0.508,-0.375],[0.833,0],[0.508,0.375]],"o":[[0,-0.666],[0.508,-0.375],[0.833,0],[0.508,0.375],[0,0.667],[-0.509,0.375],[-0.834,0],[-0.509,-0.375]],"v":[[-74.95,-10.4],[-74.187,-11.962],[-72.175,-12.525],[-70.162,-11.962],[-69.4,-10.4],[-70.162,-8.837],[-72.175,-8.275],[-74.187,-8.837]],"c":true},"ix":2},"nm":"í","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"í","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 9","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":138.2,"s":[0]},{"t":143.800005890473,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-48.05,-10.925],[-48.05,-8.725],[-27.95,-8.725],[-27.95,-10.925],[-36.65,-10.925],[-36.65,-12.65],[-30.525,-12.65],[-30.525,-19.525],[-45.525,-19.525],[-45.525,-12.65],[-39.425,-12.65],[-39.425,-10.925]],"c":true},"ix":2},"nm":"몰","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-45.725,-5.275],[-33.15,-5.275],[-33.15,-3.825],[-45.65,-3.825],[-45.65,1.825],[-29.825,1.825],[-29.825,-0.25],[-42.975,-0.25],[-42.975,-1.9],[-30.45,-1.9],[-30.45,-7.325],[-45.725,-7.325]],"c":true},"ix":2},"nm":"몰","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-42.825,-14.775],[-42.825,-17.4],[-33.225,-17.4],[-33.225,-14.775]],"c":true},"ix":2},"nm":"몰","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"몰","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 8","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":140.067,"s":[0]},{"t":145.66700735459,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.05,-20.225],[-9.05,-8.3],[-6.3,-8.3],[-6.3,-20.225]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-1],[-0.517,-0.783],[-0.9,-0.441],[-1.134,0],[-0.9,0.442],[-0.517,0.784],[0,1.017],[0.516,0.784],[0.9,0.442],[1.133,0],[0.9,-0.441],[0.516,-0.783]],"o":[[0,1.017],[0.516,0.784],[0.9,0.442],[1.133,0],[0.9,-0.441],[0.516,-0.783],[0,-1],[-0.517,-0.783],[-0.9,-0.441],[-1.134,0],[-0.9,0.442],[-0.517,0.784]],"v":[[-24.275,-14.075],[-23.5,-11.375],[-21.375,-9.538],[-18.325,-8.875],[-15.275,-9.538],[-13.15,-11.375],[-12.375,-14.075],[-13.15,-16.75],[-15.275,-18.588],[-18.325,-19.25],[-21.375,-18.588],[-23.5,-16.75]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0.884],[-0.609,0.534],[-0.967,0],[-0.609,-0.533],[0,-0.883],[0.608,-0.533],[0.966,0],[0.608,0.534]],"o":[[0,-0.883],[0.608,-0.533],[0.966,0],[0.608,0.534],[0,0.884],[-0.609,0.534],[-0.967,0],[-0.609,-0.533]],"v":[[-21.6,-14.075],[-20.687,-16.2],[-18.325,-17],[-15.962,-16.2],[-15.05,-14.075],[-15.962,-11.95],[-18.325,-11.15],[-20.687,-11.95]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.9,1.75],[-6.3,1.75],[-6.3,-7.25],[-9,-7.25],[-9,-4.95],[-18.175,-4.95],[-18.175,-7.25],[-20.9,-7.25]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.175,-0.45],[-18.175,-2.825],[-9,-2.825],[-9,-0.45]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì
","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 7","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":141.933,"s":[0]},{"t":147.533008461993,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.35,0],[1.308,-0.65],[0,-1.216],[-1.309,-0.658],[-2.334,0],[-1.309,0.659],[0,1.2],[1.3,0.65]],"o":[[-2.334,0],[-1.309,0.65],[0,1.2],[1.308,0.659],[2.333,0],[1.308,-0.658],[0,-1.216],[-1.3,-0.65]],"v":[[8.75,-19.475],[3.288,-18.5],[1.325,-15.7],[3.288,-12.913],[8.75,-11.925],[14.213,-12.913],[16.175,-15.7],[14.225,-18.5]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.975,-9.175],[18.5,-9.175],[18.5,-10.15],[-0.975,-10.15]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[1.475,-5.925],[14.775,-5.925],[14.775,-3.45],[1.55,-3.45],[1.55,1.35],[16.6,1.35],[16.6,0.375],[2.675,0.375],[2.675,-2.525],[15.9,-2.525],[15.9,-6.875],[1.475,-6.875]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0.884],[-1.125,0.509],[-1.917,0],[-1.125,-0.508],[0,-0.883],[1.125,-0.5],[1.916,0],[1.125,0.5]],"o":[[0,-0.883],[1.125,-0.508],[1.916,0],[1.125,0.509],[0,0.884],[-1.125,0.5],[-1.917,0],[-1.125,-0.5]],"v":[[2.5,-15.7],[4.188,-17.788],[8.75,-18.55],[13.313,-17.788],[15,-15.7],[13.313,-13.625],[8.75,-12.875],[4.188,-13.625]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 6","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":143.8,"s":[0]},{"t":149.400002780705,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[32.375,-18.025],[32.375,-8.525],[38.9,-8.525],[38.9,-2.275],[29.725,-2.275],[29.725,-1.25],[49.3,-1.25],[49.3,-2.275],[40.025,-2.275],[40.025,-8.525],[46.9,-8.525],[46.9,-9.5],[33.525,-9.5],[33.525,-17.025],[46.65,-17.025],[46.65,-18.025]],"c":true},"ix":2},"nm":"ë","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ë","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 5","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":145.667,"s":[0]},{"t":151.267004244823,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.083,0],[0.85,-0.408],[0.466,-0.741],[0,-0.966],[-0.917,-0.883],[-1.5,-0.1],[0,0],[2.166,0],[0,0],[-2.267,0.109],[-2.034,0.317],[0,0],[2.3,-0.083],[0,0],[-0.909,0.875],[0,1.384],[0.466,0.742],[0.85,0.409]],"o":[[-1.084,0],[-0.85,0.409],[-0.467,0.742],[0,1.384],[0.916,0.884],[0,0],[-1.95,0.067],[0,0],[2.533,0],[2.266,-0.108],[0,0],[-2,0.267],[0,0],[1.5,-0.116],[0.908,-0.875],[0,-0.966],[-0.467,-0.741],[-0.85,-0.408]],"v":[[59.625,-18.4],[56.725,-17.788],[54.75,-16.062],[54.05,-13.5],[55.425,-10.1],[59.05,-8.625],[59.05,-4.4],[52.875,-4.3],[53.125,-3.275],[60.325,-3.438],[66.775,-4.075],[66.675,-4.975],[60.225,-4.45],[60.225,-8.625],[63.838,-10.113],[65.2,-13.5],[64.5,-16.062],[62.525,-17.788]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.75],[-0.384,0.592],[-0.675,0.334],[-0.85,0],[-0.675,-0.333],[-0.384,-0.591],[0,-0.75],[0.383,-0.591],[0.675,-0.333],[0.85,0],[0.675,0.334],[0.383,0.592]],"o":[[0,-0.75],[0.383,-0.591],[0.675,-0.333],[0.85,0],[0.675,0.334],[0.383,0.592],[0,0.75],[-0.384,0.592],[-0.675,0.334],[-0.85,0],[-0.675,-0.333],[-0.384,-0.591]],"v":[[55.175,-13.5],[55.75,-15.512],[57.338,-16.9],[59.625,-17.4],[61.913,-16.9],[63.5,-15.512],[64.075,-13.5],[63.5,-11.488],[61.913,-10.1],[59.625,-9.6],[57.338,-10.1],[55.75,-11.488]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.2,1.675],[69.35,1.675],[69.35,-9.675],[73.2,-9.675],[73.2,-10.675],[69.35,-10.675],[69.35,-19.9],[68.2,-19.9]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 4","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":147.533,"s":[0]},{"t":153.133005352225,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[76.525,-10.6],[76.525,-9.6],[85.675,-9.6],[85.675,-6.9],[78.975,-6.9],[78.975,-5.925],[92.275,-5.925],[92.275,-3.3],[79.05,-3.3],[79.05,1.375],[94.1,1.375],[94.1,0.375],[80.175,0.375],[80.175,-2.375],[93.4,-2.375],[93.4,-6.9],[86.825,-6.9],[86.825,-9.6],[96,-9.6],[96,-10.6]],"c":true},"ix":2},"nm":"ì¤","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1.183,-0.133],[0,0],[-1.559,0.734],[-0.567,1.15],[-1.55,-0.741],[-1.75,-0.233],[0,0],[1.233,0.442],[0.825,0.717],[0,0.9],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.825,-0.716],[1.233,-0.441]],"o":[[0,0],[1.766,-0.233],[1.558,-0.733],[0.566,1.134],[1.55,0.742],[0,0],[-1.184,-0.133],[-1.234,-0.441],[-0.825,-0.716],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.9],[-0.825,0.717],[-1.234,0.442]],"v":[[77.7,-12.9],[78.125,-11.975],[83.113,-13.425],[86.3,-16.25],[89.475,-13.438],[94.425,-11.975],[94.85,-12.9],[91.225,-13.762],[88.138,-15.5],[86.9,-17.925],[86.9,-18.05],[94.25,-18.05],[94.25,-19.075],[78.35,-19.075],[78.35,-18.05],[85.65,-18.05],[85.65,-17.925],[84.413,-15.5],[81.325,-13.762]],"c":true},"ix":2},"nm":"ì¤","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì¤","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 3","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":149.4,"s":[0]},{"t":154.999999670938,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.941,-1.283],[1.733,-0.566],[0,0],[-0.909,0.859],[-0.5,1.167],[-0.875,-0.791],[-1.2,-0.4],[0,0],[0.9,1.209],[0,1.434],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,1.534],[-0.942,1.284],[0,0],[1.266,-0.433],[0.908,-0.858],[0.5,1.067],[0.875,0.792],[0,0],[-1.684,-0.55],[-0.9,-1.208],[0,0],[0,0],[0,0],[0,0]],"v":[[107.475,-18.825],[107.475,-16.625],[112.125,-16.625],[112.125,-16.4],[110.713,-12.175],[106.7,-9.4],[108.15,-7.25],[111.413,-9.188],[113.525,-12.225],[115.588,-9.438],[118.7,-7.65],[120.1,-9.8],[116.225,-12.438],[114.875,-16.4],[114.875,-16.625],[119.45,-16.625],[119.45,-18.825]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[109.675,-3.575],[121.6,-3.575],[121.6,2.025],[124.35,2.025],[124.35,-5.775],[109.675,-5.775]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[121.6,-6.85],[124.35,-6.85],[124.35,-12.4],[127.45,-12.4],[127.45,-14.675],[124.35,-14.675],[124.35,-20.225],[121.6,-20.225]],"c":true},"ix":2},"nm":"ì","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 2","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":151.267,"s":[0]},{"t":156.86700828046,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.45,0],[0.891,-0.45],[0.5,-0.791],[0,-1.016],[-0.5,-0.791],[-0.892,-0.45],[-1.1,0],[-1.042,0.767],[-0.25,1.25],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.033,0.75]],"o":[[-1.1,0],[-0.892,0.45],[-0.5,0.792],[0,1.017],[0.5,0.792],[0.891,0.45],[1.466,0],[1.041,-0.766],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.267,-1.233],[-1.034,-0.75]],"v":[[136.45,-19.275],[133.463,-18.6],[131.375,-16.738],[130.625,-14.025],[131.375,-11.312],[133.463,-9.45],[136.45,-8.775],[140.213,-9.925],[142.15,-12.95],[146.075,-12.95],[146.075,-8.3],[148.825,-8.3],[148.825,-20.225],[146.075,-20.225],[146.075,-15.175],[142.125,-15.175],[140.175,-18.15]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.884],[-0.592,0.542],[-0.95,0],[-0.592,-0.541],[0,-0.9],[0.591,-0.541],[0.933,0],[0.591,0.542]],"o":[[0,-0.9],[0.591,-0.541],[0.933,0],[0.591,0.542],[0,0.884],[-0.592,0.542],[-0.95,0],[-0.592,-0.541]],"v":[[133.25,-14.025],[134.138,-16.188],[136.45,-17],[138.738,-16.188],[139.625,-14.025],[138.738,-11.887],[136.45,-11.075],[134.138,-11.887]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[134.25,1.75],[148.825,1.75],[148.825,-7.25],[146.1,-7.25],[146.1,-4.9],[137,-4.9],[137,-7.25],[134.25,-7.25]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[137,-0.45],[137,-2.775],[146.1,-2.775],[146.1,-0.45]],"c":true},"ix":2},"nm":"ì
","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì
","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì 16","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":153.133,"s":[0]},{"t":158.733009387863,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.583,0],[1.175,-0.333],[0.641,-0.633],[0,-0.85],[-0.642,-0.625],[-1.175,-0.334],[-1.584,0],[-1.184,0.333],[-0.642,0.625],[0,0.85],[0.641,0.634],[1.183,0.334]],"o":[[-1.584,0],[-1.175,0.334],[-0.642,0.634],[0,0.85],[0.641,0.625],[1.175,0.333],[1.583,0],[1.183,-0.334],[0.641,-0.625],[0,-0.85],[-0.642,-0.633],[-1.184,-0.333]],"v":[[171,-6.3],[166.863,-5.8],[164.138,-4.35],[163.175,-2.125],[164.138,0.087],[166.863,1.525],[171,2.025],[175.15,1.525],[177.888,0.087],[178.85,-2.125],[177.888,-4.35],[175.15,-5.8]],"c":true},"ix":2},"nm":"ê³µ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[161.075,-7.925],[181.125,-7.925],[181.125,-10.125],[171.55,-10.125],[171.55,-14.15],[168.825,-14.15],[168.825,-10.125],[161.075,-10.125]],"c":true},"ix":2},"nm":"ê³µ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.066,-0.783],[0.25,-0.95],[0,0],[-0.067,0.867],[0,1.2],[0,0],[0,0]],"o":[[0,0],[0,1.017],[-0.067,0.784],[0,0],[0.266,-1.016],[0.066,-0.866],[0,0],[0,0],[0,0]],"v":[[163.375,-17],[175.95,-17],[175.85,-14.3],[175.375,-11.7],[178.075,-11.4],[178.575,-14.225],[178.675,-17.325],[178.675,-19.175],[163.375,-19.175]],"c":true},"ix":2},"nm":"ê³µ","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0.65],[-0.892,0.367],[-1.617,0],[-0.892,-0.366],[0,-0.666],[0.891,-0.358],[1.616,0],[0.891,0.359]],"o":[[0,-0.666],[0.891,-0.366],[1.616,0],[0.891,0.367],[0,0.65],[-0.892,0.359],[-1.617,0],[-0.892,-0.358]],"v":[[165.9,-2.125],[167.238,-3.675],[171,-4.225],[174.763,-3.675],[176.1,-2.125],[174.763,-0.613],[171,-0.075],[167.238,-0.613]],"c":true},"ix":2},"nm":"ê³µ","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ê³µ","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"ë¹ì ì ì¨ì í 몰ì
ì ëìì¤ ìì
ê³µê° ì¤ê³½ì ","sr":0.80000001192093,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":155,"s":[0]},{"t":160.600003706575,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299,259.466,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[199.1,-20.225],[199.1,-4.2],[201.85,-4.2],[201.85,-11.575],[204.95,-11.575],[204.95,-13.825],[201.85,-13.825],[201.85,-20.225]],"c":true},"ix":2},"nm":"ê°","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.516,-0.733],[0,0],[-1.8,2.067],[0,2.934],[0,0],[0,0],[0,0],[1.475,-1.333]],"o":[[0,0],[3.316,-0.966],[1.8,-2.066],[0,0],[0,0],[0,0],[-0.234,1.717],[-1.475,1.334]],"v":[[184.35,-8.675],[185.5,-6.5],[193.175,-11.05],[195.875,-18.55],[185.3,-18.55],[185.3,-16.35],[192.9,-16.35],[190.338,-11.775]],"c":true},"ix":2},"nm":"ê°","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[187.675,1.575],[202.7,1.575],[202.7,-0.625],[190.425,-0.625],[190.425,-5.825],[187.675,-5.825]],"c":true},"ix":2},"nm":"ê°","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ê°","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":127.000000928965,"op":180.000003651559,"st":39.799999334653,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"stroke","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[305.5,154.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-109,81],[72,-100.5]],"c":false},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"ì 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"모ì 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[-0.621]},"t":10.001,"s":[0]},{"t":15.0000006109625,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":0,"s":[0]},{"t":15.0000006109625,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"í¨ì¤ ë¤ë¬ì´ ì르기 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":3,"nm":"o null","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.664],"y":[1]},"o":{"x":[1],"y":[0]},"t":48.564,"s":[288.219]},{"t":61.5637525075429,"s":[251.219]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59,"s":[143.218]},{"i":{"x":[0.606],"y":[1]},"o":{"x":[0.554],"y":[0]},"t":98,"s":[143.218]},{"i":{"x":[0.336],"y":[1]},"o":{"x":[0.329],"y":[0]},"t":103,"s":[129.218]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":109,"s":[143.218]},{"t":186.000007575935,"s":[143.218]}],"ix":4}},"a":{"a":0,"k":[50,7.028,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.434,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[23.4,0,0]},"t":11,"s":[47,0,100]},{"i":{"x":[0,0.214,0.667],"y":[1,1,1]},"o":{"x":[0.674,0.77,0.333],"y":[0,0,0]},"t":21,"s":[47,47,100]},{"i":{"x":[0.383,0.67,0.667],"y":[-4.033,1.023,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":24.659,"s":[47,4.047,100]},{"i":{"x":[0.478,0.48,0.667],"y":[1,1,1]},"o":{"x":[0.664,0.828,0.333],"y":[8.796,0.085,0]},"t":26.25,"s":[47,47,100]},{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":28.836,"s":[47,0.012,100]},{"i":{"x":[0.118,0.198,0.667],"y":[1,1,1]},"o":{"x":[0.859,0.862,0.333],"y":[0,0,0]},"t":30.625,"s":[47,47,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.46,0.46,0.333],"y":[0,0,0]},"t":35,"s":[47,0.005,100]},{"i":{"x":[0.837,0.837,0.837],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":46,"s":[47,47,100]},{"i":{"x":[0,0,1],"y":[1,1,1]},"o":{"x":[0.355,0.355,0.333],"y":[0,0,0]},"t":61,"s":[25,25,100]},{"i":{"x":[1,1,1],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":64,"s":[28.5,28.5,100]},{"t":68.0000027696968,"s":[25,25,100]}],"ix":6}},"ao":0,"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"1ë²ì©¨ ì ì¤ê³½ì 2","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":0,"k":[50,-12.399,0],"ix":2},"a":{"a":0,"k":[76.104,76.104,0],"ix":1},"s":{"a":0,"k":[72.914,72.914,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[33.691,-33.691],[-33.691,-33.691],[0,0],[0,0]],"o":[[-33.691,33.691],[0,0],[0,0],[-33.691,-33.691]],"v":[[-44.158,-44.157],[-44.158,77.848],[16.846,16.845],[77.848,-44.157]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[76.594,73.923],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":29,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[0,0.949019610882,0.776470601559,1]},{"t":92.0000037472368,"s":[0.023529411765,1,0.823529411765,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"2ë²ì¬ ì ì¤ê³½ì 2","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":0,"k":[50.243,38.004,0],"ix":2},"a":{"a":0,"k":[152.863,152.859,0],"ix":1},"s":{"a":0,"k":[72.914,72.914,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[33.691,-33.691],[33.691,33.691],[0,0],[-67.381,67.381],[67.382,67.382]],"o":[[33.691,33.691],[-33.691,33.691],[0,0],[67.382,67.381],[67.382,-67.382],[0,0]],"v":[[27.312,-94.693],[27.312,27.312],[-94.694,27.312],[-155.696,88.315],[88.314,88.315],[88.314,-155.696]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[155.946,155.946],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":29,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[0,0.949019610882,0.776470601559,1]},{"t":92.0000037472368,"s":[0.023529411765,1,0.823529411765,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"3ë²ì§¸ ì ì¤ê³½ì 2","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":0,"k":[50,-46.252,0],"ix":2},"a":{"a":0,"k":[233.617,233.617,0],"ix":1},"s":{"a":0,"k":[72.914,72.914,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[101.072,-101.073],[-101.072,-101.073],[0,0],[-67.382,67.382],[-67.381,-67.381],[0,0]],"o":[[-101.072,101.072],[0,0],[-67.382,-67.382],[67.381,-67.381],[0,0],[-101.073,-101.073]],"v":[[-141.242,-141.242],[-141.242,224.774],[-80.239,163.771],[-80.239,-80.24],[163.771,-80.24],[224.774,-141.242]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[242.564,242.565],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":29,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[0,0.949019610882,0.776470601559,1]},{"t":92.0000037472368,"s":[0.023529411765,1,0.823529411765,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"4ë²ì§¸ ì ì¤ê³½ì 2","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":0,"k":[50,74.755,0],"ix":2},"a":{"a":0,"k":[310.897,310.897,0],"ix":1},"s":{"a":0,"k":[72.914,72.914,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[134.763,134.763],[0,0],[-101.072,101.073],[101.073,101.072],[0,0],[134.763,-134.763]],"o":[[0,0],[101.072,101.073],[101.073,-101.072],[0,0],[134.763,134.764],[-134.763,134.763]],"v":[[-297.905,190.116],[-236.902,129.113],[129.113,129.113],[129.113,-236.902],[190.116,-297.905],[190.116,190.116]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[298.155,298.155],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":29,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0,0.949019610882,0.776470601559,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[0,0.949019610882,0.776470601559,1]},{"t":92.0000037472368,"s":[0.023529411765,1,0.823529411765,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":3,"nm":"Null 3","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316,208,0],"ix":2},"a":{"a":0,"k":[826.923,511.538,0],"ix":1},"s":{"a":0,"k":[42,42,100],"ix":6}},"ao":0,"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"M ì¤ê³½ì ","parent":23,"tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":62,"s":[0]},{"t":79.5037532382541,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":358.38,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.921],"y":[0]},"t":62.293,"s":[685.428]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.204],"y":[0]},"t":79.504,"s":[202.056]},{"i":{"x":[0.553],"y":[1]},"o":{"x":[0.19],"y":[0]},"t":85,"s":[321.541]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":95,"s":[321.541]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":100,"s":[294.541]},{"t":106.000004317469,"s":[321.541]}],"ix":4}},"a":{"a":0,"k":[109.326,113.111,0],"ix":1},"s":{"a":0,"k":[155,155,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-109.076,112.861],[-109.076,-112.861],[-75.747,-112.861],[0.676,-6.953],[75.746,-112.861],[109.076,-112.861],[109.076,112.861],[73.626,112.861],[73.626,-48.893],[1.816,49.235],[-1.825,49.235],[-73.324,-50.611],[-73.324,112.861]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.325,113.111],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"m_í¸ë매í¸","parent":23,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[673,451,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,144.139,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1252.227,443.164],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"ì¬ê°í í¨ì¤ 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":3,"ix":10},"g":{"p":2,"k":{"a":0,"k":[0,1,1,1,1,0,0,0],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"ê·¸ë¼ëì¸í¸ ì 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.113,-210.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[106.772,111.321],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì¬ê°í 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"R ì¤ê³½ì ","parent":23,"tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":66,"s":[0]},{"t":83.5037534011775,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":855.604,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.921],"y":[0]},"t":66.293,"s":[685.428]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.204],"y":[0]},"t":83.504,"s":[202.056]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.204],"y":[0]},"t":89,"s":[243.611]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":101,"s":[243.611]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":106,"s":[206.611]},{"t":112.000004561854,"s":[243.611]}],"ix":4}},"a":{"a":0,"k":[0.001,0.001,0],"ix":1},"s":{"a":0,"k":[155,155,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-6.87,6.868],[-11.31,0],[0,0],[0,0],[0,0],[8.08,-4.847],[3.58,-7.003],[0,0]],"o":[[0,0],[0,0],[0,0],[0,-12.928],[7.07,-7.069],[0,0],[0,0],[0,0],[-11.31,0],[-6.13,3.522],[0,0],[0,0]],"v":[[-43.175,-80.896],[-43.175,83.017],[-8.935,83.017],[-8.935,-11.513],[1.365,-41.206],[28.935,-51.81],[43.175,-51.81],[43.175,-83.017],[33.175,-83.017],[4.095,-75.746],[-10.455,-59.959],[-10.455,-80.896]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.425,83.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"r_í¸ë매í¸","parent":23,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[673,451,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,166.209,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1252.227,443.164],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"ì¬ê°í í¨ì¤ 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":3,"ix":10},"g":{"p":2,"k":{"a":0,"k":[0,1,1,1,1,0,0,0],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"ê·¸ë¼ëì¸í¸ ì 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.113,-210.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[106.772,111.321],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì¬ê°í 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"I ì¤ê³½ì ","parent":23,"tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70,"s":[0]},{"t":87.5037535641008,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":1049.18,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.921],"y":[0]},"t":70.293,"s":[685.428]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.204],"y":[0]},"t":87.504,"s":[202.056]},{"i":{"x":[0.323],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":93.241,"s":[323.439]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":104,"s":[321.541]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":109,"s":[294.541]},{"t":115.000004684046,"s":[321.541]}],"ix":4}},"a":{"a":0,"k":[17.37,113.111,0],"ix":1},"s":{"a":0,"k":[155,155,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.12,-112.861],[17.12,-112.861],[17.12,-73.473],[-17.12,-73.473]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0,0]],"v":[[-17.12,-73.473]],"c":false},"ix":2},"nm":"í¨ì¤ 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.12,-51.052],[17.12,-51.052],[17.12,112.861],[-17.12,112.861]],"c":true},"ix":2},"nm":"í¨ì¤ 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.37,113.111],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":29,"ty":4,"nm":"i_í¸ë매í¸","parent":23,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[673,451,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,166.209,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1252.227,443.164],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"ì¬ê°í í¨ì¤ 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":3,"ix":10},"g":{"p":2,"k":{"a":0,"k":[0,1,1,1,1,0,0,0],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"ê·¸ë¼ëì¸í¸ ì 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.113,-210.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[106.772,111.321],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì¬ê°í 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":"B ì¤ê³½ì ","parent":23,"tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":74,"s":[0]},{"t":91.5037537270241,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":1254.769,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.921],"y":[0]},"t":74.293,"s":[685.428]},{"i":{"x":[0.797],"y":[1]},"o":{"x":[0.204],"y":[0]},"t":91.504,"s":[202.056]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":96,"s":[321.541]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":107,"s":[327.428]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":112,"s":[294.541]},{"t":118.000004806239,"s":[321.541]}],"ix":4}},"a":{"a":0,"k":[85.08,116.746,0],"ix":1},"s":{"a":0,"k":[155,155,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.49,0],[-7.48,4.646],[-4.24,8.08],[0,10.301],[4.44,8.079],[7.47,4.645],[9.7,0],[7.68,-4.646],[4.45,-8.08],[0,-10.302],[-4.24,-8.281],[-7.47,-4.646]],"o":[[9.7,0],[7.47,-4.646],[4.44,-8.281],[0,-10.302],[-4.24,-8.08],[-7.48,-4.646],[-9.49,0],[-7.47,4.645],[-4.24,8.079],[0,10.301],[4.45,8.08],[7.68,4.646]],"v":[[-0.61,84.684],[25.15,77.715],[42.72,58.627],[49.39,30.753],[42.72,3.182],[25.15,-15.906],[-0.61,-22.876],[-26.36,-15.906],[-44.24,3.182],[-50.6,30.753],[-44.24,58.627],[-26.36,77.715]],"c":true},"ix":2},"nm":"í¨ì¤ 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[15.75,0],[10.51,5.252],[5.23,7.005],[0,0],[0,0],[0,0],[0,0],[0,0],[-7.33,3.808],[-12.93,0],[-12.32,-7.473],[-7.07,-12.927],[0,-16.159],[7.27,-12.927],[12.32,-7.675]],"o":[[-12.73,0],[-8.1,-4.131],[0,0],[0,0],[0,0],[0,0],[0,0],[5.2,-5.932],[10.1,-5.252],[15.55,0],[12.52,7.474],[7.27,12.928],[0,16.159],[-7.07,12.928],[-12.32,7.474]],"v":[[2.73,116.497],[-32.12,108.618],[-52.11,91.915],[-52.11,112.861],[-84.83,112.861],[-84.83,-116.497],[-50.6,-116.497],[-50.6,-32.2],[-31.81,-46.811],[2.73,-54.688],[44.54,-43.479],[73.93,-12.877],[84.83,30.753],[73.93,74.382],[44.84,105.286]],"c":true},"ix":2},"nm":"í¨ì¤ 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.08,116.746],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"그룹 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":31,"ty":4,"nm":"b_í¸ë매í¸","parent":23,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[673,451,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,155.174,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1252.227,443.164],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"ì¬ê°í í¨ì¤ 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":3,"ix":10},"g":{"p":2,"k":{"a":0,"k":[0,1,1,1,1,0,0,0],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"ê·¸ë¼ëì¸í¸ ì 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023529411765,1,0.823529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"ì¹ 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.113,-210.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[106.772,111.321],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ì¬ê°í 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":47.0000019143492,"op":180.00000733155,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/src/app/shared/config/auth.ts b/src/app/shared/config/auth.ts
new file mode 100644
index 00000000..b56bbb57
--- /dev/null
+++ b/src/app/shared/config/auth.ts
@@ -0,0 +1,28 @@
+import { redirect } from 'react-router-dom';
+
+import { ROUTES_CONFIG } from '@/router/routesConfig';
+
+import { getAccessToken, getIsOnboardingCompleted } from '../utils/auth';
+
+export const authConfig = {
+ google: {
+ url: {
+ react: import.meta.env.VITE_GOOGLE_URL,
+ electron: import.meta.env.VITE_ELECTRON_AUTH_URL,
+ },
+ },
+
+ isAuthenticated: () => {
+ const accessToken = getAccessToken();
+ return !!accessToken;
+ },
+
+ isOnboardingCompleted: () => {
+ const isOnboardingCompleted = getIsOnboardingCompleted();
+ return !!isOnboardingCompleted;
+ },
+
+ redirectToLogin: () => {
+ redirect(ROUTES_CONFIG.login.path);
+ },
+};
diff --git a/src/app/shared/hooks/useLogout.ts b/src/app/shared/hooks/useLogout.ts
new file mode 100644
index 00000000..8ac706bb
--- /dev/null
+++ b/src/app/shared/hooks/useLogout.ts
@@ -0,0 +1,16 @@
+import { useNavigate } from 'react-router-dom';
+
+import { ROUTES_CONFIG } from '@/router/routesConfig';
+
+import { removeAllTokens } from '../utils/auth';
+
+export const useLogout = () => {
+ const navigate = useNavigate();
+
+ const handleLogout = () => {
+ removeAllTokens();
+ navigate(ROUTES_CONFIG.login.path, { replace: true });
+ };
+
+ return { handleLogout };
+};
diff --git a/src/app/shared/layout/Sidebar/ModalContentsSetting/AccountContent/AccountContent.tsx b/src/app/shared/layout/Sidebar/ModalContentsSetting/AccountContent/AccountContent.tsx
index 970db44b..873e1394 100644
--- a/src/app/shared/layout/Sidebar/ModalContentsSetting/AccountContent/AccountContent.tsx
+++ b/src/app/shared/layout/Sidebar/ModalContentsSetting/AccountContent/AccountContent.tsx
@@ -4,7 +4,7 @@ import ButtonRadius8 from '@/shared/components/ButtonRadius8/ButtonRadius8';
import ButtonStatusToggle from '@/shared/components/ButtonStatusToggle/ButtonStatusToggle';
import ModalWrapper, { ModalWrapperRef } from '@/shared/components/ModalWrapper/ModalWrapper';
-import { reloginWithoutLogout } from '@/shared/utils/auth';
+import { useLogout } from '@/shared/hooks/useLogout';
import { UserProfileType } from '@/shared/types/profile';
@@ -19,12 +19,15 @@ type AccountContentProps = UserProfileType;
const AccountContent = ({ ...props }: AccountContentProps) => {
const logoutModalRef = useRef(null);
const deleteAccountModalRef = useRef(null);
+
const { mutate: changeProfile } = usePutChangeProfile();
const { mutate: deleteAccount } = useDeleteAccount();
const [isToggleOn, setIsToggleOn] = useState(props.isPushEnabled);
const [userName, setUserName] = useState(props.name);
+ const { handleLogout } = useLogout();
+
const handleToggle = () => setIsToggleOn((prev) => !prev);
const handleNameChange = (e: React.ChangeEvent) => {
@@ -52,7 +55,7 @@ const AccountContent = ({ ...props }: AccountContentProps) => {
};
const handleDeleteAccount = () => {
- deleteAccount(undefined, { onSuccess: reloginWithoutLogout });
+ deleteAccount(undefined, { onSuccess: handleLogout });
};
return (
@@ -122,7 +125,7 @@ const AccountContent = ({ ...props }: AccountContentProps) => {
{(_) => (
diff --git a/src/app/shared/utils/auth.ts b/src/app/shared/utils/auth.ts
index 84d44f77..b9e43455 100644
--- a/src/app/shared/utils/auth.ts
+++ b/src/app/shared/utils/auth.ts
@@ -32,3 +32,18 @@ export const getRefreshToken = () => {
export const setRefreshToken = (refreshToken: string) => {
localStorage.setItem('refreshToken', refreshToken);
};
+
+export const getIsOnboardingCompleted = () => {
+ const isOnboardingCompleted = localStorage.getItem('isOnboardingCompleted');
+ return isOnboardingCompleted;
+};
+
+export const setIsOnboardingCompleted = (isOnboardingCompleted: string) => {
+ localStorage.setItem('isOnboardingCompleted', isOnboardingCompleted);
+};
+
+export const removeAllTokens = () => {
+ localStorage.removeItem('accessToken');
+ localStorage.removeItem('refreshToken');
+ localStorage.removeItem('isOnboardingCompleted');
+};
diff --git a/src/electron/contants/protocol.ts b/src/electron/contants/protocol.ts
new file mode 100644
index 00000000..ad2070b9
--- /dev/null
+++ b/src/electron/contants/protocol.ts
@@ -0,0 +1 @@
+export const DEFAULT_PROTOCOL = 'morib';
diff --git a/src/electron/main.ts b/src/electron/main.ts
index 8289bd79..1b1ddc27 100644
--- a/src/electron/main.ts
+++ b/src/electron/main.ts
@@ -1,48 +1,60 @@
-import { BrowserWindow, Notification, app, ipcMain, screen, shell } from 'electron';
+import { BrowserWindow, app, ipcMain, shell } from 'electron';
import path from 'path';
-import { startBrowserMonitoring, stopBrowserMonitoring } from './browserMonitor.js';
+import { stopBrowserMonitoring } from './browserMonitor.js';
+import { DEFAULT_PROTOCOL } from './contants/protocol.js';
+import { addBrowserMonitorIpcHandler } from './monitor/browser.js';
+import { showNotification } from './notification/mac.js';
import { getAuthenticatedWindowPath, getPreloadPath, parseTokensFromUrl } from './pathResolver.js';
import { isDev } from './util.js';
+import { blockDevTools } from './window/key.js';
+import { calculateZoomLevel } from './window/resolution.js';
-let mainWindow: BrowserWindow | null = null;
-let authWindow: BrowserWindow | null = null;
-// 앱 종료 상태를 추적하는 변수
-let isAppQuitting = false;
+let mainWindow: BrowserWindow | null = null; // 메인 창 객체
+let isAppQuitting = false; // 앱 종료 상태를 추적하는 변수
+
+// ------------------------------------------------------------------------------------------------
+// 프로토콜 설정 코드
+// ------------------------------------------------------------------------------------------------
// NOTE: 기본 프로토콜 설정 (morib://)
if (process.defaultApp) {
if (process.argv.length >= 2) {
- app.setAsDefaultProtocolClient('morib', process.execPath, [path.resolve(process.argv[1])]);
+ app.setAsDefaultProtocolClient(DEFAULT_PROTOCOL, process.execPath, [path.resolve(process.argv[1])]);
}
} else {
- app.setAsDefaultProtocolClient('morib');
+ app.setAsDefaultProtocolClient(DEFAULT_PROTOCOL);
}
+// ------------------------------------------------------------------------------------------------
+// 애플리케이션이 준비되었을 때 window를 생성하고 렌더러 프로세스를 처리하는 코드
+// ------------------------------------------------------------------------------------------------
+
// NOTE: 싱글 인스턴스 Local Lock 설정
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
app.quit();
} else {
- app.on('second-instance', (event: any, commandLine: string[], workingDirectory: string) => {
+ app.on('second-instance', () => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow && !mainWindow.isDestroyed()) {
if (mainWindow.isMinimized()) mainWindow.restore();
mainWindow.focus();
}
-
- // NOTE: 디버깅용 Dialog 주석 처리
- // const lastArg = commandLine.length > 0 ? commandLine.pop()?.slice(0, -1) : '';
- // dialog.showErrorBox('Welcome Back', `You arrived from: ${lastArg}`);
});
// Create mainWindow, load the rest of the app, etc...
app.whenReady().then(() => {
createWindow();
- // 인증 관련 IPC 핸들러 설정
- setupAuthHandlers();
+ ipcMain.on('auth:logout', () => {
+ redirectToLoginPage();
+ });
+
+ ipcMain.on('auth:relogin', () => {
+ redirectToLoginPage();
+ });
// macOS에서 dock 아이콘 클릭 시 창 복원
app.on('activate', () => {
@@ -52,9 +64,7 @@ if (!gotTheLock) {
createWindow();
} else {
// 숨겨진 창이 있다면 표시하기
- if (authWindow && !authWindow.isDestroyed() && !authWindow.isVisible()) {
- authWindow.show();
- } else if (mainWindow && !mainWindow.isDestroyed() && !mainWindow.isVisible()) {
+ if (mainWindow && !mainWindow.isDestroyed() && !mainWindow.isVisible()) {
mainWindow.show();
}
}
@@ -62,172 +72,50 @@ if (!gotTheLock) {
});
app.on('open-url', (event: any, url: string) => {
- if (authWindow && !authWindow.isDestroyed()) {
- if (authWindow.isMinimized()) authWindow.restore();
- authWindow.focus();
- } else {
- if (mainWindow && !mainWindow.isDestroyed()) {
- mainWindow?.close();
- }
-
- event.preventDefault();
+ if (mainWindow && !mainWindow.isDestroyed()) {
const { accessToken, refreshToken, isOnboardingCompleted } = parseTokensFromUrl(url);
// dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`); // NOTE: 디버깅용 Dialog 주석 처리
- createAuthenticatedWindow(accessToken, refreshToken, isOnboardingCompleted);
- // 브라우저 URL 모니터링을 위한 IPC 핸들러 등록
- setupBrowserMonitorHandlers();
- }
- });
-}
-
-// 인증 관련 IPC 핸들러 설정
-function setupAuthHandlers() {
- // 로그인 페이지로 리디렉션 요청
- ipcMain.on('auth:relogin', () => {
- console.log('로그인 페이지로 리디렉션 요청 수신');
-
- // authWindow가 있으면 닫음
- if (authWindow && !authWindow.isDestroyed()) {
- authWindow.close();
- authWindow = null;
- }
- // mainWindow가 없으면 생성, 있으면 로그인 페이지로 이동
- if (!mainWindow || mainWindow.isDestroyed()) {
- createWindow();
- } else {
- // 로그인 페이지로 이동
- if (isDev()) {
- mainWindow.loadURL('http://localhost:5173/');
- } else {
- mainWindow.loadFile(path.join(app.getAppPath(), 'dist-react/index.html'));
- }
+ mainWindow.loadURL(
+ getAuthenticatedWindowPath(accessToken || '', refreshToken || '', isOnboardingCompleted || ''),
+ );
- // 창이 숨겨져 있으면 표시
- if (!mainWindow.isVisible()) {
- mainWindow.show();
- }
- mainWindow.focus();
- }
- });
-}
-
-// 브라우저 URL 모니터링 IPC 핸들러 설정
-function setupBrowserMonitorHandlers() {
- // 모니터링 시작 요청
- ipcMain.on('browser-monitor:start', (_, allowedServices: string[]) => {
- console.log('브라우저 URL 모니터링 시작 요청 수신:', allowedServices);
-
- // 도메인 형식 확인 및 정제 (경로 정보 유지)
- const processedServices = allowedServices
- .map((service) => {
- // 빈 서비스 또는 유효하지 않은 형식 제외
- if (!service || service.trim() === '') {
- return '';
- }
-
- // URL 형식인 경우 프로토콜만 제거 (경로는 유지)
- if (service.startsWith('http://') || service.startsWith('https://')) {
- try {
- // URL 객체로 파싱
- const url = new URL(service);
- // 호스트명과 경로 유지 (프로토콜만 제거)
- return url.hostname + url.pathname;
- } catch (e) {
- console.warn('허용 서비스 URL 파싱 오류:', e);
- return service;
- }
- }
- return service;
- })
- .filter((s) => s.length > 0); // 빈 항목 제거
-
- if (authWindow && !authWindow.isDestroyed()) {
- console.log(`${processedServices.length}개의 허용 서비스로 모니터링 시작:`, processedServices);
- startBrowserMonitoring(authWindow, processedServices);
+ // 브라우저 URL 모니터링을 위한 IPC 핸들러 등록
+ addBrowserMonitorIpcHandler(mainWindow);
} else {
- console.error('메인 창이 없어 모니터링을 시작할 수 없습니다.');
+ createWindow();
}
});
-
- // 모니터링 중지 요청
- ipcMain.on('browser-monitor:stop', () => {
- console.log('브라우저 URL 모니터링 중지 요청 수신');
- stopBrowserMonitoring();
- });
}
-// 화면 해상도 확인 및 줌 레벨 설정 함수
-function adjustZoomLevelIfNeeded(window: BrowserWindow | null) {
- if (!window) return;
+// ------------------------------------------------------------------------------------------------
+// 윈도우 생성 코드
+// ------------------------------------------------------------------------------------------------
- // 맥북 14인치 해상도 기준 (3024x1964)
- const MAC14_WIDTH = 3024;
- const MAC14_HEIGHT = 1964;
-
- const display = screen.getPrimaryDisplay();
-
- const pixelWidth = display.workAreaSize.width * display.scaleFactor;
- const pixelHeight = display.workAreaSize.height * display.scaleFactor;
-
- // 해상도가 맥북 14인치보다 작은 경우
- if (pixelWidth < MAC14_WIDTH || pixelHeight < MAC14_HEIGHT) {
- // 콘텐츠가 로드된 후 줌 레벨 설정
- window.webContents.once('did-finish-load', () => {
- // 화면 비율 80%로 설정 (줌 레벨 -1.0은 약 80%에 해당)
- window.webContents.setZoomLevel(-1.0);
- });
- }
-}
-
-function createWindow() {
+/**
+ * 메인 창(mainWindow) 생성 함수
+ */
+export const createWindow = () => {
mainWindow = new BrowserWindow({
webPreferences: {
preload: getPreloadPath(),
- devTools: false, // 개발자 도구 비활성화
},
width: 1440,
height: 920,
- show: false, // 초기에는 창을 표시하지 않음
+ // show: false, // 초기에는 창을 표시하지 않음
backgroundColor: '#181C22', // 배경색 설정 (어두운 색상 예시)
});
- // 콘텐츠가 준비되면 창 표시
- mainWindow.once('ready-to-show', () => {
- mainWindow?.show();
+ mainWindow?.webContents.once('did-finish-load', () => {
+ mainWindow?.webContents.setZoomLevel(calculateZoomLevel());
});
- // 화면 해상도에 따라 줌 레벨 조정
- adjustZoomLevelIfNeeded(mainWindow);
-
- // 줌 관련 설정
- mainWindow.webContents.on('zoom-changed', (event, zoomDirection) => {
- // cmd+ 또는 cmd- 키를 사용한 줌만 허용
- if (zoomDirection !== 'in' && zoomDirection !== 'out') {
- event.preventDefault();
- }
- });
+ blockDevTools(mainWindow);
- // 마우스 휠로 인한 줌 변경 방지 (pinch-to-zoom)
- mainWindow.webContents.on('before-input-event', (event, input) => {
- // 개발자 도구를 열 수 있는 모든 단축키 차단
- if (
- // cmd + option + i (macOS)
- (input.key === 'i' && input.meta && input.alt) ||
- // F12
- input.key === 'F12' ||
- // cmd + shift + i (macOS), ctrl + shift + i (Windows/Linux)
- (input.key === 'i' && input.shift && (input.meta || input.control)) ||
- // cmd + shift + c (macOS), ctrl + shift + c (Windows/Linux)
- (input.key === 'c' && input.shift && (input.meta || input.control)) ||
- // cmd + shift + j (macOS), ctrl + shift + j (Windows/Linux)
- (input.key === 'j' && input.shift && (input.meta || input.control)) ||
- // 줌 관련 키 중 cmd+ 및 cmd- 외의 다른 키 차단 (ctrl+0 등)
- (input.key === '0' && (input.meta || input.control))
- ) {
- event.preventDefault();
- }
+ // 콘텐츠가 준비되면 창 표시
+ mainWindow.once('ready-to-show', () => {
+ mainWindow?.show();
});
mainWindow.webContents.setWindowOpenHandler((details) => {
@@ -238,7 +126,7 @@ function createWindow() {
// 닫기 버튼 클릭 시 앱을 종료하지 않고 숨김(hide) 처리
mainWindow.on('close', (event) => {
// 앱이 실제로 종료되려는 경우는 처리하지 않음
- if (!isAppQuitting && authWindow !== null && !authWindow.isDestroyed() && mainWindow && !mainWindow.isDestroyed()) {
+ if (!isAppQuitting && mainWindow && !mainWindow?.isDestroyed()) {
event.preventDefault();
// 전체화면 상태인지 확인
@@ -248,13 +136,11 @@ function createWindow() {
// 전체화면 해제 애니메이션 완료 후 숨김 처리
} else {
// 전체화면이 아니면 바로 숨김
- mainWindow.hide();
+ mainWindow?.hide();
}
return false;
}
-
- return true;
});
if (isDev()) {
@@ -262,85 +148,41 @@ function createWindow() {
} else {
mainWindow.loadFile(path.join(app.getAppPath(), 'dist-react/index.html'));
}
-}
-
-function createAuthenticatedWindow(
- accessToken: string | null,
- refreshToken: string | null,
- isOnboardingCompleted: string | null,
-) {
- authWindow = new BrowserWindow({
- webPreferences: {
- preload: getPreloadPath(),
- devTools: false, // 개발자 도구 비활성화
- },
- width: 1440,
- height: 920,
- show: false, // 초기에는 창을 표시하지 않음
- backgroundColor: '#181C22', // 배경색 설정 (어두운 색상 예시)
- });
+};
- // 콘텐츠가 준비되면 창 표시
- authWindow.once('ready-to-show', () => {
- authWindow?.show();
- });
-
- // 화면 해상도에 따라 줌 레벨 조정
- adjustZoomLevelIfNeeded(authWindow);
+// ------------------------------------------------------------------------------------------------
+// ipc 통신과 관련된 유틸 코드
+// ------------------------------------------------------------------------------------------------
- // 줌 관련 설정
- authWindow.webContents.on('zoom-changed', (event, zoomDirection) => {
- // cmd+ 또는 cmd- 키를 사용한 줌만 허용
- if (zoomDirection !== 'in' && zoomDirection !== 'out') {
- event.preventDefault();
- }
- });
+// NOTE(@10tacion) 윈도우 생성 관련 함수들은 따로 분리하지 않음 (메인 파일에 모두 작성) -> 함수의 인자로 윈도우를 받아 윈도우 객체 변경 사항을 추적하기 쉽지 않기 떄문
- // 마우스 휠로 인한 줌 변경 방지 및 개발자 도구 단축키 차단
- authWindow.webContents.on('before-input-event', (event, input) => {
- // 개발자 도구를 열 수 있는 모든 단축키 차단
- if (
- // cmd + option + i (macOS)
- (input.key === 'i' && input.meta && input.alt) ||
- // F12
- input.key === 'F12' ||
- // cmd + shift + i (macOS), ctrl + shift + i (Windows/Linux)
- (input.key === 'i' && input.shift && (input.meta || input.control)) ||
- // cmd + shift + c (macOS), ctrl + shift + c (Windows/Linux)
- (input.key === 'c' && input.shift && (input.meta || input.control)) ||
- // cmd + shift + j (macOS), ctrl + shift + j (Windows/Linux)
- (input.key === 'j' && input.shift && (input.meta || input.control)) ||
- // 줌 관련 키 중 cmd+ 및 cmd- 외의 다른 키 차단 (ctrl+0 등)
- (input.key === '0' && (input.meta || input.control))
- ) {
- event.preventDefault();
+/**
+ * 리로그인 / 로그아웃 관련 IPC 핸들러 유틸
+ * mainWindow가 없으면 생성, 있으면 로그인 페이지로 이동
+ */
+const redirectToLoginPage = () => {
+ // mainWindow가 없으면 생성, 있으면 로그인 페이지로 이동
+ if (!mainWindow || mainWindow.isDestroyed()) {
+ createWindow();
+ } else {
+ // 로그인 페이지로 이동
+ if (isDev()) {
+ mainWindow.loadURL('http://localhost:5173/');
+ } else {
+ mainWindow.loadFile(path.join(app.getAppPath(), 'dist-react/index.html'));
}
- });
-
- // 닫기 버튼 클릭 시 앱을 종료하지 않고 숨김 처리
- authWindow.on('close', (event) => {
- // 앱이 실제로 종료되려는 경우는 처리하지 않음
- if (!isAppQuitting && authWindow && !authWindow.isDestroyed()) {
- event.preventDefault();
- // 전체화면 상태인지 확인
- if (authWindow.isFullScreen()) {
- // 전체화면 상태면 먼저 전체화면 해제 후 숨김
- authWindow.setFullScreen(false);
- // 전체화면 해제 애니메이션 완료 후 숨김 처리
- } else {
- // 전체화면이 아니면 바로 숨김
- authWindow.hide();
- }
-
- return false;
+ // 창이 숨겨져 있으면 표시
+ if (!mainWindow.isVisible()) {
+ mainWindow.show();
}
+ mainWindow.focus();
+ }
+};
- return true;
- });
-
- authWindow.loadURL(getAuthenticatedWindowPath(accessToken || '', refreshToken || '', isOnboardingCompleted || ''));
-}
+// ------------------------------------------------------------------------------------------------
+// 애플리케이션 자체의 동작 관련 코드(앱이 닫힐 때, 앱에서 외부 창을 띄울 때 등)
+// ------------------------------------------------------------------------------------------------
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
@@ -349,34 +191,34 @@ app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit();
});
-// 실제 앱 종료 처리
+/**
+ * dock에서 우측 마우스를 클릭해서 종료를 클릭할 때만 종료가 되기 위해서 isAppQuitting 플래그를 true로 설정
+ */
app.on('before-quit', () => {
- // 앱 종료 플래그를 true로 설정
isAppQuitting = true;
});
-// 앱 종료 시 모니터링 중지
+/**
+ * ipc로 해당 함수가 호출 되면 모니터링 종료 (타이머가 정지되었을 경우)
+ */
app.on('will-quit', () => {
+ // NOTE(@10tacion): 이 함수 내부에서 사용되는 변수가 전역 스코프에 등록된것 같음 그래서 잘 실행되는듯.. -> 추후 직관적으로 변수 관리하는게 필요할듯
stopBrowserMonitoring();
});
-// Handle window controls via IPC
+/**
+ * Handle window controls via IPC
+ * 이걸 설정해야 일렉트론 내부에서 외부 브라우저를 띄울 때 앱 외부에서 창이 열림 (설정 안하면 일렉트론 내 웹뷰가 열림)
+ */
ipcMain.on('shell:open', () => {
const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked');
const pagePath = path.join('file://', pageDirectory, 'index.html');
shell.openExternal(pagePath);
});
-// 시스템 알림 표시 IPC 핸들러
+/**
+ * 시스템 알림 표시 IPC 핸들러
+ */
ipcMain.on('notification:show', (_, { title, body }) => {
- const iconPath = path.join(app.getAppPath(), 'dist-electron/morib_logo.png');
-
- const notification = new Notification({
- title,
- body,
- icon: iconPath,
- silent: false,
- });
-
- notification.show();
+ showNotification(title, body);
});
diff --git a/src/electron/monitor/browser.ts b/src/electron/monitor/browser.ts
new file mode 100644
index 00000000..031efe9f
--- /dev/null
+++ b/src/electron/monitor/browser.ts
@@ -0,0 +1,50 @@
+import { BrowserWindow, ipcMain } from 'electron';
+
+import { startBrowserMonitoring, stopBrowserMonitoring } from '../browserMonitor.js';
+
+const startBrowserMonitor = (window: BrowserWindow | null, allowedServices: string[]) => {
+ if (!window) return;
+
+ console.log('브라우저 URL 모니터링 시작 요청 수신:', allowedServices);
+
+ // 도메인 형식 확인 및 정제 (경로 정보 유지)
+ const processedServices = allowedServices
+ .map((service) => {
+ // 빈 서비스 또는 유효하지 않은 형식 제외
+ if (!service || service.trim() === '') {
+ return '';
+ }
+
+ // URL 형식인 경우 프로토콜만 제거 (경로는 유지)
+ if (service.startsWith('http://') || service.startsWith('https://')) {
+ try {
+ // URL 객체로 파싱
+ const url = new URL(service);
+ // 호스트명과 경로 유지 (프로토콜만 제거)
+ return url.hostname + url.pathname;
+ } catch (e) {
+ console.warn('허용 서비스 URL 파싱 오류:', e);
+ return service;
+ }
+ }
+ return service;
+ })
+ .filter((s) => s.length > 0); // 빈 항목 제거
+
+ if (window && !window.isDestroyed()) {
+ console.log(`${processedServices.length}개의 허용 서비스로 모니터링 시작:`, processedServices);
+ startBrowserMonitoring(window, processedServices);
+ } else {
+ console.error('메인 창이 없어 모니터링을 시작할 수 없습니다.');
+ }
+};
+
+export const addBrowserMonitorIpcHandler = (window: BrowserWindow | null) => {
+ ipcMain.on('browser-monitor:start', (_, allowedServices: string[]) => {
+ startBrowserMonitor(window, allowedServices);
+ });
+
+ ipcMain.on('browser-monitor:stop', () => {
+ stopBrowserMonitoring();
+ });
+};
diff --git a/src/electron/notification/mac.ts b/src/electron/notification/mac.ts
new file mode 100644
index 00000000..0b93353e
--- /dev/null
+++ b/src/electron/notification/mac.ts
@@ -0,0 +1,15 @@
+import { Notification, app } from 'electron';
+import path from 'path';
+
+const iconPath = path.join(app.getAppPath(), 'dist-electron/morib_logo.png');
+
+export const showNotification = (title: string, body: string) => {
+ const notification = new Notification({
+ title,
+ body,
+ icon: iconPath,
+ silent: false,
+ });
+
+ notification.show();
+};
diff --git a/src/electron/window/key.ts b/src/electron/window/key.ts
new file mode 100644
index 00000000..dc9c1855
--- /dev/null
+++ b/src/electron/window/key.ts
@@ -0,0 +1,27 @@
+import { BrowserWindow } from 'electron';
+
+export const blockDevTools = (window: BrowserWindow | null) => {
+ if (!window) return;
+
+ window.webContents.on('before-input-event', (event, input) => {
+ // 개발자 도구를 열 수 있는 모든 단축키 차단
+
+ if (
+ // cmd + option + i (macOS)
+ (input.key === 'i' && input.meta && input.alt) ||
+ // F12
+ input.key === 'F12' ||
+ // cmd + shift + i (macOS), ctrl + shift + i (Windows/Linux)
+ (input.key === 'i' && input.shift && (input.meta || input.control)) ||
+ // cmd + shift + c (macOS), ctrl + shift + c (Windows/Linux)
+ (input.key === 'c' && input.shift && (input.meta || input.control)) ||
+ // cmd + shift + j (macOS), ctrl + shift + j (Windows/Linux)
+ (input.key === 'j' && input.shift && (input.meta || input.control)) ||
+ // 줌 관련 키 중 cmd+ 및 cmd- 외의 다른 키 차단 (ctrl+0 등)
+ (input.key === '0' && (input.meta || input.control))
+ ) {
+ // 기본 동작 차단
+ event.preventDefault();
+ }
+ });
+};
diff --git a/src/electron/window/os.ts b/src/electron/window/os.ts
new file mode 100644
index 00000000..5071eb7d
--- /dev/null
+++ b/src/electron/window/os.ts
@@ -0,0 +1,25 @@
+import { BrowserWindow } from 'electron';
+
+export const blockClose = (window: BrowserWindow | null, isAppQuitting: boolean, authWindow: BrowserWindow | null) => {
+ if (!window) return;
+
+ window.on('close', (event) => {
+ if (!isAppQuitting && authWindow !== null && !authWindow.isDestroyed() && window && !window.isDestroyed()) {
+ event.preventDefault();
+
+ // 전체화면 상태인지 확인
+ if (window.isFullScreen()) {
+ // 전체화면 상태면 먼저 전체화면 해제 후 숨김
+ window.setFullScreen(false);
+ // 전체화면 해제 애니메이션 완료 후 숨김 처리
+ } else {
+ // 전체화면이 아니면 바로 숨김
+ window.hide();
+ }
+
+ return false;
+ }
+
+ return true;
+ });
+};
diff --git a/src/electron/window/resolution.ts b/src/electron/window/resolution.ts
new file mode 100644
index 00000000..62b3ecf1
--- /dev/null
+++ b/src/electron/window/resolution.ts
@@ -0,0 +1,52 @@
+import { dialog, screen } from 'electron';
+
+/**
+ * 기본 줌 레벨
+ * Zoom Factor 와 Zoom level 은 다른 개념이다.
+ * Zoom Factor 는 퍼센트 배율로 줌 조절
+ * Zoom level 은 지수 배율로 줌 조절 (1.2^n, n은 정수)
+ * 편의를 위해서 Zoom Level 사용으로 통일
+ */
+
+/**
+ * workAreaSize.width >= MAC16_WIDTH(1728) 일 경우 기본 배율
+ */
+const BASE_ZOOM_LEVEL = 0;
+
+/**
+ * workAreaSize.width < MAC16_WIDTH(1728) 일 경우 줌 축소
+ */
+const SMALL_ZOOM_LEVEL = -1.0;
+
+/**
+ * 맥북 16인치 해상도 기준 (workAreaSize.width: 1700)
+ */
+const MAC16_WIDTH = 1700;
+
+/**
+ * 화면 해상도에 따른 적절한 줌 팩터를 계산합니다.
+ * @returns 화면에 맞는 줌 팩터
+ */
+export const calculateZoomLevel = (): number => {
+ // 맥 os 화면 해상도 확인 (workArea란 상단 메뉴바 제외 영역)
+ const display = screen.getPrimaryDisplay();
+ const pixelWidth = display.workAreaSize.width;
+
+ // 해상도가 맥북 16인치보다 작은 경우 줌 축소
+ if (pixelWidth < MAC16_WIDTH) {
+ return SMALL_ZOOM_LEVEL;
+ }
+
+ return BASE_ZOOM_LEVEL;
+};
+
+/**
+ * BrowserWindow 생성 시 webPreferences에 포함할 줌 설정 반환
+ * 이 방법은 Chromium의 preference 저장 기능에 영향을 받지 않게 하기 위함
+ * @returns webPreferences에 포함할 zoomFactor 값
+ */
+export const getZoomPreferences = () => {
+ return {
+ zoomLevel: calculateZoomLevel(),
+ };
+};
diff --git a/vite.config.ts b/vite.config.ts
index dd29d55f..a151cf5b 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -3,17 +3,21 @@ import { defineConfig } from 'vite';
import svgr from 'vite-plugin-svgr';
// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [react(), svgr()],
- resolve: {
- alias: [{ find: '@', replacement: '/src/app' }],
- },
- base: '/',
- build: {
- outDir: 'dist-react',
- },
- server: {
- port: 5173,
- strictPort: true,
- },
+export default defineConfig(({ mode }) => {
+ const isReact = mode === 'react';
+
+ return {
+ plugins: [react(), svgr()],
+ resolve: {
+ alias: [{ find: '@', replacement: '/src/app' }],
+ },
+ base: isReact ? '/' : './',
+ build: {
+ outDir: 'dist-react',
+ },
+ server: {
+ port: 5173,
+ strictPort: true,
+ },
+ };
});