83 KiB
<link rel="alternate" type="application/atom+xml" title="" href="/jinilkim/DS-Asset_Export_to_JSON.atom">
<link rel="alternate" type="application/rss+xml" title="" href="/jinilkim/DS-Asset_Export_to_JSON.rss">
<link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml">
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
<script>
window.addEventListener('error', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
window.addEventListener('unhandledrejection', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
window.config = {
appUrl: 'https:\/\/repositories.action2quare.com\/',
appSubUrl: '',
assetVersionEncoded: encodeURIComponent('1.24.2'),
assetUrlPrefix: '\/assets',
runModeIsProd: true ,
customEmojis: {"codeberg":"
","git":"
","gitea":"
","github":"
","gitlab":"
","gogs":"
"},
csrfToken: '1OxtcFNze5ZgsVV_aaL0c4SVb-g6MTc2MjMxMDU1MDY2OTk1MjMwMA',
pageData: {},
notificationSettings: {"EventSourceUpdateTime":10000,"MaxTimeout":60000,"MinTimeout":10000,"TimeoutStep":10000},
enableTimeTracking: true ,
mermaidMaxSourceCharacters: 50000 ,
i18n: {
copy_success: "Copied!",
copy_error: "Copy failed",
error_occurred: "An error occurred",
network_error: "Network error",
remove_label_str: "Remove item \"%s\"",
modal_confirm: "Confirm",
modal_cancel: "취소",
more_items: "More items",
},
};
window.config.pageData = window.config.pageData || {};
</script>
<script src="/assets/js/webcomponents.js?v=1.24.2"></script>
<meta property="og:title" content="DS-Asset_Export_to_JSON/README.md at master">
<meta property="og:url" content="https://repositories.action2quare.com//jinilkim/DS-Asset_Export_to_JSON/src/branch/master/README.md">
<meta property="og:type" content="object">
<meta property="og:image" content="https://repositories.action2quare.com/avatars/21dcf4a87f77c7896226587a3f1224ea">
<link rel="stylesheet" href="/assets/css/index.css?v=1.24.2">
</head>
<div class="full height">
<noscript>This website requires JavaScript.</noscript>
<a class="item" id="navbar-logo" href="/" aria-label="대시보드">
<img width="30" height="30" src="/assets/img/logo.svg" alt="Logo" aria-hidden="true">
</a>
<div class="ui secondary menu navbar-mobile-right only-mobile">
<a id="mobile-notifications-icon" class="item" href="/notifications" data-tooltip-content="알림" aria-label="알림">
<div class="tw-relative">
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
<span class="notification_count tw-hidden">0</span>
</div>
</a>
<button class="item ui icon mini button tw-m-0" id="navbar-expand-toggle" aria-label="Navigation Menu"><svg viewBox="0 0 16 16" class="svg octicon-three-bars" aria-hidden="true" width="16" height="16"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75m0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75M1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5"/></svg></button>
</div>
<a class="item" href="/issues">이슈들</a>
<a class="item" href="/pulls">풀 리퀘스트</a>
<a class="item" href="/milestones">마일스톤</a>
<a class="item" href="/explore/repos">탐색</a>
</div>
<div class="navbar-right">
<a class="item not-mobile" href="/notifications" data-tooltip-content="알림" aria-label="알림">
<div class="tw-relative">
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
<span class="notification_count tw-hidden">0</span>
</div>
</a>
<div class="ui dropdown jump item" data-tooltip-content="생성하기">
<span class="text">
<svg viewBox="0 0 16 16" class="svg octicon-plus" aria-hidden="true" width="16" height="16"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2"/></svg>
<span class="not-mobile"><svg viewBox="0 0 16 16" class="svg octicon-triangle-down" aria-hidden="true" width="16" height="16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg></span>
<span class="only-mobile">생성하기</span>
</span>
<div class="menu">
<a class="item" href="/repo/create">
<svg viewBox="0 0 16 16" class="svg octicon-plus" aria-hidden="true" width="16" height="16"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2"/></svg> 새 저장소
</a>
<a class="item" href="/repo/migrate">
<svg viewBox="0 0 16 16" class="svg octicon-repo-push" aria-hidden="true" width="16" height="16"><path d="M1 2.5A2.5 2.5 0 0 1 3.5 0h8.75a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0V1.5h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 3.5 9h3.25a.75.75 0 0 1 0 1.5H3.5a1 1 0 0 0 0 2h5.75a.75.75 0 0 1 0 1.5H3.5A2.5 2.5 0 0 1 1 11.5Zm13.23 7.79zl-1.224-1.224v6.184a.75.75 0 0 1-1.5 0V9.066L10.28 10.29a.75.75 0 0 1-1.06-1.061l2.505-2.504a.75.75 0 0 1 1.06 0L15.29 9.23a.75.75 0 0 1-.018 1.042.75.75 0 0 1-1.042.018"/></svg> 새 마이그레이션
</a>
<a class="item" href="/org/create">
<svg viewBox="0 0 16 16" class="svg octicon-organization" aria-hidden="true" width="16" height="16"><path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5q0 .127-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.8.8 0 0 1-.197-.026q-.148.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5M3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75m4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75M7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5M3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75M7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5"/></svg> 새로운 조직
</a>
</div>
</div>
<div class="ui dropdown jump item" data-tooltip-content="프로파일 및 설정">
<span class="text">
<img loading="lazy" alt class="ui avatar tw-align-middle tw-mr-1" src="/avatars/21dcf4a87f77c7896226587a3f1224ea?size=48" title="jinilkim" width="24" height="24"/>
<span class="only-mobile">jinilkim</span>
<span class="not-mobile"><svg viewBox="0 0 16 16" class="svg octicon-triangle-down" aria-hidden="true" width="16" height="16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg></span>
</span>
<div class="menu user-menu">
<div class="header">
다음 사용자로 로그인됨 <strong>jinilkim</strong>
</div>
<div class="divider"></div>
<a class="item" href="/jinilkim">
<svg viewBox="0 0 16 16" class="svg octicon-person" aria-hidden="true" width="16" height="16"><path d="M10.561 8.073a6 6 0 0 1 3.432 5.142.75.75 0 1 1-1.498.07 4.5 4.5 0 0 0-8.99 0 .75.75 0 0 1-1.498-.07 6 6 0 0 1 3.431-5.142 3.999 3.999 0 1 1 5.123 0M10.5 5a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0"/></svg>
프로필
</a>
<a class="item" href="/jinilkim?tab=stars">
<svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg>
즐겨찾기
</a>
<a class="item" href="/notifications/subscriptions">
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
Subscriptions
</a>
<a class="item" href="/user/settings">
<svg viewBox="0 0 16 16" class="svg octicon-tools" aria-hidden="true" width="16" height="16"><path d="M5.433 2.304A4.49 4.49 0 0 0 3.5 6c0 1.598.832 3.002 2.09 3.802.518.328.929.923.902 1.64v.008l-.164 3.337a.75.75 0 1 1-1.498-.073l.163-3.33c.002-.085-.05-.216-.207-.316A6 6 0 0 1 2 6a6 6 0 0 1 2.567-4.92 1.48 1.48 0 0 1 1.673-.04c.462.296.76.827.76 1.423v2.82c0 .082.041.16.11.206l.75.51a.25.25 0 0 0 .28 0l.75-.51A.25.25 0 0 0 9 5.282V2.463c0-.596.298-1.127.76-1.423a1.48 1.48 0 0 1 1.673.04A6 6 0 0 1 14 6a6 6 0 0 1-2.786 5.068c-.157.1-.209.23-.207.315l.163 3.33a.752.752 0 0 1-1.094.714.75.75 0 0 1-.404-.64l-.164-3.345c-.027-.717.384-1.312.902-1.64A4.5 4.5 0 0 0 12.5 6a4.49 4.49 0 0 0-1.933-3.696c-.024.017-.067.067-.067.16v2.818a1.75 1.75 0 0 1-.767 1.448l-.75.51a1.75 1.75 0 0 1-1.966 0l-.75-.51A1.75 1.75 0 0 1 5.5 5.282V2.463c0-.092-.043-.142-.067-.159"/></svg>
설정
</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">
<svg viewBox="0 0 16 16" class="svg octicon-question" aria-hidden="true" width="16" height="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13M6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.76 2.76 0 0 1 1.637.525c.503.377.863.965.863 1.725 0 .448-.115.83-.329 1.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6 6 0 0 0-.26.16 1 1 0 0 0-.276.245.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661q.154-.1.313-.195l.007-.004c.1-.061.182-.11.258-.161a1 1 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.61.61 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1 1 0 0 0-.34.398M9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></svg>
도움말
</a>
<div class="divider"></div>
<a class="item link-action" href data-url="/user/logout">
<svg viewBox="0 0 16 16" class="svg octicon-sign-out" aria-hidden="true" width="16" height="16"><path d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25Zm10.44 4.5-1.97-1.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734l1.97-1.97H6.75a.75.75 0 0 1 0-1.5Z"/></svg>
로그아웃
</a>
</div>
</div>
</div>
<div class="ui container">
<div class="repo-header">
<div class="flex-item tw-items-center">
<div class="flex-item-leading">
<svg viewBox="0 0 16 16" class="svg octicon-repo" aria-hidden="true" width="24" height="24"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.5 2.5 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.25.25 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>
</div>
<div class="flex-item-main">
<div class="flex-item-title tw-text-18">
<a class="muted tw-font-normal" href="/jinilkim">jinilkim</a>/<a class="muted" href="/jinilkim/DS-Asset_Export_to_JSON">DS-Asset_Export_to_JSON</a>
</div>
</div>
<div class="flex-item-trailing">
</div>
</div>
<div class="flex-text-block tw-flex-wrap">
<a class="ui compact small basic button" href="/jinilkim/DS-Asset_Export_to_JSON.rss" data-tooltip-content="RSS Feed">
<svg viewBox="0 0 16 16" class="svg octicon-rss" aria-hidden="true" width="16" height="16"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
</a>
<form class="flex-text-inline" hx-boost="true" hx-target="this" method="post" action="/jinilkim/DS-Asset_Export_to_JSON/action/unwatch">
<div class="ui labeled button" >
<button type="submit" class="ui compact small basic button" aria-label="보지않기">
<svg viewBox="0 0 16 16" class="svg octicon-eye" aria-hidden="true" width="16" height="16"><path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14s-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2M1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5s2.825-.742 3.955-1.715c1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5s-2.825.742-3.955 1.715c-1.124.967-1.954 2.096-2.366 2.717M8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10"/></svg>
<span class="not-mobile" aria-hidden="true">보지않기</span>
</button>
<a hx-boost="false" class="ui basic label" href="/jinilkim/DS-Asset_Export_to_JSON/watchers">
1
</a>
</div>
<form class="flex-text-inline" hx-boost="true" hx-target="this" method="post" action="/jinilkim/DS-Asset_Export_to_JSON/action/star">
<div class="ui labeled button" >
<button type="submit" class="ui compact small basic button" aria-label="좋아요">
<svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg>
<span class="not-mobile" aria-hidden="true">좋아요</span>
</button>
<a hx-boost="false" class="ui basic label" href="/jinilkim/DS-Asset_Export_to_JSON/stars">
0
</a>
</div>
<div class="ui labeled button
disabled
"
data-tooltip-content="자신의 저장소를 포크 할 수 없습니다."
>
<a class="ui compact small basic button"
>
<svg viewBox="0 0 16 16" class="svg octicon-repo-forked" aria-hidden="true" width="16" height="16"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0M5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0m6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5m-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0"/></svg><span class="text not-mobile">포크</span>
</a>
<a class="ui basic label" href="/jinilkim/DS-Asset_Export_to_JSON/forks">
0
</a>
</div>
<div class="ui small modal" id="fork-repo-modal">
<div class="header">
You've already forked DS-Asset_Export_to_JSON
</div>
<div class="content tw-text-left">
<div class="ui list">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="ui container">
<overflow-menu class="ui secondary pointing menu">
<div class="overflow-menu-items">
<a class="active item" href="/jinilkim/DS-Asset_Export_to_JSON">
<svg viewBox="0 0 16 16" class="svg octicon-code" aria-hidden="true" width="16" height="16"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215m-6.56 0a.75.75 0 0 1 1.042.018.75.75 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"/></svg> 코드
</a>
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/issues">
<svg viewBox="0 0 16 16" class="svg octicon-issue-opened" aria-hidden="true" width="16" height="16"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0"/></svg> 이슈
</a>
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/pulls">
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" aria-hidden="true" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25m5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354M3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0"/></svg> 풀 리퀘스트
</a>
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/actions">
<svg viewBox="0 0 16 16" class="svg octicon-play" aria-hidden="true" width="16" height="16"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0m4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215"/></svg> Actions
</a>
<a href="/jinilkim/DS-Asset_Export_to_JSON/packages" class="item">
<svg viewBox="0 0 16 16" class="svg octicon-package" aria-hidden="true" width="16" height="16"><path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0M7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.25.25 0 0 0-.25 0M2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"/></svg> Packages
</a>
<a href="/jinilkim/DS-Asset_Export_to_JSON/projects" class="item">
<svg viewBox="0 0 16 16" class="svg octicon-project" aria-hidden="true" width="16" height="16"><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0M1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25M11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75m-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3"/></svg> Projects
</a>
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/releases">
<svg viewBox="0 0 16 16" class="svg octicon-tag" aria-hidden="true" width="16" height="16"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.75 1.75 0 0 1 1 7.775m1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></svg> 릴리즈
</a>
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/wiki">
<svg viewBox="0 0 16 16" class="svg octicon-book" aria-hidden="true" width="16" height="16"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.74 3.74 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574M8.755 4.75l-.004 7.322a3.75 3.75 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25"/></svg> 위키
</a>
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/activity">
<svg viewBox="0 0 16 16" class="svg octicon-pulse" aria-hidden="true" width="16" height="16"><path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.75.75 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.75.75 0 0 1 6 2"/></svg> 활동
</a>
<span class="item-flex-space"></span>
<a class=" item" href="/jinilkim/DS-Asset_Export_to_JSON/settings">
<svg viewBox="0 0 16 16" class="svg octicon-tools" aria-hidden="true" width="16" height="16"><path d="M5.433 2.304A4.49 4.49 0 0 0 3.5 6c0 1.598.832 3.002 2.09 3.802.518.328.929.923.902 1.64v.008l-.164 3.337a.75.75 0 1 1-1.498-.073l.163-3.33c.002-.085-.05-.216-.207-.316A6 6 0 0 1 2 6a6 6 0 0 1 2.567-4.92 1.48 1.48 0 0 1 1.673-.04c.462.296.76.827.76 1.423v2.82c0 .082.041.16.11.206l.75.51a.25.25 0 0 0 .28 0l.75-.51A.25.25 0 0 0 9 5.282V2.463c0-.596.298-1.127.76-1.423a1.48 1.48 0 0 1 1.673.04A6 6 0 0 1 14 6a6 6 0 0 1-2.786 5.068c-.157.1-.209.23-.207.315l.163 3.33a.752.752 0 0 1-1.094.714.75.75 0 0 1-.404-.64l-.164-3.345c-.027-.717.384-1.312.902-1.64A4.5 4.5 0 0 0 12.5 6a4.49 4.49 0 0 0-1.933-3.696c-.024.017-.067.067-.067.16v2.818a1.75 1.75 0 0 1-.767 1.448l-.75.51a1.75 1.75 0 0 1-1.966 0l-.75-.51A1.75 1.75 0 0 1 5.5 5.282V2.463c0-.092-.043-.142-.067-.159"/></svg> 설정
</a>
</div>
</overflow-menu>
</div>
<div class="ui tabs divider"></div>
<div class="ui container fluid padded">
<div class="repo-view-container">
<div class="repo-view-file-tree-container not-mobile tw-hidden" data-user-is-signed-in>
<div class="flex-text-block repo-button-row">
<button class="ui compact basic icon button"
data-global-click="onRepoViewFileTreeToggle" data-toggle-action="hide"
data-tooltip-content="Hide file tree">
<svg viewBox="0 0 16 16" class="svg octicon-sidebar-expand" aria-hidden="true" width="16" height="16"><path d="m4.177 7.823 2.396-2.396A.25.25 0 0 1 7 5.604v4.792a.25.25 0 0 1-.427.177L4.177 8.177a.25.25 0 0 1 0-.354"/><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25H9.5v-13Zm12.5 13a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11v13Z"/></svg>
</button>
<b>Files</b>
</div>
<div class="repo-view-content">
<button class="repo-view-file-tree-toggle-show ui compact basic button icon not-mobile "
data-global-click="onRepoViewFileTreeToggle" data-toggle-action="show"
data-tooltip-content="Show file tree">
<svg viewBox="0 0 16 16" class="svg octicon-sidebar-collapse" aria-hidden="true" width="16" height="16"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"/><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0M1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25M11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"/></svg>
</button>
data-current-repo-default-branch="master"
data-current-repo-link="/jinilkim/DS-Asset_Export_to_JSON"
data-current-tree-path="README.md"
data-current-ref-type="branch"
data-current-ref-short-name="master"
data-ref-link-template="{RepoLink}/src/{RefType}/{RefShortName}/{TreePath}"
data-ref-form-action-template=""
data-dropdown-fixed-text=""
data-show-tab-branches="true"
data-show-tab-tags="true"
data-allow-create-new-ref="true"
data-show-view-all-refs-entry="true"
data-enable-feed="true"
<div class="ui dropdown custom branch-selector-dropdown ellipsis-text-items">
<div class="ui compact button branch-dropdown-button">
<span class="flex-text-block gt-ellipsis">
<svg viewBox="0 0 16 16" class="svg octicon-git-branch" aria-hidden="true" width="16" height="16"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.5 2.5 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25m-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0m8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5M4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5"/></svg>
<strong class="tw-inline-block gt-ellipsis">master</strong>
</span>
<svg viewBox="0 0 16 16" class="dropdown icon svg octicon-triangle-down" aria-hidden="true" width="14" height="14"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg>
</div>
</div>
<a id="new-pull-request" role="button" class="ui compact basic button" href="/jinilkim/DS-Asset_Export_to_JSON/compare/master...master?expand=1"
data-tooltip-content="새 풀 리퀘스트">
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" aria-hidden="true" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25m5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354M3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0"/></svg>
</a>
<span class="breadcrumb repo-path tw-ml-1">
<a class="section" href="/jinilkim/DS-Asset_Export_to_JSON/src/branch/master" title="DS-Asset_Export_to_JSON">DS-Asset_Export_to_JSON</a><span class="breadcrumb-divider">/</span><span class="active section" title="README.md">README.md</span>
<button class="btn interact-fg tw-mx-1" data-clipboard-text="README.md" data-tooltip-content="Copy path"><svg viewBox="0 0 16 16" class="svg octicon-copy" aria-hidden="true" width="14" height="14"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg></button></span>
</div>
<div class="repo-button-row-right">
</div>
<div class="tab-size-4 non-diff-file-content">
<div id="repo-file-commit-box" class="ui segment list-header tw-mb-4 tw-flex tw-justify-between">
<div class="latest-commit">
<img loading="lazy" alt class="ui avatar tw-align-middle" src="/avatars/21dcf4a87f77c7896226587a3f1224ea?size=48" title="jinilkim" width="24" height="24"/>
<a class="muted author-wrapper" title="jinilkim" href="/jinilkim"><strong>jinilkim</strong></a>
<a href="/jinilkim/DS-Asset_Export_to_JSON/commit/4671fcc0bbf9b3d94e739b2082f02300f48182d0" class="ui label commit-id-short " rel="nofollow">4671fcc0bb</a>
<span class="grey commit-summary" title="Add single asset export functionality and enhance README with usage details"><span class="message-wrapper"><a href="/jinilkim/DS-Asset_Export_to_JSON/commit/4671fcc0bbf9b3d94e739b2082f02300f48182d0" class="muted">Add single asset export functionality and enhance README with usage details</a></span>
</span>
<div class="text grey age">
<relative-time prefix="" tense="past" datetime="2025-10-23T21:02:50+09:00" data-tooltip-content data-tooltip-interactive="true">2025-10-23 21:02:50 +09:00</relative-time>
</div>
</div>
<h4 class="file-header ui top attached header tw-flex tw-items-center tw-justify-between tw-flex-wrap">
<div class="file-header-left tw-flex tw-items-center tw-py-2 tw-pr-4">
<div class="file-info tw-font-mono">
<div class="file-info-entry">
19 KiB
</div>
</div>
<div class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap">
<div class="ui compact icon buttons">
<a href="?display=source" class="ui mini basic button " data-tooltip-content="View Source"><svg viewBox="0 0 16 16" class="svg octicon-code" aria-hidden="true" width="15" height="15"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215m-6.56 0a.75.75 0 0 1 1.042.018.75.75 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"/></svg></a>
<a href="/jinilkim/DS-Asset_Export_to_JSON/src/branch/master/README.md" class="ui mini basic button active" data-tooltip-content="View Rendered"><svg viewBox="0 0 16 16" class="svg octicon-file" aria-hidden="true" width="15" height="15"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914z"/></svg></a>
</div>
<div class="ui buttons tw-mr-1">
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/raw/branch/master/README.md">Raw</a>
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/src/commit/4671fcc0bbf9b3d94e739b2082f02300f48182d0/README.md">고유링크</a>
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/blame/branch/master/README.md">Blame</a>
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/commits/branch/master/README.md">히스토리</a>
</div>
<a download class="btn-octicon" data-tooltip-content="Download file" href="/jinilkim/DS-Asset_Export_to_JSON/raw/branch/master/README.md"><svg viewBox="0 0 16 16" class="svg octicon-download" aria-hidden="true" width="16" height="16"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"/><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06z"/></svg></a>
<a class="btn-octicon " data-global-click="onCopyContentButtonClick" data-link="/jinilkim/DS-Asset_Export_to_JSON/raw/branch/master/README.md" data-tooltip-content="Copy content"><svg viewBox="0 0 16 16" class="svg octicon-copy" aria-hidden="true" width="16" height="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg></a>
<a class="btn-octicon" href="/jinilkim/DS-Asset_Export_to_JSON/rss/branch/master/README.md" data-tooltip-content="RSS Feed">
<svg viewBox="0 0 16 16" class="svg octicon-rss" aria-hidden="true" width="16" height="16"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
</a>
<a class="btn-octicon" data-tooltip-content="파일 편집" href="/jinilkim/DS-Asset_Export_to_JSON/_edit/master/README.md"><svg viewBox="0 0 16 16" class="svg octicon-pencil" aria-hidden="true" width="16" height="16"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.25.25 0 0 0-.064.108l-.558 1.953 1.953-.558a.25.25 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"/></svg></a>
<a class="btn-octicon btn-octicon-danger" data-tooltip-content="파일 삭제" href="/jinilkim/DS-Asset_Export_to_JSON/_delete/master/README.md"><svg viewBox="0 0 16 16" class="svg octicon-trash" aria-hidden="true" width="16" height="16"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75M4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.75 1.75 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15M6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25"/></svg></a>
</div>
</h4>
<div class="ui bottom attached table unstackable segment">
<div class="file-view markup markdown">
<h1 id="user-content-asset-export-to-json---언리얼-엔진-에디터-확장-기능" dir="auto">Asset Export to JSON - 언리얼 엔진 에디터 확장 기능</h1>
개요
본 에디터 확장 기능은 언리얼 엔진 에셋을 JSON 형식으로 변환하여 LLM 기반 전투 밸런스 분석을 수행할 수 있는 포괄적인 에셋 익스포트 시스템을 제공합니다. 다양한 에셋 타입에서 상세한 데이터를 추출하여 AI 시스템이 분석할 수 있는 텍스트 기반 문서를 생성합니다.
목적: 대규모 언어 모델(LLM) 처리에 적합한 구조화된 텍스트 기반 게임 에셋 표현을 제공하여 포괄적인 전투 밸런스 분석을 가능하게 합니다.
지원 에셋 타입:
- DataTable - 완전한 행/열 데이터
- Blueprint - 변수, 함수, 컴포넌트, 노드 연결을 포함한 이벤트 그래프
- AnimMontage - 섹션, 노티파이, 커스텀 프로퍼티, 슬롯 애니메이션
- CurveTable - 키-값 커브 데이터 (RichCurves 및 SimpleCurves)
주요 기능
설정 기반 익스포트
- 프로젝트 설정 통합:
편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON에서 익스포트 경로 설정 - 영구 설정: 설정이
Config/DefaultEditor.ini에 저장되어 SVN/Git을 통한 팀 공유 가능 - 다중 폴더 지원: 한 번의 클릭으로 여러 폴더 경로에서 익스포트
- 에셋 타입 필터링: 설정을 통해 특정 에셋 타입 활성화/비활성화
두 가지 익스포트 방식
1. 대량 익스포트 (Tools 메뉴)
- 설정된 모든 폴더의 에셋을 한 번에 익스포트
- 프로젝트 전체 밸런스 분석에 적합
Tools → WorldStalker → Export Assets to JSON
2. 단일 에셋 익스포트 (우클릭 메뉴)
- Content Browser에서 개별 에셋 우클릭 후 즉시 익스포트
- 빠른 테스트 및 반복 작업에 적합
- 타임스탬프 파일명 자동 생성
포괄적인 데이터 추출
Blueprint 익스포트
변수 추출 - 3가지 소스:
-
Blueprint 커스텀 변수 (
Blueprint->NewVariables)- Blueprint 에디터에서 추가한 모든 커스텀 변수
- 변수 GUID, 타입 정보 (Category, SubCategory, ContainerType)
- Property flags (IsEditable, IsBlueprintVisible, IsExposedOnSpawn 등)
- 카테고리명 및 전체 메타데이터
- Replication 설정
-
C++ 부모 클래스 프로퍼티 (
Category = "WorldStalker")- ✨ NEW: C++ 부모 클래스에서 정의된 중요 프로퍼티 추출
- ActivationOrderGroup - 스킬 실행 순서 그룹
- bDisableOrderGroup - 순서 그룹 비활성화 여부
- bCanBeCancel - 취소 가능 여부
- ActivationTrigger - 발동 트리거 타입
- bStopAutoTargetWhenEndAbility - 어빌리티 종료 시 자동 타겟 중지
- Source 필드로 "C++ParentClass" 표시
- OwnerClass 필드로 정의된 C++ 클래스 명시
-
컴파일된 클래스 프로퍼티
- 부모 클래스에서 상속된 기타 프로퍼티
함수:
- 입력/출력 파라미터를 포함한 함수 목록
- FunctionGraphs에서 추출
컴포넌트:
- 컴포넌트 계층 구조
- SimpleConstructionScript에서 추출
이벤트 그래프: 다음을 포함한 완전한 노드 그래프
- 노드 타입, 제목, 위치, 코멘트
- 핀 타입, 방향, 기본값
- 핀 간 연결 그래프
- 노드별 프로퍼티
AnimMontage 익스포트
- 시작/종료 시간을 포함한 섹션
- 세그먼트를 포함한 슬롯 애니메이션 트랙
- 노티파이 이벤트: 다음을 포함한 완전한 노티파이 데이터
- 노티파이 타입 및 트리거 시간
- 노티파이 클래스의 커스텀 프로퍼티
- 블렌드 인/아웃 설정
- 트랙 인덱스 및 싱크 마커
CurveTable 익스포트
- RichCurves와 SimpleCurves 모두 지원
- 시간, 값, 탄젠트 정보를 포함한 키 데이터
- 커브 보간 모드
진행 상황 로깅
- ✨ NEW: 10개 에셋마다 진행 상황 로그 출력
- Output Log에서 실시간 진행 상황 확인 가능
- 에디터가 먹통처럼 보이는 현상 방지
- 로그 카테고리:
LogAssetExporter
출력 관리
- 타임스탬프 익스포트: 익스포트 히스토리 보관을 위한 선택적 타임스탬프 하위 폴더
- 타입별 파일 분리: 에셋 타입별 개별 JSON 파일 (DataTable.json, Blueprint.json 등)
- 보기 좋은 JSON 형식: 들여쓰기가 적용된 사람이 읽기 쉬운 형식
- 중복 검출: 폴더가 겹칠 때 중복 익스포트 방지
설치 방법
1. 파일 구조
다음 파일들을 프로젝트에 복사하세요:
새 파일 (Source/WorldStalkerEditor/Utility/에 복사):
AssetExportSettings.h
AssetExportSettings.cpp
AssetExporterToJSON.h
AssetExporterToJSON.cpp
수정된 파일 (수동으로 변경사항 병합):
WorldStalkerEditor.h- MERGE_INSTRUCTIONS.md 참조WorldStalkerEditor.cpp- MERGE_INSTRUCTIONS.md 참조
2. 빌드 설정
WorldStalkerEditor.Build.cs에 다음을 추가하세요:
PublicDependencyModuleNames.AddRange(new string[] { "AssetRegistry", "Json", "JsonUtilities" });
PrivateDependencyModuleNames.AddRange(new string[] { "UnrealEd", "Engine", "Slate", "SlateCore", "ToolMenus", "DeveloperSettings", "ContentBrowser" // 우클릭 메뉴용 });
3. 프로젝트 리빌드
# Visual Studio 프로젝트 파일 생성 GenerateVSProjectFile.bat에디터 모듈 빌드
또는 Visual Studio에서 리빌드
설정 방법
1단계: 프로젝트 설정 열기
다음으로 이동: 편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON
2단계: 익스포트 경로 설정
Export Folder Paths (배열):
/Game/콘텐츠 디렉토리 기준 상대 경로로 폴더 경로 추가- 예시 경로:
Blueprints/EnemyBlueprints/CharactersBlueprints/AbilitiesDataTables
+버튼으로 새 경로 추가-버튼으로 경로 제거
기본 경로 (자동 설정됨):
Blueprints/Enemy
Blueprints/Characters
Blueprints/Abilities
DataTables
3단계: 출력 설정 구성
Output Directory (출력 디렉토리):
- 기본값:
Exports(Content 폴더 기준 상대 경로) - 원하는 경우 커스텀 경로 설정
Create Timestamped Folder (타임스탬프 폴더 생성):
- 활성화:
Export_2025_01_15_143022와 같은 하위 폴더 생성 - 비활성화: 출력 디렉토리의 파일을 덮어씀
4단계: 에셋 타입 선택
특정 에셋 타입에 대한 익스포트 활성화 또는 비활성화:
- ☑ Export DataTables (데이터테이블 익스포트)
- ☑ Export Blueprints (블루프린트 익스포트)
- ☑ Export AnimMontages (애님 몽타주 익스포트)
- ☑ Export CurveTables (커브테이블 익스포트)
사용 방법
방법 1: 대량 익스포트 (Tools 메뉴)
전체 프로젝트 밸런스 분석용
- 언리얼 에디터 열기
- 다음으로 이동:
Tools → WorldStalker → Export Assets to JSON - Output Log에서 진행 상황 확인 (
Window → Developer Tools → Output Log)- 로그 필터:
LogAssetExporter
- 로그 필터:
- 익스포트 완료 대기 (알림 대화상자가 표시됨)
Output Log 예시:
LogAssetExporter: Starting Asset Export to JSON process...
LogAssetExporter: Export path: /Game/Blueprints/Abilities
LogAssetExporter: Found 45 Blueprints to export
LogAssetExporter: Processing Blueprint 1/45: GA_Skill_Cazimord_Flash
LogAssetExporter: Processing Blueprint 10/45: GA_Skill_Fireball
LogAssetExporter: Processing Blueprint 20/45: GA_Skill_IceSpear
...
LogAssetExporter: Exported 45 Blueprints
LogAssetExporter: Export completed! Total assets exported: 168
방법 2: 단일 에셋 익스포트 (우클릭)
빠른 테스트 및 반복 작업용
- Content Browser에서 익스포트할 에셋 찾기
- 에셋 우클릭
- "Export to JSON" 선택
- 즉시 익스포트 완료 (확인 대화상자 표시)
지원 에셋 타입:
- DataTable
- Blueprint
- AnimMontage
- CurveTable
출력 파일명 형식:
Blueprint_GA_Skill_Cazimord_Flash_20251023_143205.json
AnimMontage_AM_Attack_Combo_20251023_143210.json
익스포트 출력
파일이 저장되는 위치: Content/Exports/ (또는 설정된 출력 디렉토리)
출력 구조 (타임스탬프 폴더 사용 시):
Content/
└── Exports/
└── Export_2025_01_15_143022/
├── DataTable.json
├── Blueprint.json
├── AnimMontage.json
└── CurveTable.json
출력 형식 예시
DataTable.json
{
"ExportedAt": "2025-10-23 14:32:05",
"TotalCount": 10,
"Assets": [
{
"AssetName": "DT_CharacterStats",
"AssetPath": "/Game/DataTables/DT_CharacterStats",
"RowStructure": "FCharacterStats",
"Rows": [
{
"RowName": "Warrior",
"Data": {
"Name": "Warrior",
"Health": 1000.0,
"Attack": 150.0,
"Defense": 100.0
}
}
]
}
]
}
Blueprint.json - 변수 섹션
{
"AssetName": "GA_Skill_Cazimord_Flash",
"AssetPath": "/Game/Blueprints/Abilities/GA_Skill_Cazimord_Flash",
"ParentClass": "WSGameplayAbility",
"Variables": [
{
"Name": "ActivationOrderGroup",
"Type": "uint8",
"DefaultValue": "1",
"CategoryName": "WorldStalker",
"Source": "C++ParentClass",
"OwnerClass": "WSGameplayAbility",
"IsEditable": true,
"IsBlueprintVisible": true,
"IsBlueprintReadOnly": false,
"IsEditDefaultsOnly": true
},
{
"Name": "bDisableOrderGroup",
"Type": "bool",
"DefaultValue": "False",
"CategoryName": "WorldStalker",
"Source": "C++ParentClass",
"OwnerClass": "WSGameplayAbility"
},
{
"Name": "CustomDamageMultiplier",
"VarGuid": "A1B2C3D4-E5F6-7890-ABCD-EF1234567890",
"Category": "float",
"DefaultValue": "1.5",
"Source": "Blueprint",
"IsEditable": true,
"IsBlueprintVisible": true,
"CategoryName": "Combat",
"MetaData": {
"DisplayName": "데미지 배율",
"Tooltip": "스킬 데미지 최종 배율"
}
}
],
"Functions": [...],
"Components": [...],
"EventGraphs": [...]
}
변수 Source 타입 설명:
"Blueprint": Blueprint 에디터에서 추가한 커스텀 변수"C++ParentClass": C++ 부모 클래스에서 정의된 프로퍼티 (Category = "WorldStalker")"CompiledClass": 기타 컴파일된 클래스 프로퍼티
AnimMontage.json
{
"AssetName": "AM_Attack_Combo",
"AssetPath": "/Game/Animations/AM_Attack_Combo",
"SequenceLength": 2.5,
"RateScale": 1.0,
"Sections": [
{
"SectionName": "Combo1",
"StartTime": 0.0,
"NextSectionName": "Combo2"
}
],
"AnimNotifies": [
{
"NotifyName": "DealDamage",
"TriggerTime": 0.5,
"Duration": 0.0,
"NotifyType": "Notify",
"NotifyClass": "ANS_DealDamage",
"CustomProperties": {
"DamageAmount": "50.0",
"DamageType": "Physical"
}
}
],
"SlotAnimTracks": [
{
"SlotName": "DefaultSlot",
"AnimSegments": [
{
"AnimReference": "AS_Attack1",
"AnimPath": "/Game/Animation/Sequences/AS_Attack1",
"StartPos": 0.0,
"AnimStartTime": 0.0,
"AnimEndTime": 1.0,
"AnimPlayRate": 1.0,
"LoopingCount": 1
}
]
}
],
"BlendInTime": 0.25,
"BlendOutTime": 0.25,
"BlendModeIn": "Standard",
"BlendModeOut": "Standard"
}
전투 밸런스 분석 활용 예시
워크플로우
-
전체 스킬 익스포트
Project Settings → Asset Export to JSON Export Folder Paths에 "/Game/Blueprints/Abilities" 추가 Tools → Export Assets to JSON 실행 -
익스포트된 JSON 분석
import jsonwith open('Content/Exports/Blueprint.json', encoding='utf-8') as f: data = json.load(f)
# ActivationOrderGroup 분석 for asset in data['Assets']: if 'GA_Skill' in asset['AssetName']: variables = asset['Variables']
<span class="c1"># C++ 부모 클래스 프로퍼티 찾기</span> <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">variables</span><span class="p">:</span> <span class="k">if</span> <span class="n">var</span><span class="p">[</span><span class="s1">'Source'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'C++ParentClass'</span><span class="p">:</span> <span class="k">if</span> <span class="n">var</span><span class="p">[</span><span class="s1">'Name'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'ActivationOrderGroup'</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">asset</span><span class="p">[</span><span class="s1">'AssetName'</span><span class="p">]</span><span class="si">}</span><span class="s2">: Order Group = </span><span class="si">{</span><span class="n">var</span><span class="p">[</span><span class="s1">'DefaultValue'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -
특정 스킬 수정 후 빠른 재분석
1. GA_Skill_Cazimord_Flash 블루프린트 수정 2. Content Browser에서 우클릭 → Export to JSON 3. 생성된 단일 JSON 파일로 LLM 분석 4. 밸런스 피드백 받기 5. 반복
LLM 프롬프트 예시
다음 스킬 Blueprint JSON을 분석해주세요:[JSON 데이터 붙여넣기]
분석 포인트:
- ActivationOrderGroup 값이 적절한가?
- 같은 그룹의 다른 스킬들과 밸런스가 맞는가?
- CustomProperties의 데미지 배율이 적정한가?
AnimMontage의 타이밍과 DealDamage 노티파이 시점이 일치하는가?
문제 해결
출력 파일이 생성되지 않음
문제: 익스포트가 완료되었지만 JSON 파일이 생성되지 않음 해결: 익스포트 경로에 활성화된 타입의 에셋이 포함되어 있는지 확인
우클릭 메뉴가 나타나지 않음
문제: Content Browser에서 에셋 우클릭 시 "Export to JSON" 메뉴가 없음 해결:
- 지원되는 에셋 타입인지 확인 (DataTable, Blueprint, AnimMontage, CurveTable)
- 단일 에셋만 선택했는지 확인 (다중 선택 시 메뉴 비활성화)
- 에디터 재시작 시도
C++ 프로퍼티가 익스포트되지 않음
문제: ActivationOrderGroup 같은 C++ 프로퍼티가 JSON에 없음 해결:
- Property에
Category = "WorldStalker"메타데이터가 있는지 확인 - C++ 헤더 파일에서
UPROPERTY(EditDefaultsOnly, Category = "WorldStalker")선언 확인 - 최신 코드로 빌드되었는지 확인
출력에 중복 에셋
문제: 동일한 에셋이 JSON에 여러 번 나타남 해결: 이제 중복 검출로 방지됨 - 설정에서 겹치는 폴더 경로 확인
진행 상황이 보이지 않음
문제: 익스포트 중 에디터가 먹통처럼 보임
해결: Output Log 열기 (Window → Developer Tools → Output Log)
- 필터에
LogAssetExporter입력 - 10개 에셋마다 진행 상황 로그 확인 가능
통합 후 빌드 오류
문제: 누락된 헤더에 대한 컴파일 오류
해결: 모든 의존성이 .Build.cs 파일에 추가되었는지 확인 (설치 섹션 참조)
대형 프로젝트에서 익스포트 중단
문제: 익스포트가 매우 오래 걸림 해결: 익스포트 경로 수를 줄이거나 필요하지 않은 에셋 타입 비활성화
설정이 유지되지 않음
문제: 에디터 재시작 후 설정 초기화
해결: Config/DefaultEditor.ini가 쓰기 가능하고 잠겨있지 않은지 확인
기술 세부사항
언리얼 엔진 버전
- 테스트 환경: 언리얼 엔진 5.5.4 (커스텀 빌드)
- API 호환성: UE 5.5+ CurveTable API 사용 (GetRichCurveRowMap/GetSimpleCurveRowMap)
모듈 의존성
- AssetRegistry - 에셋 검색 및 필터링
- Json/JsonUtilities - JSON 직렬화
- UnrealEd - 에디터 통합
- ToolMenus - 메뉴 확장 시스템
- DeveloperSettings - 프로젝트 설정 통합
- ContentBrowser - 우클릭 컨텍스트 메뉴
성능 특성
- 재귀 검색: 설정된 경로의 모든 하위 폴더 검색
- 메모리 사용량: 메모리 사용량을 최소화하기 위해 에셋을 하나씩 로드
- 익스포트 속도: 에셋 복잡도에 따라 초당 약 10-50개 에셋
- 진행 상황: 10개 에셋마다 로그 출력으로 진행 상황 실시간 확인
Blueprint 변수 추출 상세
시스템은 3가지 소스에서 변수를 추출합니다:
1. Blueprint 커스텀 변수 (Blueprint->NewVariables)
for (const FBPVariableDescription& Variable : Blueprint->NewVariables)
{
// VarName, VarGuid, VarType, DefaultValue 추출
// PropertyFlags, Category, MetaData 추출
}
2. C++ 부모 클래스 프로퍼티 (Category = "WorldStalker")
for (TFieldIterator<FProperty> PropIt(Blueprint->GeneratedClass); PropIt; ++PropIt)
{
const FString* CategoryMeta = PropIt->FindMetaData(TEXT("Category"));
if (CategoryMeta && CategoryMeta->Equals(TEXT("WorldStalker")))
{
// ActivationOrderGroup 등 중요 프로퍼티 추출
}
}
3. 기타 컴파일된 클래스 프로퍼티
- 부모 클래스에서 상속된 기타 프로퍼티
Blueprint 이벤트 그래프 추출
시스템은 Blueprint 그래프 구조를 순회하여 다음을 추출합니다:
UbergraphPages의 모든 노드 (이벤트 그래프)- 노드 메타데이터 (클래스, 제목, 위치, 코멘트)
- 핀 정보 (타입, 방향, 기본값)
- 핀 간 연결 그래프 (LinkedTo 관계)
- 그래프 노드의 프로퍼티 값
AnimMontage 커스텀 프로퍼티 추출
커스텀 프로퍼티는 다음 방식으로 Notify 객체에서 추출됩니다:
- 모든
AnimNotifyEvent항목 반복 - Notify 객체 클래스 프로퍼티 리플렉션
- 편집 가능한 프로퍼티 필터링 (
CPF_Edit플래그) - 프로퍼티 값을 JSON으로 직렬화
알려진 제한사항
- Blueprint 비주얼 스크립트 로직: 노드 그래프 구조는 익스포트하지만 비주얼 스크립트 바이트코드 실행 흐름은 익스포트하지 않음
- 바이너리 에셋: 바이너리 데이터 (메시, 텍스처, 오디오)는 익스포트할 수 없음
- 복잡한 프로퍼티 타입: 일부 복잡한 UObject 프로퍼티는 객체 참조로만 익스포트될 수 있음
- 대형 Blueprint: 수천 개의 노드가 있는 매우 큰 블루프린트는 익스포트에 상당한 시간이 걸릴 수 있음
- 카테고리 필터: 현재 "WorldStalker" 카테고리만 C++ 프로퍼티를 추출 (필요시 코드 수정으로 다른 카테고리 추가 가능)
개발 히스토리
Version 1.0 (2025-10-23)
초기 릴리스: 포괄적인 에셋 추출 기능을 갖춘 INI 기반 설정 시스템
주요 기능:
- ✅ Blueprint 커스텀 변수 (NewVariables) 완전 추출
- ✅ C++ 부모 클래스 프로퍼티 추출 (Category = "WorldStalker")
- ActivationOrderGroup 등 중요 프로퍼티 지원
- ✅ 우클릭 컨텍스트 메뉴로 단일 에셋 빠른 익스포트
- ✅ 진행 상황 로깅 (10개 에셋마다)
- ✅ AnimMontage 커스텀 프로퍼티 추출
- ✅ 이벤트 그래프 노드 연결 추출
- ✅ INI 기반 영구 설정
주요 설계 결정:
- 반복 사용의 편의성을 위해 체크박스 UI 대신 INI 기반 설정 선택
- 버전 관리를 통한 팀 협업을 위한 UDeveloperSettings 통합
- 겹치는 폴더 경로로부터 중복 익스포트 방지를 위한 중복 검출
- 사람의 가독성과 LLM 처리를 위한 보기 좋은 JSON 형식
- C++ 부모 클래스 프로퍼티 추출로 스킬 밸런스 분석 강화
지원
이슈, 질문 또는 기능 요청:
- 본 README 및 MERGE_INSTRUCTIONS.md 확인
- 언리얼 에디터의 출력 로그에서 오류 메시지 검토
- 연락처: jinilkim@oneunivrs.com
라이선스
Copyright Epic Games, Inc. All Rights Reserved. WorldStalker (DungeonStalkers) 프로젝트의 일부입니다.
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="page-footer" role="group" aria-label="Footer">
<div class="left-links" role="contentinfo" aria-label="About Software">
<a target="_blank" rel="noopener noreferrer" href="https://about.gitea.com">Gitea 제공</a>
버전:
1.24.2
페이지: <strong>344ms</strong>
템플릿: <strong>3ms</strong>
</div>
<div class="right-links" role="group" aria-label="Links">
<div class="ui dropdown upward">
<span class="flex-text-inline"><svg viewBox="0 0 16 16" class="svg octicon-globe" aria-hidden="true" width="14" height="14"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M5.78 8.75a9.64 9.64 0 0 0 1.363 4.177q.383.64.857 1.215c.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a10 10 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.51 6.51 0 0 0 4.666 5.5q-.184-.271-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948m-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948q.18-.295.353-.552a6.51 6.51 0 0 0-4.666 5.5m10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948q-.18.296-.353.552a6.51 6.51 0 0 0 4.666-5.5Zm2.733-1.5a6.51 6.51 0 0 0-4.666-5.5q.184.272.353.552c.714 1.192 1.436 2.874 1.58 4.948Z"/></svg> 한국어</span>
<div class="menu language-menu">
<a lang="id-ID" data-url="/?lang=id-ID" class="item ">Bahasa Indonesia</a>
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
<a lang="en-US" data-url="/?lang=en-US" class="item ">English</a>
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">Español</a>
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">Français</a>
<a lang="ga-IE" data-url="/?lang=ga-IE" class="item ">Gaeilge</a>
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">Italiano</a>
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">Latviešu</a>
<a lang="hu-HU" data-url="/?lang=hu-HU" class="item ">Magyar nyelv</a>
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">Polski</a>
<a lang="pt-PT" data-url="/?lang=pt-PT" class="item ">Português de Portugal</a>
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">Português do Brasil</a>
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">Suomi</a>
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">Svenska</a>
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">Čeština</a>
<a lang="el-GR" data-url="/?lang=el-GR" class="item ">Ελληνικά</a>
<a lang="bg-BG" data-url="/?lang=bg-BG" class="item ">Български</a>
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">Русский</a>
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
<a lang="fa-IR" data-url="/?lang=fa-IR" class="item ">فارسی</a>
<a lang="ml-IN" data-url="/?lang=ml-IN" class="item ">മലയാളം</a>
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item selected">한국어</a>
</div>
</div>
<a href="/assets/licenses.txt">Licenses</a>
<a href="/api/swagger">API</a>
</div>
<script src="/assets/js/index.js?v=1.24.2" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script>
</html>