@cartanova/qgrid-cli 2.6.8 → 2.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/dist/application/qgrid/expired-token-reminder.js +20 -5
- package/bundle/dist/application/setting/setting.constant.js +226 -0
- package/bundle/dist/application/setting/setting.model.js +20 -2
- package/bundle/dist/application/setting/setting.types.js +5 -2
- package/bundle/dist/sonamu.config.js +2 -2
- package/bundle/dist/utils/providers/openai/openai-worker-pool-config.js +2 -2
- package/bundle/dist/utils/quiet-hours.js +30 -26
- package/bundle/dist/utils/slack-notify.js +6 -2
- package/bundle/src/application/qgrid/expired-token-reminder.test.ts +43 -0
- package/bundle/src/application/qgrid/expired-token-reminder.ts +22 -2
- package/bundle/src/application/setting/{setting.schema.test.ts → setting.constant.test.ts} +30 -1
- package/bundle/src/application/setting/{setting.schema.ts → setting.constant.ts} +86 -10
- package/bundle/src/application/setting/setting.model.ts +15 -1
- package/bundle/src/application/setting/setting.types.ts +3 -1
- package/bundle/src/application/sonamu.generated.http +7 -0
- package/bundle/src/sonamu.config.ts +3 -1
- package/bundle/src/utils/providers/openai/openai-worker-pool-config.ts +1 -1
- package/bundle/src/utils/quiet-hours.ts +56 -17
- package/bundle/src/utils/slack-notify.test.ts +96 -13
- package/bundle/src/utils/slack-notify.ts +8 -1
- package/bundle/web-dist/client/assets/{index-DrsXE13r.js → index-BRRNJRgu.js} +3 -3
- package/bundle/web-dist/client/assets/index-rdbxJinT.css +1 -0
- package/bundle/web-dist/client/assets/{logs-e4-6aYnO.js → logs-BI5K8oe4.js} +1 -1
- package/bundle/web-dist/client/assets/{monit-eOAlYTK9.js → monit-4Y-Razet.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-Qie4ogtJ.js → routes-CkBXB-V4.js} +1 -1
- package/bundle/web-dist/client/assets/services.generated-BzwTuZRP.js +1 -0
- package/bundle/web-dist/client/assets/settings-B62_r1i4.js +1 -0
- package/bundle/web-dist/client/assets/{show-60iOOM-e.js → show-CGRchJj7.js} +1 -1
- package/bundle/web-dist/client/assets/tokens-Bx5mQnoJ.js +1 -0
- package/bundle/web-dist/client/assets/{use-oauth-login-flow-0ZGq74bZ.js → use-oauth-login-flow-Bz87RV5v.js} +1 -1
- package/bundle/web-dist/client/index.html +2 -2
- package/bundle/web-dist/server/assets/{logs-DmkzGxGU.js → logs-C1rxLh8H.js} +1 -1
- package/bundle/web-dist/server/assets/{monit-DyKLJX4s.js → monit-C8gx9Sar.js} +1 -1
- package/bundle/web-dist/server/assets/{routes-g62E9xmC.js → routes-ZW_Ih5Em.js} +8 -5
- package/bundle/web-dist/server/assets/{services.generated-DADr9OGH.js → services.generated-CZIChgHV.js} +8 -0
- package/bundle/web-dist/server/assets/{settings-CMJKayff.js → settings--aoatERH.js} +72 -22
- package/bundle/web-dist/server/assets/{show-BGAiCPGq.js → show-BY27w9oi.js} +1 -1
- package/bundle/web-dist/server/assets/{tokens-DmhIfVct.js → tokens-DIObtTuZ.js} +13 -53
- package/bundle/web-dist/server/assets/{use-oauth-login-flow-B6MY65IN.js → use-oauth-login-flow-V3k8PSqQ.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +7 -7
- package/package.json +1 -1
- package/skills/qgrid/references/cli-env-and-server-boot.md +5 -2
- package/skills/qgrid/references/decision-rationale.md +7 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +2 -1
- package/skills/qgrid/references/tool-calling-and-multiturn.md +21 -0
- package/bundle/dist/application/setting/setting.schema.js +0 -157
- package/bundle/web-dist/client/assets/index-7SZyiqAx.css +0 -1
- package/bundle/web-dist/client/assets/services.generated-T4ctVcia.js +0 -1
- package/bundle/web-dist/client/assets/settings-CTVZpAAg.js +0 -1
- package/bundle/web-dist/client/assets/tokens-DdDccGlX.js +0 -1
|
@@ -37,20 +37,35 @@ function buildReminderContext(tokens, userMap) {
|
|
|
37
37
|
return mention ? `${mention} ${label}` : label;
|
|
38
38
|
}), "재로그인이 필요합니다"].filter(Boolean).join("\n");
|
|
39
39
|
}
|
|
40
|
-
async function sendReminder(deps) {
|
|
40
|
+
async function sendReminder(deps, urgent = false) {
|
|
41
41
|
const inactive = await deps.findInactive();
|
|
42
|
-
if (inactive.length === 0) return;
|
|
42
|
+
if (inactive.length === 0) return 0;
|
|
43
43
|
const userMap = deps.getSlackUserMap();
|
|
44
44
|
await deps.sendSlack({
|
|
45
45
|
title: "세션 만료",
|
|
46
46
|
subject: inactive.length > 1 ? `${inactive.length}건` : inactive[0].name ?? "unnamed",
|
|
47
47
|
context: buildReminderContext(inactive, userMap),
|
|
48
|
-
color: SLACK_COLOR.bad
|
|
48
|
+
color: SLACK_COLOR.bad,
|
|
49
|
+
urgent
|
|
49
50
|
});
|
|
51
|
+
return inactive.length;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 화면의 "지금 보내기". 사람이 직접 누른 것이므로 조용 시간·마스터 스위치를 통과시킨다 —
|
|
55
|
+
* 눌렀는데 아무 일도 안 일어나면 버튼이 고장 난 것으로 읽힌다.
|
|
56
|
+
*
|
|
57
|
+
* 보낸 건수를 돌려줘 호출부가 "보낼 대상 없음"과 "보냄"을 구분해 보여준다.
|
|
58
|
+
*/
|
|
59
|
+
function sendExpiredTokenReminderNow(deps = defaultDeps) {
|
|
60
|
+
return sendReminder(deps, true);
|
|
50
61
|
}
|
|
51
62
|
let timer = null;
|
|
52
63
|
function scheduleExpiredTokenReminder(runNow, deps) {
|
|
53
64
|
stopExpiredTokenReminder();
|
|
65
|
+
if (deps.readSetting("slack.remindersEnabled", "SLACK_REMINDERS_ENABLED") === "false") {
|
|
66
|
+
logger.info("expired token reminder disabled");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
54
69
|
const minutes = Number(deps.readSetting("slack.expiryReminderMinutes", "SLACK_EXPIRY_REMINDER_INTERVAL_MINUTES") ?? 0);
|
|
55
70
|
if (!Number.isFinite(minutes) || minutes <= 0) return;
|
|
56
71
|
logger.info(`expired token reminder every ${minutes}m (${deps.getSlackUserMap().size} user mappings)`);
|
|
@@ -77,6 +92,6 @@ function stopExpiredTokenReminder() {
|
|
|
77
92
|
timer = null;
|
|
78
93
|
}
|
|
79
94
|
//#endregion
|
|
80
|
-
export { buildReminderContext, rescheduleExpiredTokenReminder, startExpiredTokenReminder, stopExpiredTokenReminder };
|
|
95
|
+
export { buildReminderContext, rescheduleExpiredTokenReminder, sendExpiredTokenReminderNow, startExpiredTokenReminder, stopExpiredTokenReminder };
|
|
81
96
|
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwaXJlZC10b2tlbi1yZW1pbmRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvZXhwaXJlZC10b2tlbi1yZW1pbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOyEuOyFmCDrp4zro4wg7JWM66a8IOuwmOuztS5cbiAqXG4gKiDrp4zro4wg7Iic6rCE7J2YIOyVjOumvChgdG9rZW4tZGVhdGgudHNgKeydgCDqt7jrlYwg7LGE64SQ7J2EIOuztOyngCDslYrsnLzrqbQg64aT7Lmc64ukLiDsnqzroZzqt7jsnbjsnYAg7IKs656M7J20XG4gKiDtlbTslbwg7ZWY64qUIOydvOydtOudvCDrhpPsuZjrqbQg7Yag7YGw7J20IOqzhOyGjSDruaDsp4Qg7LGE66GcIOuCqOuKlOuLpC4g6re4656Y7IScIOyVhOyngSDsnqzroZzqt7jsnbjrkJjsp4Ag7JWK7J2AXG4gKiDthqDtgbDsnYQg6rCZ7J2AIOusuOq1rOuhnCDri6Tsi5wg7JWM66aw64ukIOKAlCDsgqzqsbTsnbQg7ZWY64KY7J2066+A66GcIOyVjOumvOuPhCDtlZwg7KKF66WY64ukLlxuICpcbiAqIOyXrOufrCDthqDtgbDsnbQg66eM66OM64+8IOyeiOycvOuptCDtlZwg66mU7Iuc7KeA7JeQIOuqqOydgOuLpC4g7Yag7YGw66eI64ukIOuplOyLnOyngOulvCDrs7TrgrTrqbQg7LGE64SQ7J20IOyLnOuBhOufrOybjFxuICog7KCV7J6RIOydve2eiOyngCDslYrripTri6QuXG4gKlxuICog67mE7Zmc7ISxIO2GoO2BsOydtCDsl4bsnLzrqbQg67O064K07KeAIOyViuuKlOuLpCDigJQgXCLsnbTsg4Eg7JeG7J2MXCLsnYQg7KO86riw7KCB7Jy866GcIOyVjOumrOuptCDssYTrhJDsnbQg66y0646M7KeE64ukLlxuICovXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuXG5pbXBvcnQgeyBub3RpZnlTbGFjaywgU0xBQ0tfQ09MT1IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc2xhY2stbm90aWZ5XCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5nIH0gZnJvbSBcIi4uL3NldHRpbmcvc2V0dGluZy5zdG9yZVwiO1xuaW1wb3J0IHsgVG9rZW5Nb2RlbCB9IGZyb20gXCIuLi90b2tlbi90b2tlbi5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0U2xhY2tVc2VyTWFwLCBtZW50aW9uRm9yIH0gZnJvbSBcIi4vc2xhY2stdXNlci1tYXBcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwiZXhwaXJlZC1yZW1pbmRlclwiXSk7XG5cbmNvbnN0IE1JTlVURV9NUyA9IDYwXzAwMDtcblxuZXhwb3J0IHR5cGUgRXhwaXJlZFRva2VuUmVtaW5kZXJEZXBzID0ge1xuICBmaW5kSW5hY3RpdmU6ICgpID0+IFByb21pc2U8eyBuYW1lOiBzdHJpbmcgfCBudWxsOyBwcm92aWRlcjogc3RyaW5nIH1bXT47XG4gIGdldFNsYWNrVXNlck1hcDogKCkgPT4gTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZFNldHRpbmc6IHR5cGVvZiBnZXRTZXR0aW5nO1xuICBzZW5kU2xhY2s6IHR5cGVvZiBub3RpZnlTbGFjaztcbn07XG5cbmNvbnN0IGRlZmF1bHREZXBzOiBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMgPSB7XG4gIGZpbmRJbmFjdGl2ZTogKCkgPT4gVG9rZW5Nb2RlbC5maW5kSW5hY3RpdmUoXCJBXCIpLFxuICBnZXRTbGFja1VzZXJNYXAsXG4gIHJlYWRTZXR0aW5nOiBnZXRTZXR0aW5nLFxuICBzZW5kU2xhY2s6IG5vdGlmeVNsYWNrLFxufTtcblxuLyoqXG4gKiAx6rG07J2066m0IOygnOuqqShzdWJqZWN0KeyXkCDthqDtgbDrqoXsnbQg7J2066+4IOyeiOycvOuvgOuhnCDrs7jrrLjsl5DshJzripQg67qA64ukIOKAlCDqsJnsnYAg7J2066aE7J2EIOuRkCDrsogg7JOw66m0XG4gKiDsnb3ripQg7IKs656M7J20IOuLpOuluCDsoJXrs7Tsnbgg7KSEIOyVjOqzoCDtlZwg67KIIOuNlCDrs7jri6QuIOyXrOufrCDqsbTsnbTrqbQg7KCc66qp7J20IOqxtOyImOudvCDrs7jrrLjsl5Ag64Ko6ri064ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZW1pbmRlckNvbnRleHQoXG4gIHRva2VuczogeyBuYW1lOiBzdHJpbmcgfCBudWxsOyBwcm92aWRlcjogc3RyaW5nIH1bXSxcbiAgdXNlck1hcDogTWFwPHN0cmluZywgc3RyaW5nPixcbik6IHN0cmluZyB7XG4gIGNvbnN0IHNob3dMYWJlbCA9IHRva2Vucy5sZW5ndGggPiAxO1xuICBjb25zdCBsaW5lcyA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB7XG4gICAgY29uc3QgbWVudGlvbiA9IG1lbnRpb25Gb3IodG9rZW4ubmFtZSwgdXNlck1hcCk7XG4gICAgY29uc3QgbGFiZWwgPSB0b2tlbi5uYW1lID8/IFwidW5uYW1lZFwiO1xuICAgIGlmICghc2hvd0xhYmVsKSByZXR1cm4gbWVudGlvbjtcbiAgICByZXR1cm4gbWVudGlvbiA/
|
|
97
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwaXJlZC10b2tlbi1yZW1pbmRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvZXhwaXJlZC10b2tlbi1yZW1pbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOyEuOyFmCDrp4zro4wg7JWM66a8IOuwmOuztS5cbiAqXG4gKiDrp4zro4wg7Iic6rCE7J2YIOyVjOumvChgdG9rZW4tZGVhdGgudHNgKeydgCDqt7jrlYwg7LGE64SQ7J2EIOuztOyngCDslYrsnLzrqbQg64aT7Lmc64ukLiDsnqzroZzqt7jsnbjsnYAg7IKs656M7J20XG4gKiDtlbTslbwg7ZWY64qUIOydvOydtOudvCDrhpPsuZjrqbQg7Yag7YGw7J20IOqzhOyGjSDruaDsp4Qg7LGE66GcIOuCqOuKlOuLpC4g6re4656Y7IScIOyVhOyngSDsnqzroZzqt7jsnbjrkJjsp4Ag7JWK7J2AXG4gKiDthqDtgbDsnYQg6rCZ7J2AIOusuOq1rOuhnCDri6Tsi5wg7JWM66aw64ukIOKAlCDsgqzqsbTsnbQg7ZWY64KY7J2066+A66GcIOyVjOumvOuPhCDtlZwg7KKF66WY64ukLlxuICpcbiAqIOyXrOufrCDthqDtgbDsnbQg66eM66OM64+8IOyeiOycvOuptCDtlZwg66mU7Iuc7KeA7JeQIOuqqOydgOuLpC4g7Yag7YGw66eI64ukIOuplOyLnOyngOulvCDrs7TrgrTrqbQg7LGE64SQ7J20IOyLnOuBhOufrOybjFxuICog7KCV7J6RIOydve2eiOyngCDslYrripTri6QuXG4gKlxuICog67mE7Zmc7ISxIO2GoO2BsOydtCDsl4bsnLzrqbQg67O064K07KeAIOyViuuKlOuLpCDigJQgXCLsnbTsg4Eg7JeG7J2MXCLsnYQg7KO86riw7KCB7Jy866GcIOyVjOumrOuptCDssYTrhJDsnbQg66y0646M7KeE64ukLlxuICovXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuXG5pbXBvcnQgeyBub3RpZnlTbGFjaywgU0xBQ0tfQ09MT1IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc2xhY2stbm90aWZ5XCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5nIH0gZnJvbSBcIi4uL3NldHRpbmcvc2V0dGluZy5zdG9yZVwiO1xuaW1wb3J0IHsgVG9rZW5Nb2RlbCB9IGZyb20gXCIuLi90b2tlbi90b2tlbi5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0U2xhY2tVc2VyTWFwLCBtZW50aW9uRm9yIH0gZnJvbSBcIi4vc2xhY2stdXNlci1tYXBcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwiZXhwaXJlZC1yZW1pbmRlclwiXSk7XG5cbmNvbnN0IE1JTlVURV9NUyA9IDYwXzAwMDtcblxuZXhwb3J0IHR5cGUgRXhwaXJlZFRva2VuUmVtaW5kZXJEZXBzID0ge1xuICBmaW5kSW5hY3RpdmU6ICgpID0+IFByb21pc2U8eyBuYW1lOiBzdHJpbmcgfCBudWxsOyBwcm92aWRlcjogc3RyaW5nIH1bXT47XG4gIGdldFNsYWNrVXNlck1hcDogKCkgPT4gTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZFNldHRpbmc6IHR5cGVvZiBnZXRTZXR0aW5nO1xuICBzZW5kU2xhY2s6IHR5cGVvZiBub3RpZnlTbGFjaztcbn07XG5cbmNvbnN0IGRlZmF1bHREZXBzOiBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMgPSB7XG4gIGZpbmRJbmFjdGl2ZTogKCkgPT4gVG9rZW5Nb2RlbC5maW5kSW5hY3RpdmUoXCJBXCIpLFxuICBnZXRTbGFja1VzZXJNYXAsXG4gIHJlYWRTZXR0aW5nOiBnZXRTZXR0aW5nLFxuICBzZW5kU2xhY2s6IG5vdGlmeVNsYWNrLFxufTtcblxuLyoqXG4gKiAx6rG07J2066m0IOygnOuqqShzdWJqZWN0KeyXkCDthqDtgbDrqoXsnbQg7J2066+4IOyeiOycvOuvgOuhnCDrs7jrrLjsl5DshJzripQg67qA64ukIOKAlCDqsJnsnYAg7J2066aE7J2EIOuRkCDrsogg7JOw66m0XG4gKiDsnb3ripQg7IKs656M7J20IOuLpOuluCDsoJXrs7Tsnbgg7KSEIOyVjOqzoCDtlZwg67KIIOuNlCDrs7jri6QuIOyXrOufrCDqsbTsnbTrqbQg7KCc66qp7J20IOqxtOyImOudvCDrs7jrrLjsl5Ag64Ko6ri064ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZW1pbmRlckNvbnRleHQoXG4gIHRva2VuczogeyBuYW1lOiBzdHJpbmcgfCBudWxsOyBwcm92aWRlcjogc3RyaW5nIH1bXSxcbiAgdXNlck1hcDogTWFwPHN0cmluZywgc3RyaW5nPixcbik6IHN0cmluZyB7XG4gIGNvbnN0IHNob3dMYWJlbCA9IHRva2Vucy5sZW5ndGggPiAxO1xuICBjb25zdCBsaW5lcyA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB7XG4gICAgY29uc3QgbWVudGlvbiA9IG1lbnRpb25Gb3IodG9rZW4ubmFtZSwgdXNlck1hcCk7XG4gICAgY29uc3QgbGFiZWwgPSB0b2tlbi5uYW1lID8/IFwidW5uYW1lZFwiO1xuICAgIGlmICghc2hvd0xhYmVsKSByZXR1cm4gbWVudGlvbjtcbiAgICByZXR1cm4gbWVudGlvbiA/IGAke21lbnRpb259ICR7bGFiZWx9YCA6IGxhYmVsO1xuICB9KTtcbiAgcmV0dXJuIFsuLi5saW5lcywgXCLsnqzroZzqt7jsnbjsnbQg7ZWE7JqU7ZWp64uI64ukXCJdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiXFxuXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kUmVtaW5kZXIoZGVwczogRXhwaXJlZFRva2VuUmVtaW5kZXJEZXBzLCB1cmdlbnQgPSBmYWxzZSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGluYWN0aXZlID0gYXdhaXQgZGVwcy5maW5kSW5hY3RpdmUoKTtcbiAgaWYgKGluYWN0aXZlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgY29uc3QgdXNlck1hcCA9IGRlcHMuZ2V0U2xhY2tVc2VyTWFwKCk7XG5cbiAgYXdhaXQgZGVwcy5zZW5kU2xhY2soe1xuICAgIC8vIOunjOujjCDsiJzqsIQg7JWM66a86rO8IOqwmeydgCDsoJzrqqnsnYQg7JO064ukLiDqsJnsnYAg7IKs6rG07J2066+A66GcIOuLpOuluCDsnbTrpoTsnYQg67aZ7J2066m0IOuzhOqwnCDrrLjsoJzroZwg7J297Z6M64ukLlxuICAgIHRpdGxlOiBcIuyEuOyFmCDrp4zro4xcIixcbiAgICBzdWJqZWN0OiBpbmFjdGl2ZS5sZW5ndGggPiAxID8gYCR7aW5hY3RpdmUubGVuZ3RofeqxtGAgOiAoaW5hY3RpdmVbMF0hLm5hbWUgPz8gXCJ1bm5hbWVkXCIpLFxuICAgIGNvbnRleHQ6IGJ1aWxkUmVtaW5kZXJDb250ZXh0KGluYWN0aXZlLCB1c2VyTWFwKSxcbiAgICBjb2xvcjogU0xBQ0tfQ09MT1IuYmFkLFxuICAgIHVyZ2VudCxcbiAgfSk7XG4gIHJldHVybiBpbmFjdGl2ZS5sZW5ndGg7XG59XG5cbi8qKlxuICog7ZmU66m07J2YIFwi7KeA6riIIOuztOuCtOq4sFwiLiDsgqzrnozsnbQg7KeB7KCRIOuIhOuluCDqsoPsnbTrr4DroZwg7KGw7JqpIOyLnOqwhMK366eI7Iqk7YSwIOyKpOychOy5mOulvCDthrXqs7zsi5ztgqjri6Qg4oCUXG4gKiDriIzroIDripTrjbAg7JWE66y0IOydvOuPhCDslYgg7J287Ja064KY66m0IOuyhO2KvOydtCDqs6DsnqUg64KcIOqyg+ycvOuhnCDsnb3tnozri6QuXG4gKlxuICog67O064K4IOqxtOyImOulvCDrj4zroKTspJgg7Zi47Lac67aA6rCAIFwi67O064K8IOuMgOyDgSDsl4bsnYxcIuqzvCBcIuuztOuDhFwi7J2EIOq1rOu2hO2VtCDrs7Tsl6zspIDri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kRXhwaXJlZFRva2VuUmVtaW5kZXJOb3coXG4gIGRlcHM6IEV4cGlyZWRUb2tlblJlbWluZGVyRGVwcyA9IGRlZmF1bHREZXBzLFxuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIHNlbmRSZW1pbmRlcihkZXBzLCB0cnVlKTtcbn1cblxubGV0IHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gc2NoZWR1bGVFeHBpcmVkVG9rZW5SZW1pbmRlcihydW5Ob3c6IGJvb2xlYW4sIGRlcHM6IEV4cGlyZWRUb2tlblJlbWluZGVyRGVwcyk6IHZvaWQge1xuICBzdG9wRXhwaXJlZFRva2VuUmVtaW5kZXIoKTtcblxuICAvLyDso7zquLAg6rCS6rO8IOuzhOqwnOyduCDsiqTsnITsuZjri6QuIOq6vOuPhCDso7zquLDripQg64Ko7JWEIOyeiOyWtCDri6Tsi5wg7LykIOuVjCDqs6DrpbTrjZgg6rCS7J20IOq3uOuMgOuhnOuLpC5cbiAgaWYgKGRlcHMucmVhZFNldHRpbmcoXCJzbGFjay5yZW1pbmRlcnNFbmFibGVkXCIsIFwiU0xBQ0tfUkVNSU5ERVJTX0VOQUJMRURcIikgPT09IFwiZmFsc2VcIikge1xuICAgIGxvZ2dlci5pbmZvKFwiZXhwaXJlZCB0b2tlbiByZW1pbmRlciBkaXNhYmxlZFwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtaW51dGVzID0gTnVtYmVyKFxuICAgIGRlcHMucmVhZFNldHRpbmcoXCJzbGFjay5leHBpcnlSZW1pbmRlck1pbnV0ZXNcIiwgXCJTTEFDS19FWFBJUllfUkVNSU5ERVJfSU5URVJWQUxfTUlOVVRFU1wiKSA/PyAwLFxuICApO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW51dGVzKSB8fCBtaW51dGVzIDw9IDApIHJldHVybjtcblxuICBsb2dnZXIuaW5mbyhcbiAgICBgZXhwaXJlZCB0b2tlbiByZW1pbmRlciBldmVyeSAke21pbnV0ZXN9bSAoJHtkZXBzLmdldFNsYWNrVXNlck1hcCgpLnNpemV9IHVzZXIgbWFwcGluZ3MpYCxcbiAgKTtcblxuICBjb25zdCBydW4gPSAoKSA9PlxuICAgIHNlbmRSZW1pbmRlcihkZXBzKS5jYXRjaCgoZSkgPT4gbG9nZ2VyLndhcm4oYHJlbWluZGVyIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKSk7XG5cbiAgaWYgKHJ1bk5vdykgdm9pZCBydW4oKTtcbiAgdGltZXIgPSBzZXRJbnRlcnZhbChydW4sIG1pbnV0ZXMgKiBNSU5VVEVfTVMpO1xufVxuXG4vKipcbiAqIGBTTEFDS19FWFBJUllfUkVNSU5ERVJfSU5URVJWQUxfTUlOVVRFU2Ag6rCAIOyWkeyImOydvCDrlYzrp4wg7Lyc7KeE64ukLiDrr7jshKTsoJXCtzAg7J2066m0IOu5hO2ZnOyEsS5cbiAqXG4gKiDsnbjsiqTthLTsiqTqsIAg7Jes65+sIOqwnOuptCDqsIHsnpAg67O064K464ukLiDrp4zro4wg7Iic6rCEIOyVjOumvOqzvCDri6zrpqwg7IOB7YOcIOuzgO2ZlOqwgCDsl4bslrQgREIg66GcIOyWteygnO2VoCDsiJhcbiAqIOyXhuqzoCwg7ZWY66OoIOuqhyDqsbQg7IiY7KSA7J206528IOykkeuzteydhCDqsJDsiJjtlZjripQg7Y647J20IOyeoOq4iCDsnqXsuZjrpbwg65GQ64qUIOqyg+uztOuLpCDrgqvri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydEV4cGlyZWRUb2tlblJlbWluZGVyKGRlcHM6IEV4cGlyZWRUb2tlblJlbWluZGVyRGVwcyA9IGRlZmF1bHREZXBzKTogdm9pZCB7XG4gIC8vIOq4sOuPmSDsp4Htm4Tsl5Drj4Qg7ZWcIOuyiCDrs7Trgrjri6QuIOyerOq4sOuPmeydgCDrsLDtj6zrgpgg7J6l7JWgIOuzteq1rCDrlYwg7J287Ja064KY64qU642wLCDqt7gg7Iuc7KCQ7JeQIOydtOuvuFxuICAvLyDrp4zro4zrkJwg7Yag7YGw7J20IOyeiOycvOuptCDssqsg7KO86riw6rCAIOuPjCDrlYzquYzsp4Ag7KGw7Jqp7ZWcIOqyg+ydtCDsnbTsg4HtlZjri6QuXG4gIHNjaGVkdWxlRXhwaXJlZFRva2VuUmVtaW5kZXIodHJ1ZSwgZGVwcyk7XG59XG5cbi8qKiDshKTsoJUg67OA6rK9IOyLnCDquLDsobQg7YOA7J2066i466eMIOyDiCDso7zquLDroZwg6rWQ7LK07ZWc64ukLiDsoIDsnqUg7J6Q7LK06rCAIOyVjOumvOydhCDrs7TrgrTsp4DripQg7JWK64qU64ukLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2NoZWR1bGVFeHBpcmVkVG9rZW5SZW1pbmRlcihkZXBzOiBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMgPSBkZWZhdWx0RGVwcyk6IHZvaWQge1xuICBzY2hlZHVsZUV4cGlyZWRUb2tlblJlbWluZGVyKGZhbHNlLCBkZXBzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BFeHBpcmVkVG9rZW5SZW1pbmRlcigpOiB2b2lkIHtcbiAgaWYgKCF0aW1lcikgcmV0dXJuO1xuICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgdGltZXIgPSBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsTUFBTSxTQUFTLFVBQVUsQ0FBQyxTQUFTLGtCQUFrQixDQUFDO0FBRXRELE1BQU0sWUFBWTtBQVNsQixNQUFNLGNBQXdDO0NBQzVDLG9CQUFvQixXQUFXLGFBQWEsR0FBRztDQUMvQztDQUNBLGFBQWE7Q0FDYixXQUFXO0FBQ2I7Ozs7O0FBTUEsU0FBZ0IscUJBQ2QsUUFDQSxTQUNRO0NBQ1IsTUFBTSxZQUFZLE9BQU8sU0FBUztDQU9sQyxPQUFPLENBQUMsR0FOTSxPQUFPLEtBQUssVUFBVTtFQUNsQyxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sT0FBTztFQUM5QyxNQUFNLFFBQVEsTUFBTSxRQUFRO0VBQzVCLElBQUksQ0FBQyxXQUFXLE9BQU87RUFDdkIsT0FBTyxVQUFVLEdBQUcsUUFBUSxHQUFHLFVBQVU7Q0FDM0MsQ0FDVyxHQUFPLGFBQWEsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJO0FBQzVEO0FBRUEsZUFBZSxhQUFhLE1BQWdDLFNBQVMsT0FBd0I7Q0FDM0YsTUFBTSxXQUFXLE1BQU0sS0FBSyxhQUFhO0NBQ3pDLElBQUksU0FBUyxXQUFXLEdBQUcsT0FBTztDQUVsQyxNQUFNLFVBQVUsS0FBSyxnQkFBZ0I7Q0FFckMsTUFBTSxLQUFLLFVBQVU7RUFFbkIsT0FBTztFQUNQLFNBQVMsU0FBUyxTQUFTLElBQUksR0FBRyxTQUFTLE9BQU8sS0FBTSxTQUFTLEVBQUUsQ0FBRSxRQUFRO0VBQzdFLFNBQVMscUJBQXFCLFVBQVUsT0FBTztFQUMvQyxPQUFPLFlBQVk7RUFDbkI7Q0FDRixDQUFDO0NBQ0QsT0FBTyxTQUFTO0FBQ2xCOzs7Ozs7O0FBUUEsU0FBZ0IsNEJBQ2QsT0FBaUMsYUFDaEI7Q0FDakIsT0FBTyxhQUFhLE1BQU0sSUFBSTtBQUNoQztBQUVBLElBQUksUUFBK0M7QUFFbkQsU0FBUyw2QkFBNkIsUUFBaUIsTUFBc0M7Q0FDM0YseUJBQXlCO0NBR3pCLElBQUksS0FBSyxZQUFZLDBCQUEwQix5QkFBeUIsTUFBTSxTQUFTO0VBQ3JGLE9BQU8sS0FBSyxpQ0FBaUM7RUFDN0M7Q0FDRjtDQUVBLE1BQU0sVUFBVSxPQUNkLEtBQUssWUFBWSwrQkFBK0Isd0NBQXdDLEtBQUssQ0FDL0Y7Q0FDQSxJQUFJLENBQUMsT0FBTyxTQUFTLE9BQU8sS0FBSyxXQUFXLEdBQUc7Q0FFL0MsT0FBTyxLQUNMLGdDQUFnQyxRQUFRLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssZ0JBQzNFO0NBRUEsTUFBTSxZQUNKLGFBQWEsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLE9BQU8sS0FBSyxvQkFBcUIsRUFBWSxTQUFTLENBQUM7Q0FFekYsSUFBSSxRQUFRLEFBQUssSUFBSTtDQUNyQixRQUFRLFlBQVksS0FBSyxVQUFVLFNBQVM7QUFDOUM7Ozs7Ozs7QUFRQSxTQUFnQiwwQkFBMEIsT0FBaUMsYUFBbUI7Q0FHNUYsNkJBQTZCLE1BQU0sSUFBSTtBQUN6Qzs7QUFHQSxTQUFnQiwrQkFBK0IsT0FBaUMsYUFBbUI7Q0FDakcsNkJBQTZCLE9BQU8sSUFBSTtBQUMxQztBQUVBLFNBQWdCLDJCQUFpQztDQUMvQyxJQUFJLENBQUMsT0FBTztDQUNaLGNBQWMsS0FBSztDQUNuQixRQUFRO0FBQ1YifQ==
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
//#region src/application/setting/setting.constant.ts
|
|
2
|
+
/** 64 GiB 운영 호스트에서 세 자리 오입력을 막는 설정 상한. 안전을 보장하는 값은 아니다. */
|
|
3
|
+
const MAX_OPENAI_ESTIMATED_RSS_GIB = 32;
|
|
4
|
+
const MAX_OPENAI_MIN_HOST_AVAILABLE_GIB = 64;
|
|
5
|
+
const SETTING_DEFS = [
|
|
6
|
+
{
|
|
7
|
+
key: "openai.autoscale",
|
|
8
|
+
fallback: "true",
|
|
9
|
+
group: "openai",
|
|
10
|
+
envKey: "QGRID_OPENAI_AUTOSCALE",
|
|
11
|
+
label: "OpenAI 워커 오토스케일",
|
|
12
|
+
kind: "boolean",
|
|
13
|
+
applies: "restart",
|
|
14
|
+
help: "끄면 워커 수가 최소값으로 고정됩니다"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
key: "openai.minWorkersPerToken",
|
|
18
|
+
fallback: "1",
|
|
19
|
+
group: "openai",
|
|
20
|
+
envKey: "QGRID_OPENAI_MIN_WORKERS_PER_TOKEN",
|
|
21
|
+
label: "토큰당 최소 워커",
|
|
22
|
+
kind: "integer",
|
|
23
|
+
applies: "restart",
|
|
24
|
+
min: 1,
|
|
25
|
+
max: 20
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
key: "openai.maxWorkersPerToken",
|
|
29
|
+
fallback: "3",
|
|
30
|
+
group: "openai",
|
|
31
|
+
envKey: "QGRID_OPENAI_MAX_WORKERS_PER_TOKEN",
|
|
32
|
+
label: "토큰당 최대 워커",
|
|
33
|
+
kind: "integer",
|
|
34
|
+
applies: "restart",
|
|
35
|
+
min: 1,
|
|
36
|
+
max: 20,
|
|
37
|
+
help: "오토스케일이 꺼져 있으면 무시됩니다"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "openai.maxEstimatedRssGiB",
|
|
41
|
+
fallback: "16",
|
|
42
|
+
group: "openai",
|
|
43
|
+
envKey: "QGRID_OPENAI_MAX_ESTIMATED_RSS_GIB",
|
|
44
|
+
label: "워커 메모리 상한 (GiB)",
|
|
45
|
+
kind: "number",
|
|
46
|
+
applies: "restart",
|
|
47
|
+
min: 1,
|
|
48
|
+
max: 32,
|
|
49
|
+
help: "이 추정치를 넘기면 워커를 더 늘리지 않습니다. 올릴수록 OOM 위험이 커지며 상한은 오입력 방지용입니다"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
key: "openai.minHostAvailableGiB",
|
|
53
|
+
fallback: "20",
|
|
54
|
+
group: "openai",
|
|
55
|
+
envKey: "QGRID_OPENAI_MIN_HOST_AVAILABLE_GIB",
|
|
56
|
+
label: "호스트 여유 메모리 하한 (GiB)",
|
|
57
|
+
kind: "number",
|
|
58
|
+
applies: "restart",
|
|
59
|
+
min: 0,
|
|
60
|
+
max: 64,
|
|
61
|
+
help: "호스트 여유가 이 값 아래면 스케일업을 멈춥니다. 확장을 끄려면 오토스케일을 끄세요"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
key: "slack.enabled",
|
|
65
|
+
fallback: "true",
|
|
66
|
+
group: "slack",
|
|
67
|
+
envKey: "SLACK_ENABLED",
|
|
68
|
+
label: "Slack 알림",
|
|
69
|
+
kind: "boolean",
|
|
70
|
+
applies: "immediate",
|
|
71
|
+
help: "연휴처럼 규칙으로 잡을 수 없는 기간에 끕니다. 서비스 정지급 장애 알림은 꺼도 전달됩니다"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
key: "slack.remindersEnabled",
|
|
75
|
+
fallback: "true",
|
|
76
|
+
group: "slack",
|
|
77
|
+
envKey: "SLACK_REMINDERS_ENABLED",
|
|
78
|
+
label: "만료 알림 반복",
|
|
79
|
+
kind: "boolean",
|
|
80
|
+
applies: "immediate",
|
|
81
|
+
help: "끄면 반복만 멈추고 만료 순간의 알림은 그대로 갑니다"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
key: "slack.expiryReminderMinutes",
|
|
85
|
+
fallback: "60",
|
|
86
|
+
group: "slack",
|
|
87
|
+
envKey: "SLACK_EXPIRY_REMINDER_INTERVAL_MINUTES",
|
|
88
|
+
label: "반복 주기",
|
|
89
|
+
kind: "preset",
|
|
90
|
+
applies: "immediate",
|
|
91
|
+
presets: [
|
|
92
|
+
10,
|
|
93
|
+
30,
|
|
94
|
+
60,
|
|
95
|
+
180
|
|
96
|
+
],
|
|
97
|
+
help: "재로그인이 필요한 토큰이 남아 있는 동안 이 주기로 다시 알립니다"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
key: "slack.quietFromHour",
|
|
101
|
+
fallback: "20",
|
|
102
|
+
group: "slack",
|
|
103
|
+
envKey: "SLACK_QUIET_FROM_HOUR",
|
|
104
|
+
label: "조용 시간 시작",
|
|
105
|
+
kind: "integer",
|
|
106
|
+
applies: "immediate",
|
|
107
|
+
min: 0,
|
|
108
|
+
max: 23,
|
|
109
|
+
help: "이 시각부터 알리지 않습니다 (한국 시간)"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
key: "slack.quietUntilHour",
|
|
113
|
+
fallback: "8",
|
|
114
|
+
group: "slack",
|
|
115
|
+
envKey: "SLACK_QUIET_UNTIL_HOUR",
|
|
116
|
+
label: "조용 시간 종료",
|
|
117
|
+
kind: "integer",
|
|
118
|
+
applies: "immediate",
|
|
119
|
+
min: 0,
|
|
120
|
+
max: 23,
|
|
121
|
+
help: "이 시각부터 다시 알립니다. 시작보다 빠르면 자정을 넘는 구간이 됩니다"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
key: "slack.notifyOnWeekends",
|
|
125
|
+
fallback: "false",
|
|
126
|
+
group: "slack",
|
|
127
|
+
envKey: "SLACK_NOTIFY_ON_WEEKENDS",
|
|
128
|
+
label: "주말에도 알림",
|
|
129
|
+
kind: "boolean",
|
|
130
|
+
applies: "immediate",
|
|
131
|
+
help: "켜면 주말에도 위의 조용 시간 규칙만 적용됩니다"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
key: "slack.channelId",
|
|
135
|
+
fallback: "",
|
|
136
|
+
group: "slackConnection",
|
|
137
|
+
envKey: "SLACK_CHANNEL_ID",
|
|
138
|
+
label: "Slack 채널 ID",
|
|
139
|
+
kind: "string",
|
|
140
|
+
applies: "immediate",
|
|
141
|
+
help: "사용자 ID(U...)를 넣으면 그 사람 DM 으로 갑니다"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
key: "slack.userMap",
|
|
145
|
+
fallback: "",
|
|
146
|
+
group: "slackConnection",
|
|
147
|
+
envKey: "SLACK_USER_MAP",
|
|
148
|
+
label: "Slack 사용자 매핑",
|
|
149
|
+
kind: "string",
|
|
150
|
+
applies: "immediate",
|
|
151
|
+
help: "토큰명:SlackUserId 를 쉼표로. 공용 계정은 넣지 않습니다"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
key: "slack.botToken",
|
|
155
|
+
fallback: "",
|
|
156
|
+
group: "slackConnection",
|
|
157
|
+
envKey: "SLACK_BOT_TOKEN",
|
|
158
|
+
label: "Slack 봇 토큰",
|
|
159
|
+
kind: "secret",
|
|
160
|
+
applies: "immediate"
|
|
161
|
+
}
|
|
162
|
+
];
|
|
163
|
+
function findSettingDef(key) {
|
|
164
|
+
return SETTING_DEFS.find((d) => d.key === key);
|
|
165
|
+
}
|
|
166
|
+
/** 저장 전 검증. 잘못된 값이 들어가면 런타임에서 조용히 기본값으로 떨어져 원인을 찾기 어렵다. */
|
|
167
|
+
function validateSettingValue(def, raw) {
|
|
168
|
+
const trimmed = raw.trim();
|
|
169
|
+
if (def.kind === "boolean") {
|
|
170
|
+
if (!["true", "false"].includes(trimmed)) return {
|
|
171
|
+
ok: false,
|
|
172
|
+
error: "true 또는 false"
|
|
173
|
+
};
|
|
174
|
+
return {
|
|
175
|
+
ok: true,
|
|
176
|
+
value: trimmed
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (def.kind === "preset") {
|
|
180
|
+
const parsed = Number(trimmed);
|
|
181
|
+
if (!def.presets?.includes(parsed)) return {
|
|
182
|
+
ok: false,
|
|
183
|
+
error: `${def.presets?.join(", ") ?? ""} 중 하나여야 합니다`
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
ok: true,
|
|
187
|
+
value: String(parsed)
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
if (def.kind === "integer" || def.kind === "number") {
|
|
191
|
+
const parsed = Number(trimmed);
|
|
192
|
+
if (!Number.isFinite(parsed)) return {
|
|
193
|
+
ok: false,
|
|
194
|
+
error: "숫자를 입력하세요"
|
|
195
|
+
};
|
|
196
|
+
if (def.kind === "integer" && !Number.isInteger(parsed)) return {
|
|
197
|
+
ok: false,
|
|
198
|
+
error: "정수를 입력하세요"
|
|
199
|
+
};
|
|
200
|
+
if (def.min !== void 0 && parsed < def.min) return {
|
|
201
|
+
ok: false,
|
|
202
|
+
error: `${def.min} 이상이어야 합니다`
|
|
203
|
+
};
|
|
204
|
+
if (def.max !== void 0 && parsed > def.max) return {
|
|
205
|
+
ok: false,
|
|
206
|
+
error: `${def.max} 이하여야 합니다`
|
|
207
|
+
};
|
|
208
|
+
return {
|
|
209
|
+
ok: true,
|
|
210
|
+
value: String(parsed)
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
ok: true,
|
|
215
|
+
value: trimmed
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/** 화면에 그대로 내려보내면 안 되는 값. 앞뒤만 남긴다. */
|
|
219
|
+
function maskSecret(value) {
|
|
220
|
+
if (value.length <= 12) return "***";
|
|
221
|
+
return `${value.slice(0, 8)}...${value.slice(-4)}`;
|
|
222
|
+
}
|
|
223
|
+
//#endregion
|
|
224
|
+
export { MAX_OPENAI_ESTIMATED_RSS_GIB, MAX_OPENAI_MIN_HOST_AVAILABLE_GIB, SETTING_DEFS, findSettingDef, maskSecret, validateSettingValue };
|
|
225
|
+
|
|
226
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5jb25zdGFudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2V0dGluZy9zZXR0aW5nLmNvbnN0YW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6rSA66asIOqwgOuKpe2VnCDrn7Dtg4DsnoQg7ISk7KCVIOuqqeuhnS5cbiAqXG4gKiDtgqTCt2VudiDsnbTrpoTCt+2DgOyehcK36rKA7Kad7J2EIO2VnCDqs7Psl5Ag66qo7JWEIEFQSSDsmYAgVUkg6rCAIOqwmeydgCDsoJXsnZjrpbwg67O464ukLiDsl6zquLAg7JeG64qUIGVudiDripRcbiAqIO2ZlOuptOyXkOyEnCDrsJTqv4Ag7IiYIOyXhuuLpCDigJQgREIg7KCR7IaNIOygleuztOuCmCDtj6ztirjsspjrn7wg7ISc67KE6rCAIOucqOq4sCDsoITsl5Ag7ZWE7JqU7ZWcIOqwkuuTpOydtOuLpC5cbiAqXG4gKiBgc2V0dGluZ3NgIO2FjOydtOu4lOydgCBgKGtleSwgdmFsdWUpYCDrrLjsnpDsl7Qg7IyN66eMIOuLtOuKlCDqt7jrpofsnbTrnbwoYHNldHRpbmcuZW50aXR5Lmpzb25gKSxcbiAqIFwi7J20IO2CpOqwgCDsoJXsiJjsnbjsp4DCt+uylOychOqwgCDslrzrp4jsnbjsp4DCt+2ZlOuptOyXkCDrrZDrnbzqs6Ag7JO47KeAXCLrpbwg64u07J2EIOqzs+ydtCDrlLDroZwg7ZWE7JqU7ZWY64ukLlxuICog6re4IOuplO2DgOuNsOydtO2EsOqwgCDsl6zquLAg7J6I64ukIOKAlCBEQiDsiqTtgqTrp4jqsIAg7JWE64uI6528IOyVseydtCDslYTripQg7IOB7IiYIOuqqeuhneydtOuLpC5cbiAqL1xuXG5leHBvcnQgdHlwZSBTZXR0aW5nS2luZCA9IFwiYm9vbGVhblwiIHwgXCJpbnRlZ2VyXCIgfCBcIm51bWJlclwiIHwgXCJzdHJpbmdcIiB8IFwic2VjcmV0XCIgfCBcInByZXNldFwiO1xuXG4vKipcbiAqIO2ZlOuptOyXkOyEnCDrrLbslrQg67O07Jes7KSEIOuLqOychC4g7Y+J7Y+J7ZWY6rKMIOuCmOyXtO2VmOuptCDslrTrlJTrpbwg67SQ7JW8IO2VoOyngCDslYwg7IiYIOyXhuuLpC5cbiAqXG4gKiBTbGFjayDsnYAgXCLslrjsoJwg67O064K86rmMXCIoc2xhY2sp7JmAIFwi7Ja065SU66GcIOuztOuCvOq5jFwiKHNsYWNrQ29ubmVjdGlvbinrpbwg64KY64iI64ukIOKAlCDslZ7snYAg7Jq07JiBXG4gKiDspJEg7J6Q7KO8IOunjOyngOqzoCDrkqTripQg7ZWcIOuyiCDrp57stpTrqbQg64Gd7J206528IOyImOuqheydtCDri6TrpbTri6QuXG4gKi9cbmV4cG9ydCB0eXBlIFNldHRpbmdHcm91cCA9IFwib3BlbmFpXCIgfCBcInNsYWNrXCIgfCBcInNsYWNrQ29ubmVjdGlvblwiO1xuXG5leHBvcnQgdHlwZSBTZXR0aW5nRGVmID0ge1xuICBrZXk6IHN0cmluZztcbiAgZ3JvdXA6IFNldHRpbmdHcm91cDtcbiAgZW52S2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGtpbmQ6IFNldHRpbmdLaW5kO1xuICAvKiog7KCB7JqpIOyLnOygkC4g7JuM7LukIOyEpOygleydgCBkaXNwYXRjaGVyIOyDneyEseyekOyXkOyEnCDtlZwg67KI66eMIOydve2YgCDsnqzsi5zsnpHsnbQg7ZWE7JqU7ZWY64ukLiAqL1xuICBhcHBsaWVzOiBcImltbWVkaWF0ZVwiIHwgXCJyZXN0YXJ0XCI7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICAvKiogYHByZXNldGAg7KKF66WY7JeQ7IScIOqzoOulvCDsiJgg7J6I64qUIOqwki4g7J20IOuqqeuhnSDrsJbsnZgg6rCS7J2AIOyggOyepeuQmOyngCDslYrripTri6QuICovXG4gIHByZXNldHM/OiBudW1iZXJbXTtcbiAgLyoqXG4gICAqIOyggOyepeqwkuuPhCBlbnYg64+EIOyXhuydhCDrlYwg7Iuk7KCc66GcIOyggeyaqeuQmOuKlCDqsJIuIO2ZlOuptOydhCDruYTsm4zrkZDrqbQgXCLshKTsoJUg7JWIIOuQqFwi7Jy866GcIOydve2eiOyngOunjFxuICAgKiDsi6TsoJzroZzripQg7J20IOqwkuydtCDrj4zqs6Ag7J6I64ukIOKAlCDshozruYTsspjsnZgg6riw67O46rCS6rO8IOuwmOuTnOyLnCDqsJnslYTslbwg7ZWc64ukLlxuICAgKi9cbiAgZmFsbGJhY2s6IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbn07XG5cbi8qKiA2NCBHaUIg7Jq07JiBIO2YuOyKpO2KuOyXkOyEnCDshLgg7J6Q66asIOyYpOyeheugpeydhCDrp4nripQg7ISk7KCVIOyDge2VnC4g7JWI7KCE7J2EIOuztOyepe2VmOuKlCDqsJLsnYAg7JWE64uI64ukLiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9PUEVOQUlfRVNUSU1BVEVEX1JTU19HSUIgPSAzMjtcbmV4cG9ydCBjb25zdCBNQVhfT1BFTkFJX01JTl9IT1NUX0FWQUlMQUJMRV9HSUIgPSA2NDtcblxuZXhwb3J0IGNvbnN0IFNFVFRJTkdfREVGUzogU2V0dGluZ0RlZltdID0gW1xuICB7XG4gICAga2V5OiBcIm9wZW5haS5hdXRvc2NhbGVcIixcbiAgICBmYWxsYmFjazogXCJ0cnVlXCIsXG4gICAgZ3JvdXA6IFwib3BlbmFpXCIsXG4gICAgZW52S2V5OiBcIlFHUklEX09QRU5BSV9BVVRPU0NBTEVcIixcbiAgICBsYWJlbDogXCJPcGVuQUkg7JuM7LukIOyYpO2GoOyKpOy8gOydvFwiLFxuICAgIGtpbmQ6IFwiYm9vbGVhblwiLFxuICAgIGFwcGxpZXM6IFwicmVzdGFydFwiLFxuICAgIGhlbHA6IFwi64GE66m0IOybjOy7pCDsiJjqsIAg7LWc7IaM6rCS7Jy866GcIOqzoOygleuQqeuLiOuLpFwiLFxuICB9LFxuICB7XG4gICAga2V5OiBcIm9wZW5haS5taW5Xb3JrZXJzUGVyVG9rZW5cIixcbiAgICBmYWxsYmFjazogXCIxXCIsXG4gICAgZ3JvdXA6IFwib3BlbmFpXCIsXG4gICAgZW52S2V5OiBcIlFHUklEX09QRU5BSV9NSU5fV09SS0VSU19QRVJfVE9LRU5cIixcbiAgICBsYWJlbDogXCLthqDtgbDri7kg7LWc7IaMIOybjOy7pFwiLFxuICAgIGtpbmQ6IFwiaW50ZWdlclwiLFxuICAgIGFwcGxpZXM6IFwicmVzdGFydFwiLFxuICAgIG1pbjogMSxcbiAgICBtYXg6IDIwLFxuICB9LFxuICB7XG4gICAga2V5OiBcIm9wZW5haS5tYXhXb3JrZXJzUGVyVG9rZW5cIixcbiAgICBmYWxsYmFjazogXCIzXCIsXG4gICAgZ3JvdXA6IFwib3BlbmFpXCIsXG4gICAgZW52S2V5OiBcIlFHUklEX09QRU5BSV9NQVhfV09SS0VSU19QRVJfVE9LRU5cIixcbiAgICBsYWJlbDogXCLthqDtgbDri7kg7LWc64yAIOybjOy7pFwiLFxuICAgIGtpbmQ6IFwiaW50ZWdlclwiLFxuICAgIGFwcGxpZXM6IFwicmVzdGFydFwiLFxuICAgIG1pbjogMSxcbiAgICBtYXg6IDIwLFxuICAgIGhlbHA6IFwi7Jik7Yag7Iqk7LyA7J287J20IOq6vOyguCDsnojsnLzrqbQg66y07Iuc65Cp64uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwib3BlbmFpLm1heEVzdGltYXRlZFJzc0dpQlwiLFxuICAgIGZhbGxiYWNrOiBcIjE2XCIsXG4gICAgZ3JvdXA6IFwib3BlbmFpXCIsXG4gICAgZW52S2V5OiBcIlFHUklEX09QRU5BSV9NQVhfRVNUSU1BVEVEX1JTU19HSUJcIixcbiAgICBsYWJlbDogXCLsm4zsu6Qg66mU66qo66asIOyDge2VnCAoR2lCKVwiLFxuICAgIGtpbmQ6IFwibnVtYmVyXCIsXG4gICAgYXBwbGllczogXCJyZXN0YXJ0XCIsXG4gICAgbWluOiAxLFxuICAgIG1heDogTUFYX09QRU5BSV9FU1RJTUFURURfUlNTX0dJQixcbiAgICBoZWxwOiBcIuydtCDstpTsoJXsuZjrpbwg64SY6riw66m0IOybjOy7pOulvCDrjZQg64qY66as7KeAIOyViuyKteuLiOuLpC4g7Jis66a07IiY66GdIE9PTSDsnITtl5jsnbQg7Luk7KeA66mwIOyDge2VnOydgCDsmKTsnoXroKUg67Cp7KeA7Jqp7J6F64uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwib3BlbmFpLm1pbkhvc3RBdmFpbGFibGVHaUJcIixcbiAgICBmYWxsYmFjazogXCIyMFwiLFxuICAgIGdyb3VwOiBcIm9wZW5haVwiLFxuICAgIGVudktleTogXCJRR1JJRF9PUEVOQUlfTUlOX0hPU1RfQVZBSUxBQkxFX0dJQlwiLFxuICAgIGxhYmVsOiBcIu2YuOyKpO2KuCDsl6zsnKAg66mU66qo66asIO2VmO2VnCAoR2lCKVwiLFxuICAgIGtpbmQ6IFwibnVtYmVyXCIsXG4gICAgYXBwbGllczogXCJyZXN0YXJ0XCIsXG4gICAgbWluOiAwLFxuICAgIG1heDogTUFYX09QRU5BSV9NSU5fSE9TVF9BVkFJTEFCTEVfR0lCLFxuICAgIGhlbHA6IFwi7Zi47Iqk7Yq4IOyXrOycoOqwgCDsnbQg6rCSIOyVhOuemOuptCDsiqTsvIDsnbzsl4XsnYQg66mI7Lal64uI64ukLiDtmZXsnqXsnYQg64GE66Ck66m0IOyYpO2GoOyKpOy8gOydvOydhCDrgYTshLjsmpRcIixcbiAgfSxcbiAge1xuICAgIGtleTogXCJzbGFjay5lbmFibGVkXCIsXG4gICAgZmFsbGJhY2s6IFwidHJ1ZVwiLFxuICAgIGdyb3VwOiBcInNsYWNrXCIsXG4gICAgZW52S2V5OiBcIlNMQUNLX0VOQUJMRURcIixcbiAgICBsYWJlbDogXCJTbGFjayDslYzrprxcIixcbiAgICBraW5kOiBcImJvb2xlYW5cIixcbiAgICBhcHBsaWVzOiBcImltbWVkaWF0ZVwiLFxuICAgIGhlbHA6IFwi7Jew7Zy07LKY65+8IOq3nOy5meycvOuhnCDsnqHsnYQg7IiYIOyXhuuKlCDquLDqsITsl5Ag64GV64uI64ukLiDshJzruYTsiqQg7KCV7KeA6riJIOyepeyVoCDslYzrprzsnYAg6rq864+EIOyghOuLrOuQqeuLiOuLpFwiLFxuICB9LFxuICB7XG4gICAga2V5OiBcInNsYWNrLnJlbWluZGVyc0VuYWJsZWRcIixcbiAgICBmYWxsYmFjazogXCJ0cnVlXCIsXG4gICAgZ3JvdXA6IFwic2xhY2tcIixcbiAgICBlbnZLZXk6IFwiU0xBQ0tfUkVNSU5ERVJTX0VOQUJMRURcIixcbiAgICBsYWJlbDogXCLrp4zro4wg7JWM66a8IOuwmOuztVwiLFxuICAgIGtpbmQ6IFwiYm9vbGVhblwiLFxuICAgIGFwcGxpZXM6IFwiaW1tZWRpYXRlXCIsXG4gICAgaGVscDogXCLrgYTrqbQg67CY67O166eMIOupiOy2lOqzoCDrp4zro4wg7Iic6rCE7J2YIOyVjOumvOydgCDqt7jrjIDroZwg6rCR64uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwic2xhY2suZXhwaXJ5UmVtaW5kZXJNaW51dGVzXCIsXG4gICAgZmFsbGJhY2s6IFwiNjBcIixcbiAgICBncm91cDogXCJzbGFja1wiLFxuICAgIGVudktleTogXCJTTEFDS19FWFBJUllfUkVNSU5ERVJfSU5URVJWQUxfTUlOVVRFU1wiLFxuICAgIGxhYmVsOiBcIuuwmOuztSDso7zquLBcIixcbiAgICBraW5kOiBcInByZXNldFwiLFxuICAgIGFwcGxpZXM6IFwiaW1tZWRpYXRlXCIsXG4gICAgLy8g7J6Q7JygIOyeheugpSDrjIDsi6Ag6rOg7KCVIOyEoO2DneyngOulvCDsk7Tri6Qg4oCUIFwi7Ja866eI64KYIOyekOyjvCDsnqzstIntlaDquYxcIuudvOyEnCAx67aEIOuLqOychCDsoJXrsIDrj4TqsIBcbiAgICAvLyDsnZjrr7gg7JeG6rOgLCDsnpjrqrsg64Sj7Jy866m0IOyxhOuEkOydtCDsi5zrgYTrn6zsm4zsp4Tri6QuIOuBhOuKlCDqsoPsnYAgcmVtaW5kZXJzRW5hYmxlZCDqsIAg66eh64qU64ukLlxuICAgIHByZXNldHM6IFsxMCwgMzAsIDYwLCAxODBdLFxuICAgIGhlbHA6IFwi7J6s66Gc6re47J247J20IO2VhOyalO2VnCDthqDtgbDsnbQg64Ko7JWEIOyeiOuKlCDrj5nslYgg7J20IOyjvOq4sOuhnCDri6Tsi5wg7JWM66a964uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwic2xhY2sucXVpZXRGcm9tSG91clwiLFxuICAgIGZhbGxiYWNrOiBcIjIwXCIsXG4gICAgZ3JvdXA6IFwic2xhY2tcIixcbiAgICBlbnZLZXk6IFwiU0xBQ0tfUVVJRVRfRlJPTV9IT1VSXCIsXG4gICAgbGFiZWw6IFwi7KGw7JqpIOyLnOqwhCDsi5zsnpFcIixcbiAgICBraW5kOiBcImludGVnZXJcIixcbiAgICBhcHBsaWVzOiBcImltbWVkaWF0ZVwiLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDIzLFxuICAgIGhlbHA6IFwi7J20IOyLnOqwgeu2gO2EsCDslYzrpqzsp4Ag7JWK7Iq164uI64ukICjtlZzqta0g7Iuc6rCEKVwiLFxuICB9LFxuICB7XG4gICAga2V5OiBcInNsYWNrLnF1aWV0VW50aWxIb3VyXCIsXG4gICAgZmFsbGJhY2s6IFwiOFwiLFxuICAgIGdyb3VwOiBcInNsYWNrXCIsXG4gICAgZW52S2V5OiBcIlNMQUNLX1FVSUVUX1VOVElMX0hPVVJcIixcbiAgICBsYWJlbDogXCLsobDsmqkg7Iuc6rCEIOyiheujjFwiLFxuICAgIGtpbmQ6IFwiaW50ZWdlclwiLFxuICAgIGFwcGxpZXM6IFwiaW1tZWRpYXRlXCIsXG4gICAgbWluOiAwLFxuICAgIG1heDogMjMsXG4gICAgaGVscDogXCLsnbQg7Iuc6rCB67aA7YSwIOuLpOyLnCDslYzrpr3ri4jri6QuIOyLnOyekeuztOuLpCDruaDrpbTrqbQg7J6Q7KCV7J2EIOuEmOuKlCDqtazqsITsnbQg65Cp64uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwic2xhY2subm90aWZ5T25XZWVrZW5kc1wiLFxuICAgIGZhbGxiYWNrOiBcImZhbHNlXCIsXG4gICAgZ3JvdXA6IFwic2xhY2tcIixcbiAgICBlbnZLZXk6IFwiU0xBQ0tfTk9USUZZX09OX1dFRUtFTkRTXCIsXG4gICAgbGFiZWw6IFwi7KO866eQ7JeQ64+EIOyVjOumvFwiLFxuICAgIGtpbmQ6IFwiYm9vbGVhblwiLFxuICAgIGFwcGxpZXM6IFwiaW1tZWRpYXRlXCIsXG4gICAgaGVscDogXCLsvJzrqbQg7KO866eQ7JeQ64+EIOychOydmCDsobDsmqkg7Iuc6rCEIOq3nOy5meunjCDsoIHsmqnrkKnri4jri6RcIixcbiAgfSxcbiAge1xuICAgIGtleTogXCJzbGFjay5jaGFubmVsSWRcIixcbiAgICBmYWxsYmFjazogXCJcIixcbiAgICBncm91cDogXCJzbGFja0Nvbm5lY3Rpb25cIixcbiAgICBlbnZLZXk6IFwiU0xBQ0tfQ0hBTk5FTF9JRFwiLFxuICAgIGxhYmVsOiBcIlNsYWNrIOyxhOuEkCBJRFwiLFxuICAgIGtpbmQ6IFwic3RyaW5nXCIsXG4gICAgYXBwbGllczogXCJpbW1lZGlhdGVcIixcbiAgICBoZWxwOiBcIuyCrOyaqeyekCBJRChVLi4uKeulvCDrhKPsnLzrqbQg6re4IOyCrOuejCBETSDsnLzroZwg6rCR64uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwic2xhY2sudXNlck1hcFwiLFxuICAgIGZhbGxiYWNrOiBcIlwiLFxuICAgIGdyb3VwOiBcInNsYWNrQ29ubmVjdGlvblwiLFxuICAgIGVudktleTogXCJTTEFDS19VU0VSX01BUFwiLFxuICAgIGxhYmVsOiBcIlNsYWNrIOyCrOyaqeyekCDrp6TtlZFcIixcbiAgICBraW5kOiBcInN0cmluZ1wiLFxuICAgIGFwcGxpZXM6IFwiaW1tZWRpYXRlXCIsXG4gICAgaGVscDogXCLthqDtgbDrqoU6U2xhY2tVc2VySWQg66W8IOyJvO2RnOuhnC4g6rO17JqpIOqzhOygleydgCDrhKPsp4Ag7JWK7Iq164uI64ukXCIsXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwic2xhY2suYm90VG9rZW5cIixcbiAgICBmYWxsYmFjazogXCJcIixcbiAgICBncm91cDogXCJzbGFja0Nvbm5lY3Rpb25cIixcbiAgICBlbnZLZXk6IFwiU0xBQ0tfQk9UX1RPS0VOXCIsXG4gICAgbGFiZWw6IFwiU2xhY2sg67SHIO2GoO2BsFwiLFxuICAgIGtpbmQ6IFwic2VjcmV0XCIsXG4gICAgYXBwbGllczogXCJpbW1lZGlhdGVcIixcbiAgfSxcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kU2V0dGluZ0RlZihrZXk6IHN0cmluZyk6IFNldHRpbmdEZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gU0VUVElOR19ERUZTLmZpbmQoKGQpID0+IGQua2V5ID09PSBrZXkpO1xufVxuXG4vKiog7KCA7J6lIOyghCDqsoDspp0uIOyemOuqu+uQnCDqsJLsnbQg65Ok7Ja06rCA66m0IOufsO2DgOyehOyXkOyEnCDsobDsmqntnogg6riw67O46rCS7Jy866GcIOuWqOyWtOyguCDsm5DsnbjsnYQg7LC+6riwIOyWtOugteuLpC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNldHRpbmdWYWx1ZShcbiAgZGVmOiBTZXR0aW5nRGVmLFxuICByYXc6IHN0cmluZyxcbik6IHsgb2s6IHRydWU7IHZhbHVlOiBzdHJpbmcgfSB8IHsgb2s6IGZhbHNlOyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcblxuICBpZiAoZGVmLmtpbmQgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgaWYgKCFbXCJ0cnVlXCIsIFwiZmFsc2VcIl0uaW5jbHVkZXModHJpbW1lZCkpIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IFwidHJ1ZSDrmJDripQgZmFsc2VcIiB9O1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogdHJpbW1lZCB9O1xuICB9XG5cbiAgaWYgKGRlZi5raW5kID09PSBcInByZXNldFwiKSB7XG4gICAgLy8g7ZmU66m07J2AIOuyhO2KvOunjCDso7zsp4Drp4wgQVBJIOuKlCDslYTrrLQg6rCS7J2064KYIOuwm+ydhCDsiJgg7J6I64ukLiDrqqnroZ0g67CW7J2YIOqwkuydtCDrk6TslrTsmKTrqbRcbiAgICAvLyDtmZTrqbTsl5DshJwg7JWE66y0IOuyhO2KvOuPhCDshKDtg53rj7wg67O07J207KeAIOyViuyVhCBcIuyZnCDslYgg67CU64CM7KeAXCLqsIAg65Cc64ukLlxuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcih0cmltbWVkKTtcbiAgICBpZiAoIWRlZi5wcmVzZXRzPy5pbmNsdWRlcyhwYXJzZWQpKSB7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBgJHtkZWYucHJlc2V0cz8uam9pbihcIiwgXCIpID8/IFwiXCJ9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukYCB9O1xuICAgIH1cbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IFN0cmluZyhwYXJzZWQpIH07XG4gIH1cblxuICBpZiAoZGVmLmtpbmQgPT09IFwiaW50ZWdlclwiIHx8IGRlZi5raW5kID09PSBcIm51bWJlclwiKSB7XG4gICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHRyaW1tZWQpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkpIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IFwi7Iir7J6Q66W8IOyeheugpe2VmOyEuOyalFwiIH07XG4gICAgaWYgKGRlZi5raW5kID09PSBcImludGVnZXJcIiAmJiAhTnVtYmVyLmlzSW50ZWdlcihwYXJzZWQpKSB7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBcIuygleyImOulvCDsnoXroKXtlZjshLjsmpRcIiB9O1xuICAgIH1cbiAgICBpZiAoZGVmLm1pbiAhPT0gdW5kZWZpbmVkICYmIHBhcnNlZCA8IGRlZi5taW4pIHtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IGAke2RlZi5taW59IOydtOyDgeydtOyWtOyVvCDtlanri4jri6RgIH07XG4gICAgfVxuICAgIGlmIChkZWYubWF4ICE9PSB1bmRlZmluZWQgJiYgcGFyc2VkID4gZGVmLm1heCkge1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogYCR7ZGVmLm1heH0g7J207ZWY7Jes7JW8IO2VqeuLiOuLpGAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBTdHJpbmcocGFyc2VkKSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB0cmltbWVkIH07XG59XG5cbi8qKiDtmZTrqbTsl5Ag6re464yA66GcIOuCtOugpOuztOuCtOuptCDslYgg65CY64qUIOqwki4g7JWe65Kk66eMIOuCqOq4tOuLpC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXNrU2VjcmV0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodmFsdWUubGVuZ3RoIDw9IDEyKSByZXR1cm4gXCIqKipcIjtcbiAgcmV0dXJuIGAke3ZhbHVlLnNsaWNlKDAsIDgpfS4uLiR7dmFsdWUuc2xpY2UoLTQpfWA7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBMENBLE1BQWEsK0JBQStCO0FBQzVDLE1BQWEsb0NBQW9DO0FBRWpELE1BQWEsZUFBNkI7Q0FDeEM7RUFDRSxLQUFLO0VBQ0wsVUFBVTtFQUNWLE9BQU87RUFDUCxRQUFRO0VBQ1IsT0FBTztFQUNQLE1BQU07RUFDTixTQUFTO0VBQ1QsTUFBTTtDQUNSO0NBQ0E7RUFDRSxLQUFLO0VBQ0wsVUFBVTtFQUNWLE9BQU87RUFDUCxRQUFRO0VBQ1IsT0FBTztFQUNQLE1BQU07RUFDTixTQUFTO0VBQ1QsS0FBSztFQUNMLEtBQUs7Q0FDUDtDQUNBO0VBQ0UsS0FBSztFQUNMLFVBQVU7RUFDVixPQUFPO0VBQ1AsUUFBUTtFQUNSLE9BQU87RUFDUCxNQUFNO0VBQ04sU0FBUztFQUNULEtBQUs7RUFDTCxLQUFLO0VBQ0wsTUFBTTtDQUNSO0NBQ0E7RUFDRSxLQUFLO0VBQ0wsVUFBVTtFQUNWLE9BQU87RUFDUCxRQUFRO0VBQ1IsT0FBTztFQUNQLE1BQU07RUFDTixTQUFTO0VBQ1QsS0FBSztFQUNMLEtBQUE7RUFDQSxNQUFNO0NBQ1I7Q0FDQTtFQUNFLEtBQUs7RUFDTCxVQUFVO0VBQ1YsT0FBTztFQUNQLFFBQVE7RUFDUixPQUFPO0VBQ1AsTUFBTTtFQUNOLFNBQVM7RUFDVCxLQUFLO0VBQ0wsS0FBQTtFQUNBLE1BQU07Q0FDUjtDQUNBO0VBQ0UsS0FBSztFQUNMLFVBQVU7RUFDVixPQUFP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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SETTING_DEFS, findSettingDef, maskSecret, validateSettingValue } from "./setting.
|
|
1
|
+
import { SETTING_DEFS, findSettingDef, maskSecret, validateSettingValue } from "./setting.constant.js";
|
|
2
2
|
import { SD } from "../../i18n/sd.generated.js";
|
|
3
3
|
import { settingLoaderQueries, settingSubsetQueries } from "../sonamu.generated.sso.js";
|
|
4
4
|
import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorateMetadata.js";
|
|
@@ -121,6 +121,7 @@ var SettingModelClass = class extends BaseModelClass {
|
|
|
121
121
|
source,
|
|
122
122
|
min: def.min ?? null,
|
|
123
123
|
max: def.max ?? null,
|
|
124
|
+
presets: def.presets ?? [],
|
|
124
125
|
help: def.help ?? null
|
|
125
126
|
};
|
|
126
127
|
}),
|
|
@@ -180,6 +181,14 @@ var SettingModelClass = class extends BaseModelClass {
|
|
|
180
181
|
await resetSetting(key);
|
|
181
182
|
return { applies: def.applies };
|
|
182
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* 만료 알림을 지금 한 번 보낸다. 주기를 기다리지 않고 설정이 제대로 붙었는지 확인하거나,
|
|
186
|
+
* 재로그인을 재촉할 때 쓴다. 보낸 건수를 돌려줘 "보낼 대상 없음"과 구분한다.
|
|
187
|
+
*/
|
|
188
|
+
async triggerExpiryReminder() {
|
|
189
|
+
const { sendExpiredTokenReminderNow } = await import("../qgrid/expired-token-reminder.js");
|
|
190
|
+
return { sent: await sendExpiredTokenReminderNow() };
|
|
191
|
+
}
|
|
183
192
|
};
|
|
184
193
|
__decorate([
|
|
185
194
|
api({
|
|
@@ -229,8 +238,17 @@ __decorate([
|
|
|
229
238
|
__decorateMetadata("design:paramtypes", [String]),
|
|
230
239
|
__decorateMetadata("design:returntype", Promise)
|
|
231
240
|
], SettingModelClass.prototype, "resetSetting", null);
|
|
241
|
+
__decorate([
|
|
242
|
+
api({
|
|
243
|
+
httpMethod: "POST",
|
|
244
|
+
clients: ["axios", "tanstack-mutation"]
|
|
245
|
+
}),
|
|
246
|
+
__decorateMetadata("design:type", Function),
|
|
247
|
+
__decorateMetadata("design:paramtypes", []),
|
|
248
|
+
__decorateMetadata("design:returntype", Promise)
|
|
249
|
+
], SettingModelClass.prototype, "triggerExpiryReminder", null);
|
|
232
250
|
const SettingModel = new SettingModelClass();
|
|
233
251
|
//#endregion
|
|
234
252
|
export { SettingModel };
|
|
235
253
|
|
|
236
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5tb2RlbC5qcyIsIm5hbWVzIjpbInNhdmVTdG9yZWRTZXR0aW5nIiwicmVzZXRTdG9yZWRTZXR0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NldHRpbmcvc2V0dGluZy5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlTW9kZWxDbGFzcyxcbiAgdHlwZSBMaXN0UmVzdWx0LFxuICBhc0FycmF5LFxuICBOb3RGb3VuZEV4Y2VwdGlvbixcbiAgQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgYXBpLFxuICBleGhhdXN0aXZlLFxufSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uLy4uL2kxOG4vc2QuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyB0eXBlIFNldHRpbmdTdWJzZXRLZXksIHR5cGUgU2V0dGluZ1N1YnNldE1hcHBpbmcgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgc2V0dGluZ1N1YnNldFF1ZXJpZXMsIHNldHRpbmdMb2FkZXJRdWVyaWVzIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvXCI7XG5pbXBvcnQgeyBmaW5kU2V0dGluZ0RlZiwgbWFza1NlY3JldCwgU0VUVElOR19ERUZTLCB2YWxpZGF0ZVNldHRpbmdWYWx1ZSB9IGZyb20gXCIuL3NldHRpbmcuc2NoZW1hXCI7XG5pbXBvcnQge1xuICBnZXRTZXR0aW5nLFxuICBpc1N0b3JlZCxcbiAgcmVzZXRTZXR0aW5nIGFzIHJlc2V0U3RvcmVkU2V0dGluZyxcbiAgc2F2ZVNldHRpbmcgYXMgc2F2ZVN0b3JlZFNldHRpbmcsXG59IGZyb20gXCIuL3NldHRpbmcuc3RvcmVcIjtcbmltcG9ydCB7XG4gIHR5cGUgUnVudGltZUluZm9JdGVtLFxuICB0eXBlIFNldHRpbmdBcHBsaWVzLFxuICB0eXBlIFNldHRpbmdJdGVtLFxuICB0eXBlIFNldHRpbmdMaXN0UGFyYW1zLFxuICB0eXBlIFNldHRpbmdTYXZlUGFyYW1zLFxuICB0eXBlIFNldHRpbmdzUmVzcG9uc2UsXG59IGZyb20gXCIuL3NldHRpbmcudHlwZXNcIjtcblxuLypcbiAgU2V0dGluZyBNb2RlbFxuKi9cbmNsYXNzIFNldHRpbmdNb2RlbENsYXNzIGV4dGVuZHMgQmFzZU1vZGVsQ2xhc3M8XG4gIFNldHRpbmdTdWJzZXRLZXksXG4gIFNldHRpbmdTdWJzZXRNYXBwaW5nLFxuICB0eXBlb2Ygc2V0dGluZ1N1YnNldFF1ZXJpZXMsXG4gIHR5cGVvZiBzZXR0aW5nTG9hZGVyUXVlcmllc1xuPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiU2V0dGluZ1wiLCBzZXR0aW5nU3Vic2V0UXVlcmllcywgc2V0dGluZ0xvYWRlclF1ZXJpZXMpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJTZXR0aW5nXCIgfSlcbiAgYXN5bmMgZmluZEJ5SWQ8VCBleHRlbmRzIFNldHRpbmdTdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBpZDogbnVtYmVyLFxuICApOiBQcm9taXNlPFNldHRpbmdTdWJzZXRNYXBwaW5nW1RdPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgaWQsXG4gICAgICBudW06IDEsXG4gICAgICBwYWdlOiAxLFxuICAgIH0pO1xuICAgIGlmICghcm93c1swXSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uKFNEKFwiZXJyb3IuZW50aXR5Tm90Rm91bmRcIikoXCJTZXR0aW5nXCIsIGlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NbMF07XG4gIH1cblxuICBhc3luYyBmaW5kT25lPFQgZXh0ZW5kcyBTZXR0aW5nU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgbGlzdFBhcmFtczogU2V0dGluZ0xpc3RQYXJhbXMsXG4gICk6IFByb21pc2U8U2V0dGluZ1N1YnNldE1hcHBpbmdbVF0gfCBudWxsPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93c1swXSA/PyBudWxsO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJTZXR0aW5nc1wiIH0pXG4gIGFzeW5jIGZpbmRNYW55PFQgZXh0ZW5kcyBTZXR0aW5nU3Vic2V0S2V5LCBMUCBleHRlbmRzIFNldHRpbmdMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgU2V0dGluZ1N1YnNldE1hcHBpbmdbVF0+PiB7XG4gICAgLy8gcGFyYW1zIHdpdGggZGVmYXVsdHNcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBudW06IDI0LFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNlYXJjaDogXCJrZXlcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwia2V5LWFzY1wiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzIFNldHRpbmdMaXN0UGFyYW1zO1xuXG4gICAgLy8gYnVpbGQgcXVlcmllc1xuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIC8vIGlkXG4gICAgaWYgKHBhcmFtcy5pZCkge1xuICAgICAgcWIud2hlcmVJbihcInNldHRpbmdzLmlkXCIsIGFzQXJyYXkocGFyYW1zLmlkKSk7XG4gICAgfVxuXG4gICAgLy8ga2V5IOKAlCB0b0ZpbHRlciBwcm9wIOydtOyngOunjCDsiqTsupDtj7TrlKnsnbQg66eM65Ok7Ja07KO87KeAIOyViuyVhCDsp4HsoJEg6rG064ukLlxuICAgIGlmIChwYXJhbXMua2V5KSB7XG4gICAgICBxYi53aGVyZShcInNldHRpbmdzLmtleVwiLCBwYXJhbXMua2V5KTtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2gta2V5d29yZFxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5rZXl3b3JkICYmIHBhcmFtcy5rZXl3b3JkLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImtleVwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwic2V0dGluZ3Mua2V5XCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIC8vIGRlZmF1bHQgb3JkZXJCeVxuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImtleS1hc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwic2V0dGluZ3Mua2V5XCIsIFwiYXNjXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhoYXVzdGl2ZShwYXJhbXMub3JkZXJCeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5oYW5jZXJzID0gdGhpcy5jcmVhdGVFbmhhbmNlcnMoe1xuICAgICAgQTogKHJvdykgPT4gKHtcbiAgICAgICAgLi4ucm93LFxuICAgICAgICAvLyDshJzruIzshYvrs4TroZwgdmlydHVhbCDtlYTrk5wg6rOE7IKw66Gc7KeBIOy2lOqwgFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlU3Vic2V0UXVlcnkoe1xuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBwYXJhbXMsXG4gICAgICBlbmhhbmNlcnMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlKHNwYTogU2V0dGluZ1NhdmVQYXJhbXNbXSk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gcmVnaXN0ZXJcbiAgICBzcGEuZm9yRWFjaCgoc3ApID0+IHtcbiAgICAgIHdkYi51YlJlZ2lzdGVyKFwic2V0dGluZ3NcIiwgc3ApO1xuICAgIH0pO1xuXG4gICAgLy8gdHJhbnNhY3Rpb25cbiAgICByZXR1cm4gd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRyeC51YlVwc2VydChcInNldHRpbmdzXCIpO1xuXG4gICAgICByZXR1cm4gaWRzO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsKGlkczogbnVtYmVyW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyB0cmFuc2FjdGlvblxuICAgIGF3YWl0IHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICByZXR1cm4gdHJ4LnRhYmxlKFwic2V0dGluZ3NcIikud2hlcmVJbihcInNldHRpbmdzLmlkXCIsIGlkcykuZGVsZXRlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWRzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiDsoIDsnqXrkJwg7ISk7KCVIOyghOyytOulvCBrZXnihpJ2YWx1ZSDroZwuIOu2gO2MhSDsi5wg7ZWcIOuyiCDsnb3slrQg66mU66qo66as7JeQIOyYrOumsOuLpC4gKi9cbiAgYXN5bmMgZmluZEFsbEFzTWFwKCk6IFByb21pc2U8TWFwPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShcIkFcIiwgeyBudW06IDAsIHBhZ2U6IDEgfSk7XG4gICAgcmV0dXJuIG5ldyBNYXAocm93cy5tYXAoKHIpID0+IFtyLmtleSwgci52YWx1ZV0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBrZXkg66GcIHVwc2VydCDtlZzri6QuIGBzYXZlYCDripQgaWQg6riw7KSA7J206528IGtleSDspJHrs7XsnYQg6rG465+s64K07KeAIOuqu+2VtCwg6riw7KG0IO2WieydhCDrqLzsoIAg7LC+7JWEXG4gICAqIGlkIOulvCDsi6TslrQg67O064K464ukLlxuICAgKi9cbiAgYXN5bmMgc2V0QnlLZXkoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuZmluZE9uZShcIkFcIiwgeyBrZXksIG51bTogMSwgcGFnZTogMSB9KTtcbiAgICBhd2FpdCB0aGlzLnNhdmUoW1xuICAgICAge1xuICAgICAgICAuLi4oZXhpc3RpbmcgPyB7IGlkOiBleGlzdGluZy5pZCB9IDoge30pLFxuICAgICAgICBrZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKiDsoIDsnqXqsJLsnYQg7KeA7JuMIGVudiDquLDrs7jqsJLsnLzroZwg65CY64+M66aw64ukLiAqL1xuICBhc3luYyBjbGVhckJ5S2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLmZpbmRPbmUoXCJBXCIsIHsga2V5LCBudW06IDEsIHBhZ2U6IDEgfSk7XG4gICAgaWYgKGV4aXN0aW5nKSBhd2FpdCB0aGlzLmRlbChbZXhpc3RpbmcuaWRdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtjrjsp5Eg6rCA64ql7ZWcIOyEpOygleqzvCDsnb3quLAg7KCE7JqpIOufsO2DgOyehCDsoJXrs7QuIO2OuOynkSDrjIDsg4HsnYAgYFNFVFRJTkdfREVGU2Ag7JeQIOygleydmOuQnCDqsoPrv5DsnbTri6Qg4oCUXG4gICAqIERCIOygkeyGjSDsoJXrs7Trgpgg7Y+s7Yq464qUIOyEnOuyhOqwgCDrnKjquLAg7KCE7JeQIO2VhOyalO2VtCDtmZTrqbTsl5DshJwg67CU6r+AIOyImCDsl4bri6QuXG4gICAqL1xuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlNldHRpbmdMaXN0XCIgfSlcbiAgYXN5bmMgbGlzdFNldHRpbmdzKCk6IFByb21pc2U8U2V0dGluZ3NSZXNwb25zZT4ge1xuICAgIGNvbnN0IHNldHRpbmdzOiBTZXR0aW5nSXRlbVtdID0gU0VUVElOR19ERUZTLm1hcCgoZGVmKSA9PiB7XG4gICAgICAvLyDsoIDsnqXqsJLrj4QgZW52IOuPhCDsl4bsnLzrqbQg7L2U65OcIOq4sOuzuOqwkuydtCDsi6TsoJzroZwg7KCB7JqpIOykkeydtOuLpC4g67mI7Lm47Jy866GcIOuRkOuptCDtmZTrqbTqs7xcbiAgICAgIC8vIOufsO2DgOyehOydtCDslrTquIvrgpgg67O07J2464ukLlxuICAgICAgY29uc3Qgc3RvcmVkID0gaXNTdG9yZWQoZGVmLmtleSk7XG4gICAgICBjb25zdCByYXcgPSBnZXRTZXR0aW5nKGRlZi5rZXksIGRlZi5lbnZLZXkpO1xuICAgICAgY29uc3QgZWZmZWN0aXZlID0gcmF3ID8/IGRlZi5mYWxsYmFjaztcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHN0b3JlZCA/IFwiZGJcIiA6IHJhdyAhPT0gdW5kZWZpbmVkID8gXCJlbnZcIiA6IFwiZGVmYXVsdFwiO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGRlZi5rZXksXG4gICAgICAgIGdyb3VwOiBkZWYuZ3JvdXAsXG4gICAgICAgIGxhYmVsOiBkZWYubGFiZWwsXG4gICAgICAgIGtpbmQ6IGRlZi5raW5kLFxuICAgICAgICBhcHBsaWVzOiBkZWYuYXBwbGllcyxcbiAgICAgICAgLy8g64iIIO2GoOq4gOydhCDsnITtlbQgc2VjcmV0IOuPhCDsm5Drs7jsnYQg64K066Ck67O064K464ukLiDsnbQg7JeU65Oc7Y+s7J247Yq464qUIOuwsO2PrCDqsr3qs4Tsl5DshJwg7J247Kad7ZW07JW8XG4gICAgICAgIC8vIO2VmOupsCwgZGV2MCDripQgQ2FkZHkg7J247Kad7J2EIO2GteqzvO2VnCDsmrTsmIHsnpDrp4wg7KCR6re87ZWgIOyImCDsnojri6QuXG4gICAgICAgIHZhbHVlOiBlZmZlY3RpdmUsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgbWluOiBkZWYubWluID8/IG51bGwsXG4gICAgICAgIG1heDogZGVmLm1heCA/PyBudWxsLFxuICAgICAgICBoZWxwOiBkZWYuaGVscCA/PyBudWxsLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IHNldHRpbmdzLCBydW50aW1lOiB0aGlzLnJ1bnRpbWVJbmZvKCkgfTtcbiAgfVxuXG4gIHByaXZhdGUgcnVudGltZUluZm8oKTogUnVudGltZUluZm9JdGVtW10ge1xuICAgIGNvbnN0IGVudiA9IHByb2Nlc3MuZW52O1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZW52LlFHUklEX0RCX1BBU1NXT1JEID8/IGVudi5TT05BTVVfREJfUEFTU1dPUkQgPz8gXCJcIjtcbiAgICByZXR1cm4gW1xuICAgICAgeyBsYWJlbDogXCJOT0RFX0VOVlwiLCB2YWx1ZTogZW52Lk5PREVfRU5WID8/IFwiLVwiIH0sXG4gICAgICB7IGxhYmVsOiBcIkhPU1RcIiwgdmFsdWU6IGVudi5IT1NUID8/IFwibG9jYWxob3N0XCIgfSxcbiAgICAgIHsgbGFiZWw6IFwiUE9SVFwiLCB2YWx1ZTogZW52LlBPUlQgPz8gXCI0NDkwMFwiIH0sXG4gICAgICB7IGxhYmVsOiBcIkRCIEhvc3RcIiwgdmFsdWU6IGVudi5RR1JJRF9EQl9IT1NUID8/IGVudi5TT05BTVVfREJfSE9TVCA/PyBcIi1cIiB9LFxuICAgICAgeyBsYWJlbDogXCJEQiBQb3J0XCIsIHZhbHVlOiBlbnYuUUdSSURfREJfUE9SVCA/PyBlbnYuU09OQU1VX0RCX1BPUlQgPz8gXCItXCIgfSxcbiAgICAgIHsgbGFiZWw6IFwiREIgTmFtZVwiLCB2YWx1ZTogZW52LlFHUklEX0RCX05BTUUgPz8gZW52LlNPTkFNVV9EQl9OQU1FID8/IFwiLVwiIH0sXG4gICAgICB7IGxhYmVsOiBcIkRCIFVzZXJcIiwgdmFsdWU6IGVudi5RR1JJRF9EQl9VU0VSID8/IGVudi5TT05BTVVfREJfVVNFUiA/PyBcIi1cIiB9LFxuICAgICAgeyBsYWJlbDogXCJEQiBQYXNzd29yZFwiLCB2YWx1ZTogcGFzc3dvcmQgPyBtYXNrU2VjcmV0KHBhc3N3b3JkKSA6IFwiLVwiIH0sXG4gICAgXTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyB1cGRhdGVTZXR0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx7IGFwcGxpZXM6IFNldHRpbmdBcHBsaWVzIH0+IHtcbiAgICBjb25zdCBkZWYgPSBmaW5kU2V0dGluZ0RlZihrZXkpO1xuICAgIGlmICghZGVmKSB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihTRChcInNldHRpbmcudW5rbm93bktleVwiKShrZXkpKTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVNldHRpbmdWYWx1ZShkZWYsIHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24ub2spIHtcbiAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKFNEKFwic2V0dGluZy5pbnZhbGlkVmFsdWVcIikodmFsaWRhdGlvbi5lcnJvcikpO1xuICAgIH1cblxuICAgIGF3YWl0IHNhdmVTdG9yZWRTZXR0aW5nKGtleSwgdmFsaWRhdGlvbi52YWx1ZSk7XG4gICAgcmV0dXJuIHsgYXBwbGllczogZGVmLmFwcGxpZXMgfTtcbiAgfVxuXG4gIC8qKiDsoIDsnqXqsJLsnYQg7KeA7JuMIGVudiDquLDrs7jqsJLsnLzroZwg65CY64+M66aw64ukLiAqL1xuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcmVzZXRTZXR0aW5nKGtleTogc3RyaW5nKTogUHJvbWlzZTx7IGFwcGxpZXM6IFNldHRpbmdBcHBsaWVzIH0+IHtcbiAgICBjb25zdCBkZWYgPSBmaW5kU2V0dGluZ0RlZihrZXkpO1xuICAgIGlmICghZGVmKSB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihTRChcInNldHRpbmcudW5rbm93bktleVwiKShrZXkpKTtcblxuICAgIGF3YWl0IHJlc2V0U3RvcmVkU2V0dGluZyhrZXkpO1xuICAgIHJldHVybiB7IGFwcGxpZXM6IGRlZi5hcHBsaWVzIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFNldHRpbmdNb2RlbCA9IG5ldyBTZXR0aW5nTW9kZWxDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWdDQSxJQUFNLG9CQUFOLGNBQWdDLGVBSzlCO0NBQ0EsY0FBYztFQUNaLE1BQU0sV0FBVyxzQkFBc0Isb0JBQW9CO0NBQzdEO0NBRUEsTUFDTSxTQUNKLFFBQ0EsSUFDa0M7RUFDbEMsTUFBTSxFQUFFLFNBQVMsTUFBTSxLQUFLLFNBQVMsUUFBUTtHQUMzQztHQUNBLEtBQUs7R0FDTCxNQUFNO0VBQ1IsQ0FBQztFQUNELElBQUksQ0FBQyxLQUFLLElBQ1IsTUFBTSxJQUFJLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7RUFHdkUsT0FBTyxLQUFLO0NBQ2Q7Q0FFQSxNQUFNLFFBQ0osUUFDQSxZQUN5QztF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
|
|
254
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5tb2RlbC5qcyIsIm5hbWVzIjpbInNhdmVTdG9yZWRTZXR0aW5nIiwicmVzZXRTdG9yZWRTZXR0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NldHRpbmcvc2V0dGluZy5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlTW9kZWxDbGFzcyxcbiAgdHlwZSBMaXN0UmVzdWx0LFxuICBhc0FycmF5LFxuICBOb3RGb3VuZEV4Y2VwdGlvbixcbiAgQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgYXBpLFxuICBleGhhdXN0aXZlLFxufSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uLy4uL2kxOG4vc2QuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyB0eXBlIFNldHRpbmdTdWJzZXRLZXksIHR5cGUgU2V0dGluZ1N1YnNldE1hcHBpbmcgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgc2V0dGluZ1N1YnNldFF1ZXJpZXMsIHNldHRpbmdMb2FkZXJRdWVyaWVzIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvXCI7XG5pbXBvcnQgeyBmaW5kU2V0dGluZ0RlZiwgbWFza1NlY3JldCwgU0VUVElOR19ERUZTLCB2YWxpZGF0ZVNldHRpbmdWYWx1ZSB9IGZyb20gXCIuL3NldHRpbmcuY29uc3RhbnRcIjtcbmltcG9ydCB7XG4gIGdldFNldHRpbmcsXG4gIGlzU3RvcmVkLFxuICByZXNldFNldHRpbmcgYXMgcmVzZXRTdG9yZWRTZXR0aW5nLFxuICBzYXZlU2V0dGluZyBhcyBzYXZlU3RvcmVkU2V0dGluZyxcbn0gZnJvbSBcIi4vc2V0dGluZy5zdG9yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBSdW50aW1lSW5mb0l0ZW0sXG4gIHR5cGUgU2V0dGluZ0FwcGxpZXMsXG4gIHR5cGUgU2V0dGluZ0l0ZW0sXG4gIHR5cGUgU2V0dGluZ0xpc3RQYXJhbXMsXG4gIHR5cGUgU2V0dGluZ1NhdmVQYXJhbXMsXG4gIHR5cGUgU2V0dGluZ3NSZXNwb25zZSxcbn0gZnJvbSBcIi4vc2V0dGluZy50eXBlc1wiO1xuXG4vKlxuICBTZXR0aW5nIE1vZGVsXG4qL1xuY2xhc3MgU2V0dGluZ01vZGVsQ2xhc3MgZXh0ZW5kcyBCYXNlTW9kZWxDbGFzczxcbiAgU2V0dGluZ1N1YnNldEtleSxcbiAgU2V0dGluZ1N1YnNldE1hcHBpbmcsXG4gIHR5cGVvZiBzZXR0aW5nU3Vic2V0UXVlcmllcyxcbiAgdHlwZW9mIHNldHRpbmdMb2FkZXJRdWVyaWVzXG4+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJTZXR0aW5nXCIsIHNldHRpbmdTdWJzZXRRdWVyaWVzLCBzZXR0aW5nTG9hZGVyUXVlcmllcyk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlNldHRpbmdcIiB9KVxuICBhc3luYyBmaW5kQnlJZDxUIGV4dGVuZHMgU2V0dGluZ1N1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGlkOiBudW1iZXIsXG4gICk6IFByb21pc2U8U2V0dGluZ1N1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIlNldHRpbmdcIiwgaWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93c1swXTtcbiAgfVxuXG4gIGFzeW5jIGZpbmRPbmU8VCBleHRlbmRzIFNldHRpbmdTdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBsaXN0UGFyYW1zOiBTZXR0aW5nTGlzdFBhcmFtcyxcbiAgKTogUHJvbWlzZTxTZXR0aW5nU3Vic2V0TWFwcGluZ1tUXSB8IG51bGw+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICAuLi5saXN0UGFyYW1zLFxuICAgICAgbnVtOiAxLFxuICAgICAgcGFnZTogMSxcbiAgICB9KTtcblxuICAgIHJldHVybiByb3dzWzBdID8/IG51bGw7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlNldHRpbmdzXCIgfSlcbiAgYXN5bmMgZmluZE1hbnk8VCBleHRlbmRzIFNldHRpbmdTdWJzZXRLZXksIExQIGV4dGVuZHMgU2V0dGluZ0xpc3RQYXJhbXM+KFxuICAgIHN1YnNldDogVCxcbiAgICByYXdQYXJhbXM/OiBMUCxcbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PExQLCBTZXR0aW5nU3Vic2V0TWFwcGluZ1tUXT4+IHtcbiAgICAvLyBwYXJhbXMgd2l0aCBkZWZhdWx0c1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIG51bTogMjQsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc2VhcmNoOiBcImtleVwiIGFzIGNvbnN0LFxuICAgICAgb3JkZXJCeTogXCJrZXktYXNjXCIgYXMgY29uc3QsXG4gICAgICAuLi5yYXdQYXJhbXMsXG4gICAgfSBzYXRpc2ZpZXMgU2V0dGluZ0xpc3RQYXJhbXM7XG5cbiAgICAvLyBidWlsZCBxdWVyaWVzXG4gICAgY29uc3QgeyBxYiwgb25TdWJzZXQ6IF8gfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuXG4gICAgLy8gaWRcbiAgICBpZiAocGFyYW1zLmlkKSB7XG4gICAgICBxYi53aGVyZUluKFwic2V0dGluZ3MuaWRcIiwgYXNBcnJheShwYXJhbXMuaWQpKTtcbiAgICB9XG5cbiAgICAvLyBrZXkg4oCUIHRvRmlsdGVyIHByb3Ag7J207KeA66eMIOyKpOy6kO2PtOuUqeydtCDrp4zrk6TslrTso7zsp4Ag7JWK7JWEIOyngeygkSDqsbTri6QuXG4gICAgaWYgKHBhcmFtcy5rZXkpIHtcbiAgICAgIHFiLndoZXJlKFwic2V0dGluZ3Mua2V5XCIsIHBhcmFtcy5rZXkpO1xuICAgIH1cblxuICAgIC8vIHNlYXJjaC1rZXl3b3JkXG4gICAgaWYgKHBhcmFtcy5zZWFyY2ggJiYgcGFyYW1zLmtleXdvcmQgJiYgcGFyYW1zLmtleXdvcmQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwia2V5XCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJzZXR0aW5ncy5rZXlcIiwgXCJsaWtlXCIsIGAlJHtwYXJhbXMua2V5d29yZH0lYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihTRChcImVycm9yLnVua25vd25TZWFyY2hGaWVsZFwiKShwYXJhbXMuc2VhcmNoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3JkZXJCeVxuICAgIGlmIChwYXJhbXMub3JkZXJCeSkge1xuICAgICAgLy8gZGVmYXVsdCBvcmRlckJ5XG4gICAgICBpZiAocGFyYW1zLm9yZGVyQnkgPT09IFwia2V5LWFzY1wiKSB7XG4gICAgICAgIHFiLm9yZGVyQnkoXCJzZXR0aW5ncy5rZXlcIiwgXCJhc2NcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGhhdXN0aXZlKHBhcmFtcy5vcmRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7XG4gICAgICBBOiAocm93KSA9PiAoe1xuICAgICAgICAuLi5yb3csXG4gICAgICAgIC8vIOyEnOu4jOyFi+uzhOuhnCB2aXJ0dWFsIO2VhOuTnCDqs4TsgrDroZzsp4Eg7LaU6rCAXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtcyxcbiAgICAgIGVuaGFuY2VycyxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoc3BhOiBTZXR0aW5nU2F2ZVBhcmFtc1tdKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyByZWdpc3RlclxuICAgIHNwYS5mb3JFYWNoKChzcCkgPT4ge1xuICAgICAgd2RiLnViUmVnaXN0ZXIoXCJzZXR0aW5nc1wiLCBzcCk7XG4gICAgfSk7XG5cbiAgICAvLyB0cmFuc2FjdGlvblxuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgY29uc3QgaWRzID0gYXdhaXQgdHJ4LnViVXBzZXJ0KFwic2V0dGluZ3NcIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWwoaWRzOiBudW1iZXJbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCJzZXR0aW5nc1wiKS53aGVyZUluKFwic2V0dGluZ3MuaWRcIiwgaWRzKS5kZWxldGUoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpZHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIOyggOyepeuQnCDshKTsoJUg7KCE7LK066W8IGtleeKGknZhbHVlIOuhnC4g67aA7YyFIOyLnCDtlZwg67KIIOydveyWtCDrqZTrqqjrpqzsl5Ag7Jis66aw64ukLiAqL1xuICBhc3luYyBmaW5kQWxsQXNNYXAoKTogUHJvbWlzZTxNYXA8c3RyaW5nLCBzdHJpbmc+PiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KFwiQVwiLCB7IG51bTogMCwgcGFnZTogMSB9KTtcbiAgICByZXR1cm4gbmV3IE1hcChyb3dzLm1hcCgocikgPT4gW3Iua2V5LCByLnZhbHVlXSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleSDroZwgdXBzZXJ0IO2VnOuLpC4gYHNhdmVgIOuKlCBpZCDquLDspIDsnbTrnbwga2V5IOykkeuzteydhCDqsbjrn6zrgrTsp4Ag66q77ZW0LCDquLDsobQg7ZaJ7J2EIOuovOyggCDssL7slYRcbiAgICogaWQg66W8IOyLpOyWtCDrs7Trgrjri6QuXG4gICAqL1xuICBhc3luYyBzZXRCeUtleShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5maW5kT25lKFwiQVwiLCB7IGtleSwgbnVtOiAxLCBwYWdlOiAxIH0pO1xuICAgIGF3YWl0IHRoaXMuc2F2ZShbXG4gICAgICB7XG4gICAgICAgIC4uLihleGlzdGluZyA/IHsgaWQ6IGV4aXN0aW5nLmlkIH0gOiB7fSksXG4gICAgICAgIGtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgLyoqIOyggOyepeqwkuydhCDsp4Dsm4wgZW52IOq4sOuzuOqwkuycvOuhnCDrkJjrj4zrprDri6QuICovXG4gIGFzeW5jIGNsZWFyQnlLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuZmluZE9uZShcIkFcIiwgeyBrZXksIG51bTogMSwgcGFnZTogMSB9KTtcbiAgICBpZiAoZXhpc3RpbmcpIGF3YWl0IHRoaXMuZGVsKFtleGlzdGluZy5pZF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIO2OuOynkSDqsIDriqXtlZwg7ISk7KCV6rO8IOydveq4sCDsoITsmqkg65+w7YOA7J6EIOygleuztC4g7Y647KeRIOuMgOyDgeydgCBgU0VUVElOR19ERUZTYCDsl5Ag7KCV7J2Y65CcIOqyg+u/kOydtOuLpCDigJRcbiAgICogREIg7KCR7IaNIOygleuztOuCmCDtj6ztirjripQg7ISc67KE6rCAIOucqOq4sCDsoITsl5Ag7ZWE7JqU7ZW0IO2ZlOuptOyXkOyEnCDrsJTqv4Ag7IiYIOyXhuuLpC5cbiAgICovXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiU2V0dGluZ0xpc3RcIiB9KVxuICBhc3luYyBsaXN0U2V0dGluZ3MoKTogUHJvbWlzZTxTZXR0aW5nc1Jlc3BvbnNlPiB7XG4gICAgY29uc3Qgc2V0dGluZ3M6IFNldHRpbmdJdGVtW10gPSBTRVRUSU5HX0RFRlMubWFwKChkZWYpID0+IHtcbiAgICAgIC8vIOyggOyepeqwkuuPhCBlbnYg64+EIOyXhuycvOuptCDsvZTrk5wg6riw67O46rCS7J20IOyLpOygnOuhnCDsoIHsmqkg7KSR7J2064ukLiDruYjsubjsnLzroZwg65GQ66m0IO2ZlOuptOqzvFxuICAgICAgLy8g65+w7YOA7J6E7J20IOyWtOq4i+uCmCDrs7Tsnbjri6QuXG4gICAgICBjb25zdCBzdG9yZWQgPSBpc1N0b3JlZChkZWYua2V5KTtcbiAgICAgIGNvbnN0IHJhdyA9IGdldFNldHRpbmcoZGVmLmtleSwgZGVmLmVudktleSk7XG4gICAgICBjb25zdCBlZmZlY3RpdmUgPSByYXcgPz8gZGVmLmZhbGxiYWNrO1xuICAgICAgY29uc3Qgc291cmNlID0gc3RvcmVkID8gXCJkYlwiIDogcmF3ICE9PSB1bmRlZmluZWQgPyBcImVudlwiIDogXCJkZWZhdWx0XCI7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZGVmLmtleSxcbiAgICAgICAgZ3JvdXA6IGRlZi5ncm91cCxcbiAgICAgICAgbGFiZWw6IGRlZi5sYWJlbCxcbiAgICAgICAga2luZDogZGVmLmtpbmQsXG4gICAgICAgIGFwcGxpZXM6IGRlZi5hcHBsaWVzLFxuICAgICAgICAvLyDriIgg7Yag6riA7J2EIOychO2VtCBzZWNyZXQg64+EIOybkOuzuOydhCDrgrTroKTrs7Trgrjri6QuIOydtCDsl5Trk5ztj6zsnbjtirjripQg67Cw7Y+sIOqyveqzhOyXkOyEnCDsnbjspp3tlbTslbxcbiAgICAgICAgLy8g7ZWY66mwLCBkZXYwIOuKlCBDYWRkeSDsnbjspp3snYQg7Ya16rO87ZWcIOyatOyYgeyekOunjCDsoJHqt7ztlaAg7IiYIOyeiOuLpC5cbiAgICAgICAgdmFsdWU6IGVmZmVjdGl2ZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBtaW46IGRlZi5taW4gPz8gbnVsbCxcbiAgICAgICAgbWF4OiBkZWYubWF4ID8/IG51bGwsXG4gICAgICAgIHByZXNldHM6IGRlZi5wcmVzZXRzID8/IFtdLFxuICAgICAgICBoZWxwOiBkZWYuaGVscCA/PyBudWxsLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IHNldHRpbmdzLCBydW50aW1lOiB0aGlzLnJ1bnRpbWVJbmZvKCkgfTtcbiAgfVxuXG4gIHByaXZhdGUgcnVudGltZUluZm8oKTogUnVudGltZUluZm9JdGVtW10ge1xuICAgIGNvbnN0IGVudiA9IHByb2Nlc3MuZW52O1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZW52LlFHUklEX0RCX1BBU1NXT1JEID8/IGVudi5TT05BTVVfREJfUEFTU1dPUkQgPz8gXCJcIjtcbiAgICByZXR1cm4gW1xuICAgICAgeyBsYWJlbDogXCJOT0RFX0VOVlwiLCB2YWx1ZTogZW52Lk5PREVfRU5WID8/IFwiLVwiIH0sXG4gICAgICB7IGxhYmVsOiBcIkhPU1RcIiwgdmFsdWU6IGVudi5IT1NUID8/IFwibG9jYWxob3N0XCIgfSxcbiAgICAgIHsgbGFiZWw6IFwiUE9SVFwiLCB2YWx1ZTogZW52LlBPUlQgPz8gXCI0NDkwMFwiIH0sXG4gICAgICB7IGxhYmVsOiBcIkRCIEhvc3RcIiwgdmFsdWU6IGVudi5RR1JJRF9EQl9IT1NUID8/IGVudi5TT05BTVVfREJfSE9TVCA/PyBcIi1cIiB9LFxuICAgICAgeyBsYWJlbDogXCJEQiBQb3J0XCIsIHZhbHVlOiBlbnYuUUdSSURfREJfUE9SVCA/PyBlbnYuU09OQU1VX0RCX1BPUlQgPz8gXCItXCIgfSxcbiAgICAgIHsgbGFiZWw6IFwiREIgTmFtZVwiLCB2YWx1ZTogZW52LlFHUklEX0RCX05BTUUgPz8gZW52LlNPTkFNVV9EQl9OQU1FID8/IFwiLVwiIH0sXG4gICAgICB7IGxhYmVsOiBcIkRCIFVzZXJcIiwgdmFsdWU6IGVudi5RR1JJRF9EQl9VU0VSID8/IGVudi5TT05BTVVfREJfVVNFUiA/PyBcIi1cIiB9LFxuICAgICAgeyBsYWJlbDogXCJEQiBQYXNzd29yZFwiLCB2YWx1ZTogcGFzc3dvcmQgPyBtYXNrU2VjcmV0KHBhc3N3b3JkKSA6IFwiLVwiIH0sXG4gICAgXTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyB1cGRhdGVTZXR0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx7IGFwcGxpZXM6IFNldHRpbmdBcHBsaWVzIH0+IHtcbiAgICBjb25zdCBkZWYgPSBmaW5kU2V0dGluZ0RlZihrZXkpO1xuICAgIGlmICghZGVmKSB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihTRChcInNldHRpbmcudW5rbm93bktleVwiKShrZXkpKTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVNldHRpbmdWYWx1ZShkZWYsIHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24ub2spIHtcbiAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKFNEKFwic2V0dGluZy5pbnZhbGlkVmFsdWVcIikodmFsaWRhdGlvbi5lcnJvcikpO1xuICAgIH1cblxuICAgIGF3YWl0IHNhdmVTdG9yZWRTZXR0aW5nKGtleSwgdmFsaWRhdGlvbi52YWx1ZSk7XG4gICAgcmV0dXJuIHsgYXBwbGllczogZGVmLmFwcGxpZXMgfTtcbiAgfVxuXG4gIC8qKiDsoIDsnqXqsJLsnYQg7KeA7JuMIGVudiDquLDrs7jqsJLsnLzroZwg65CY64+M66aw64ukLiAqL1xuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcmVzZXRTZXR0aW5nKGtleTogc3RyaW5nKTogUHJvbWlzZTx7IGFwcGxpZXM6IFNldHRpbmdBcHBsaWVzIH0+IHtcbiAgICBjb25zdCBkZWYgPSBmaW5kU2V0dGluZ0RlZihrZXkpO1xuICAgIGlmICghZGVmKSB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihTRChcInNldHRpbmcudW5rbm93bktleVwiKShrZXkpKTtcblxuICAgIGF3YWl0IHJlc2V0U3RvcmVkU2V0dGluZyhrZXkpO1xuICAgIHJldHVybiB7IGFwcGxpZXM6IGRlZi5hcHBsaWVzIH07XG4gIH1cblxuICAvKipcbiAgICog66eM66OMIOyVjOumvOydhCDsp4DquIgg7ZWcIOuyiCDrs7Trgrjri6QuIOyjvOq4sOulvCDquLDri6Trpqzsp4Ag7JWK6rOgIOyEpOygleydtCDsoJzrjIDroZwg67aZ7JeI64qU7KeAIO2ZleyduO2VmOqxsOuCmCxcbiAgICog7J6s66Gc6re47J247J2EIOyerOy0ie2VoCDrlYwg7JO064ukLiDrs7Trgrgg6rG07IiY66W8IOuPjOugpOykmCBcIuuztOuCvCDrjIDsg4Eg7JeG7J2MXCLqs7wg6rWs67aE7ZWc64ukLlxuICAgKi9cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHRyaWdnZXJFeHBpcnlSZW1pbmRlcigpOiBQcm9taXNlPHsgc2VudDogbnVtYmVyIH0+IHtcbiAgICAvLyDrj5nsoIEgaW1wb3J0IOuhnCDslYzrprwg66qo65OI7J2EIO2YuOy2nCDsi5zsoJDsl5Drp4wg64GM7Ja07Jio64ukLiDsoJXsoIHsnLzroZwg6rG466m0XG4gICAgLy8gc2V0dGluZy5tb2RlbCDihpIgZXhwaXJlZC10b2tlbi1yZW1pbmRlciDihpIgdG9rZW4ubW9kZWwg6rK966Gc6rCAIOyDneqyqCxcbiAgICAvLyB0b2tlbi5tb2RlbCDsnYQgbW9jayDtlZjripQg7YWM7Iqk7Yq46rCAIOyLpOygnCDrqqjrk4jsnYQg66i87KCAIOuhnOuTnO2VmOqyjCDrkJzri6QuXG4gICAgY29uc3QgeyBzZW5kRXhwaXJlZFRva2VuUmVtaW5kZXJOb3cgfSA9IGF3YWl0IGltcG9ydChcIi4uL3FncmlkL2V4cGlyZWQtdG9rZW4tcmVtaW5kZXJcIik7XG4gICAgcmV0dXJuIHsgc2VudDogYXdhaXQgc2VuZEV4cGlyZWRUb2tlblJlbWluZGVyTm93KCkgfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgU2V0dGluZ01vZGVsID0gbmV3IFNldHRpbmdNb2RlbENsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBZ0NBLElBQU0sb0JBQU4sY0FBZ0MsZUFLOUI7Q0FDQSxjQUFjO0VBQ1osTUFBTSxXQUFXLHNCQUFzQixvQkFBb0I7Q0FDN0Q7Q0FFQSxNQUNNLFNBQ0osUUFDQSxJQUNrQztFQUNsQyxNQUFNLEVBQUUsU0FBUyxNQUFNLEtBQUssU0FBUyxRQUFRO0dBQzNDO0dBQ0EsS0FBSztHQUNMLE1BQU07RUFDUixDQUFDO0VBQ0QsSUFBSSxDQUFDLEtBQUssSUFDUixNQUFNLElBQUksa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztFQUd2RSxPQUFPLEtBQUs7Q0FDZDtDQUVBLE1BQU0sUUFDSixRQUNBLFlBQ3lDO0VBQ3pDLE1BQU0sRUFBRSxTQUFTLE1BQU0sS0FB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
|
|
@@ -11,7 +11,8 @@ const SettingKind = z.enum([
|
|
|
11
11
|
"integer",
|
|
12
12
|
"number",
|
|
13
13
|
"string",
|
|
14
|
-
"secret"
|
|
14
|
+
"secret",
|
|
15
|
+
"preset"
|
|
15
16
|
]);
|
|
16
17
|
const SettingApplies = z.enum(["immediate", "restart"]);
|
|
17
18
|
const SettingSource = z.enum([
|
|
@@ -31,6 +32,8 @@ const SettingItem = z.object({
|
|
|
31
32
|
source: SettingSource,
|
|
32
33
|
min: z.number().nullable(),
|
|
33
34
|
max: z.number().nullable(),
|
|
35
|
+
/** `preset` 종류에서 고를 수 있는 값. 다른 종류는 빈 배열. */
|
|
36
|
+
presets: z.number().array(),
|
|
34
37
|
help: z.string().nullable()
|
|
35
38
|
});
|
|
36
39
|
/** 화면에서 바꿀 수 없는 기동 시점 값들 — 어떤 환경에 붙어 있는지 확인용. */
|
|
@@ -45,4 +48,4 @@ const SettingsResponse = z.object({
|
|
|
45
48
|
//#endregion
|
|
46
49
|
export { RuntimeInfoItem, SettingApplies, SettingItem, SettingKind, SettingListParams, SettingSaveParams, SettingSource, SettingsResponse };
|
|
47
50
|
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy50eXBlcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2V0dGluZy9zZXR0aW5nLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IFNldHRpbmdCYXNlU2NoZW1hLCBTZXR0aW5nQmFzZUxpc3RQYXJhbXMgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuXG4vLyBTZXR0aW5nIC0gTGlzdFBhcmFtc1xuZXhwb3J0IGNvbnN0IFNldHRpbmdMaXN0UGFyYW1zID0gU2V0dGluZ0Jhc2VMaXN0UGFyYW1zO1xuZXhwb3J0IHR5cGUgU2V0dGluZ0xpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nTGlzdFBhcmFtcz47XG5cbi8vIFNldHRpbmcgLSBTYXZlUGFyYW1zXG5leHBvcnQgY29uc3QgU2V0dGluZ1NhdmVQYXJhbXMgPSBTZXR0aW5nQmFzZVNjaGVtYS5wYXJ0aWFsKHsgaWQ6IHRydWUsIGNyZWF0ZWRfYXQ6IHRydWUgfSk7XG5leHBvcnQgdHlwZSBTZXR0aW5nU2F2ZVBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdTYXZlUGFyYW1zPjtcblxuLy8g4pSA4pSAIOyEpOyglSBBUEkg7J2R64u1IOyKpO2CpOuniCDilIDilIBcblxuZXhwb3J0IGNvbnN0IFNldHRpbmdLaW5kID0gei5lbnVtKFtcImJvb2xlYW5cIiwgXCJpbnRlZ2VyXCIsIFwibnVtYmVyXCIsIFwic3RyaW5nXCIsIFwic2VjcmV0XCIsIFwicHJlc2V0XCJdKTtcbmV4cG9ydCB0eXBlIFNldHRpbmdLaW5kID0gei5pbmZlcjx0eXBlb2YgU2V0dGluZ0tpbmQ+O1xuXG5leHBvcnQgY29uc3QgU2V0dGluZ0FwcGxpZXMgPSB6LmVudW0oW1wiaW1tZWRpYXRlXCIsIFwicmVzdGFydFwiXSk7XG5leHBvcnQgdHlwZSBTZXR0aW5nQXBwbGllcyA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdBcHBsaWVzPjtcblxuZXhwb3J0IGNvbnN0IFNldHRpbmdTb3VyY2UgPSB6LmVudW0oW1wiZGJcIiwgXCJlbnZcIiwgXCJkZWZhdWx0XCJdKTtcbmV4cG9ydCB0eXBlIFNldHRpbmdTb3VyY2UgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nU291cmNlPjtcblxuZXhwb3J0IGNvbnN0IFNldHRpbmdJdGVtID0gei5vYmplY3Qoe1xuICBrZXk6IHouc3RyaW5nKCksXG4gIGdyb3VwOiB6LnN0cmluZygpLFxuICBsYWJlbDogei5zdHJpbmcoKSxcbiAga2luZDogU2V0dGluZ0tpbmQsXG4gIGFwcGxpZXM6IFNldHRpbmdBcHBsaWVzLFxuICAvKiog7ZiE7J6sIOyggeyaqSDspJHsnbgg6rCSLiDriIgg7Yag6riA7J2EIOyngOybkO2VmOq4sCDsnITtlbQgc2VjcmV0IOuPhCDsm5Drs7jsnLzroZwg64K066Ck6rCE64ukLiAqL1xuICB2YWx1ZTogei5zdHJpbmcoKSxcbiAgLyoqIOydtCDqsJLsnbQg7Ja065SU7IScIOyZlOuKlOyngC4g7ZmU66m07JeQ7IScIOy2nOyymOulvCDrs7Tsl6zspJjslbwgXCLsmZwg7JWIIOuwlOuAjOyngFwi6rCAIOyXhuuLpC4gKi9cbiAgc291cmNlOiBTZXR0aW5nU291cmNlLFxuICBtaW46IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgbWF4OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIC8qKiBgcHJlc2V0YCDsooXrpZjsl5DshJwg6rOg66W8IOyImCDsnojripQg6rCSLiDri6Trpbgg7KKF66WY64qUIOu5iCDrsLDsl7QuICovXG4gIHByZXNldHM6IHoubnVtYmVyKCkuYXJyYXkoKSxcbiAgaGVscDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBTZXR0aW5nSXRlbSA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdJdGVtPjtcblxuLyoqIO2ZlOuptOyXkOyEnCDrsJTqv4Ag7IiYIOyXhuuKlCDquLDrj5kg7Iuc7KCQIOqwkuuTpCDigJQg7Ja065akIO2ZmOqyveyXkCDrtpnslrQg7J6I64qU7KeAIO2ZleyduOyaqS4gKi9cbmV4cG9ydCBjb25zdCBSdW50aW1lSW5mb0l0ZW0gPSB6Lm9iamVjdCh7XG4gIGxhYmVsOiB6LnN0cmluZygpLFxuICB2YWx1ZTogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUnVudGltZUluZm9JdGVtID0gei5pbmZlcjx0eXBlb2YgUnVudGltZUluZm9JdGVtPjtcblxuZXhwb3J0IGNvbnN0IFNldHRpbmdzUmVzcG9uc2UgPSB6Lm9iamVjdCh7XG4gIHNldHRpbmdzOiBTZXR0aW5nSXRlbS5hcnJheSgpLFxuICBydW50aW1lOiBSdW50aW1lSW5mb0l0ZW0uYXJyYXkoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU2V0dGluZ3NSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdzUmVzcG9uc2U+O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFhLG9CQUFvQjtBQUlqQyxNQUFhLG9CQUFvQixrQkFBa0IsUUFBUTtDQUFFLElBQUk7Q0FBTSxZQUFZO0FBQUssQ0FBQztBQUt6RixNQUFhLGNBQWMsRUFBRSxLQUFLO0NBQUM7Q0FBVztDQUFXO0NBQVU7Q0FBVTtDQUFVO0FBQVEsQ0FBQztBQUdoRyxNQUFhLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxhQUFhLFNBQVMsQ0FBQztBQUc3RCxNQUFhLGdCQUFnQixFQUFFLEtBQUs7Q0FBQztDQUFNO0NBQU87QUFBUyxDQUFDO0FBRzVELE1BQWEsY0FBYyxFQUFFLE9BQU87Q0FDbEMsS0FBSyxFQUFFLE9BQU87Q0FDZCxPQUFPLEVBQUUsT0FBTztDQUNoQixPQUFPLEVBQUUsT0FBTztDQUNoQixNQUFNO0NBQ04sU0FBUzs7Q0FFVCxPQUFPLEVBQUUsT0FBTzs7Q0FFaEIsUUFBUTtDQUNSLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTOztDQUV6QixTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTTtDQUMxQixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztBQUM1QixDQUFDOztBQUlELE1BQWEsa0JBQWtCLEVBQUUsT0FBTztDQUN0QyxPQUFPLEVBQUUsT0FBTztDQUNoQixPQUFPLEVBQUUsT0FBTztBQUNsQixDQUFDO0FBR0QsTUFBYSxtQkFBbUIsRUFBRSxPQUFPO0NBQ3ZDLFVBQVUsWUFBWSxNQUFNO0NBQzVCLFNBQVMsZ0JBQWdCLE1BQU07QUFDakMsQ0FBQyJ9
|
|
@@ -136,7 +136,7 @@ var sonamu_config_default = defineConfig({
|
|
|
136
136
|
const log = getLogger(["qgrid", "startup"]);
|
|
137
137
|
await loadSettings();
|
|
138
138
|
setSettingChangeHandler((key) => {
|
|
139
|
-
if (key === "slack.expiryReminderMinutes") rescheduleExpiredTokenReminder();
|
|
139
|
+
if (key === "slack.expiryReminderMinutes" || key === "slack.remindersEnabled") rescheduleExpiredTokenReminder();
|
|
140
140
|
});
|
|
141
141
|
let triggerReady = true;
|
|
142
142
|
try {
|
|
@@ -193,4 +193,4 @@ var sonamu_config_default = defineConfig({
|
|
|
193
193
|
//#endregion
|
|
194
194
|
export { sonamu_config_default as default };
|
|
195
195
|
|
|
196
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmNvbmZpZy5qcyIsIm5hbWVzIjpbImNhY2hlRHJpdmVycyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zb25hbXUuY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGdldENvbnNvbGVTaW5rIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgeyBDYWNoZVByZXNldHMsIGRlZmluZUNvbmZpZyB9IGZyb20gXCJzb25hbXVcIjtcbmltcG9ydCB7IGRyaXZlcnMgYXMgY2FjaGVEcml2ZXJzLCBzdG9yZSB9IGZyb20gXCJzb25hbXUvY2FjaGVcIjtcblxuaW1wb3J0IHsgbW9uaXRMb2dTaW5rIH0gZnJvbSBcIi4vYXBwbGljYXRpb24vbW9uaXQvbG9nLWJ1ZmZlclwiO1xuaW1wb3J0IHtcbiAgcmVzY2hlZHVsZUV4cGlyZWRUb2tlblJlbWluZGVyLFxuICBzdGFydEV4cGlyZWRUb2tlblJlbWluZGVyLFxuICBzdG9wRXhwaXJlZFRva2VuUmVtaW5kZXIsXG59IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL2V4cGlyZWQtdG9rZW4tcmVtaW5kZXJcIjtcbmltcG9ydCB7IFFncmlkRGlzcGF0Y2hlciB9IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmRpc3BhdGNoZXJcIjtcbmltcG9ydCB7IFFncmlkRnJhbWUgfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC5mcmFtZVwiO1xuaW1wb3J0IHsgVG9rZW5TdWJzY3JpYmVyIH0gZnJvbSBcIi4vYXBwbGljYXRpb24vcWdyaWQvdG9rZW4tc3Vic2NyaWJlclwiO1xuaW1wb3J0IHsgZW5zdXJlVG9rZW5zVHJpZ2dlciB9IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL3Rva2VuLXRyaWdnZXItc2V0dXBcIjtcbmltcG9ydCB7IGxvYWRTZXR0aW5ncywgc2V0U2V0dGluZ0NoYW5nZUhhbmRsZXIgfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9zZXR0aW5nL3NldHRpbmcuc3RvcmVcIjtcbmltcG9ydCB7IGhhbmRsZVNlcnZlckVycm9yIH0gZnJvbSBcIi4vc2VydmVyLWVycm9yLWhhbmRsZXJcIjtcbmltcG9ydCB7IEFudGhyb3BpY0Rpc3BhdGNoZXIgfSBmcm9tIFwiLi91dGlscy9wcm92aWRlcnMvYW50aHJvcGljL2FudGhyb3BpYy1kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBPcGVuQUlEaXNwYXRjaGVyIH0gZnJvbSBcIi4vdXRpbHMvcHJvdmlkZXJzL29wZW5haS9vcGVuYWktZGlzcGF0Y2hlclwiO1xuXG5jb25zdCBob3N0ID0gcHJvY2Vzcy5lbnYuSE9TVCA/PyBcImxvY2FsaG9zdFwiO1xuY29uc3QgcG9ydCA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUID8/IDQ0OTAwKTtcblxuY29uc3QgY29ubkNvbmZpZyA9IHtcbiAgaG9zdDogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX0hPU1QgPz8gXCJsb2NhbGhvc3RcIixcbiAgcG9ydDogTnVtYmVyKHByb2Nlc3MuZW52LlNPTkFNVV9EQl9QT1JUID8/IDU0MzIpLFxuICB1c2VyOiBwcm9jZXNzLmVudi5TT05BTVVfREJfVVNFUiA/PyBcInBvc3RncmVzXCIsXG4gIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5TT05BTVVfREJfUEFTU1dPUkQgPz8gXCJwb3N0Z3Jlc1wiLFxuICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX05BTUUgPz8gXCJxZ3JpZFwiLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcHJvamVjdE5hbWU6IHByb2Nlc3MuZW52LlBST0pFQ1RfTkFNRSA/PyBcIlFncmlkXCIsXG4gIGRhdGFiYXNlOiB7XG4gICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgLi4uY29ubkNvbmZpZyxcbiAgICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgICAgICBrZWVwQWxpdmVJbml0aWFsRGVsYXlNaWxsaXM6IDEwMDAwLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBhcGk6IHtcbiAgICBkaXI6IFwiYXBpXCIsXG4gICAgdGltZXpvbmU6IFwiQXNpYS9TZW91bFwiLFxuICAgIHJvdXRlOiB7XG4gICAgICBwcmVmaXg6IFwiL2FwaVwiLFxuICAgIH0sXG4gIH0sXG4gIGkxOG46IHtcbiAgICBkZWZhdWx0TG9jYWxlOiBcImtvXCIsXG4gICAgc3VwcG9ydGVkTG9jYWxlczogW1wia29cIiwgXCJlblwiXSxcbiAgfSxcbiAgc3luYzoge1xuICAgIHRhcmdldHM6IFtcIndlYlwiXSxcbiAgfSxcbiAgdGVzdDoge1xuICAgIHBhcmFsbGVsOiB0cnVlLFxuICAgIG1heFdvcmtlcnM6IDQsXG4gICAgZGV2UnVubmVyOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgfSxcbiAgbG9nZ2luZzoge1xuICAgIHNpbmtzOiB7XG4gICAgICBjb25zb2xlOiBnZXRDb25zb2xlU2luayh7XG4gICAgICAgIGZvcm1hdHRlcjogZ2V0UHJldHR5Rm9ybWF0dGVyKHtcbiAgICAgICAgICB0aW1lc3RhbXA6IFwidGltZVwiLFxuICAgICAgICAgIGNhdGVnb3J5V2lkdGg6IDIwLFxuICAgICAgICAgIGNhdGVnb3J5VHJ1bmNhdGU6IFwibWlkZGxlXCIsXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgICAvLyBNb25pdCDtg63smqkgaW4tbWVtb3J5IHJpbmcgYnVmZmVyLiDtj6zrp7fsnYAgc2luayDrs4Qg4oCUIOy9mOyGlCDstpzroKXsnYAg6re464yA66Gc64ukLlxuICAgICAgbW9uaXQ6IG1vbml0TG9nU2luayxcbiAgICB9LFxuICAgIGxvZ2dlcnM6IFtcbiAgICAgIC8vIHFncmlkIOuhnOq3uCAo7JqU7LKtIOu2hOuwsCwgb2F1dGgvdXNhZ2UgQVBJKVxuICAgICAgeyBjYXRlZ29yeTogW1wicWdyaWRcIl0sIHNpbmtzOiBbXCJjb25zb2xlXCIsIFwibW9uaXRcIl0sIGxvd2VzdExldmVsOiBcImluZm9cIiB9LFxuICAgICAgLy8gc29uYW11IOuhnOq3uOuKlCB3YXJuaW5nIOydtOyDgeunjFxuICAgICAgeyBjYXRlZ29yeTogW1wic29uYW11XCJdLCBzaW5rczogW1wiY29uc29sZVwiLCBcIm1vbml0XCJdLCBsb3dlc3RMZXZlbDogXCJ3YXJuaW5nXCIgfSxcbiAgICAgIC8vIGZhc3RpZnkg66Gc6re4IOywqOuLqFxuICAgICAgeyBjYXRlZ29yeTogW1wiZmFzdGlmeVwiXSwgc2lua3M6IFtdLCBsb3dlc3RMZXZlbDogXCJmYXRhbFwiIH0sXG4gICAgXSxcbiAgfSxcbiAgc2VydmVyOiB7XG4gICAgbGlzdGVuOiB7IHBvcnQsIGhvc3QgfSxcbiAgICBmYXN0aWZ5OiB7XG4gICAgICBib2R5TGltaXQ6IDEwICogMTAyNCAqIDEwMjQsXG4gICAgfSxcbiAgICBwbHVnaW5zOiB7XG4gICAgICBmb3JtYm9keTogdHJ1ZSxcbiAgICAgIHFzOiB0cnVlLFxuICAgICAgc3NlOiB0cnVlLFxuICAgICAgbXVsdGlwYXJ0OiB7IGxpbWl0czogeyBmaWxlU2l6ZTogMTAyNCAqIDEwMjQgKiAzMCB9IH0sXG4gICAgICBzdGF0aWM6IHtcbiAgICAgICAgcm9vdDogcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLy4uL1wiLCBcInB1YmxpY1wiKSxcbiAgICAgICAgcHJlZml4OiBcIi9hcGkvcHVibGljXCIsXG4gICAgICB9LFxuICAgICAgY3VzdG9tOiAoc2VydmVyKSA9PiB7XG4gICAgICAgIC8vIE9BdXRoIOy9nOuwsSDigJQgQW50aHJvcGlj7J20IC9jYWxsYmFja+ycvOuhnCDrpqzri6TsnbTroIntirhcbiAgICAgICAgc2VydmVyLmdldChcIi9jYWxsYmFja1wiLCBhc3luYyAocmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIHN0YXRlIH0gPSByZXF1ZXN0LnF1ZXJ5IGFzIHsgY29kZT86IHN0cmluZzsgc3RhdGU/OiBzdHJpbmcgfTtcbiAgICAgICAgICBpZiAoIWNvZGUgfHwgIXN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXCIvP29hdXRoPWVycm9yJnJlYXNvbj1taXNzaW5nX3BhcmFtc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBRZ3JpZEZyYW1lLmhhbmRsZU9BdXRoQ2FsbGJhY2soY29kZSwgc3RhdGUsIHJlcGx5KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXG4gICAgICAgICAgICAgIGAvP29hdXRoPWVycm9yJnJlYXNvbj0ke2VuY29kZVVSSUNvbXBvbmVudCgoZSBhcyBFcnJvcikubWVzc2FnZSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPcGVuQUkgT0F1dGgg64qUIGNvZGV4IGFwcC1zZXJ2ZXIg6rCAIOyekOyytCBjYWxsYmFjayDshJzrsoTrpbwg7Jis66a8XG4gICAgICAgIC8vIGhhbmRsZU9wZW5BSUNhbGxiYWNrIOu2iO2VhOyalCDigJQgb2F1dGhDb21wbGV0ZU9wZW5BSSBBUEkg66GcIOyZhOujjCDtmZXsnbhcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhcGlDb25maWc6IHtcbiAgICAgIGNvbnRleHRQcm92aWRlcjogKGRlZmF1bHRDb250ZXh0LCByZXF1ZXN0KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGVmYXVsdENvbnRleHQsXG4gICAgICAgICAgaXA6IHJlcXVlc3QuaXAsXG4gICAgICAgICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGd1YXJkSGFuZGxlcjogKCkgPT4ge30sXG4gICAgICBjYWNoZUNvbnRyb2xIYW5kbGVyOiAocmVxKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVxLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiYXNzZXRzXCI6XG4gICAgICAgICAgICAvLyBIYXNoIO2PrO2VqOuQnCDtjIzsnbw6IOyYgeq1rCDsupDsi5xcbiAgICAgICAgICAgIGlmIChyZXEucGF0aC5tYXRjaCgvLVthLWYwLTldK1xcLi8pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuaW1tdXRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5sb25nTGl2ZWQ7XG5cbiAgICAgICAgICBjYXNlIFwiYXBpXCI6XG4gICAgICAgICAgICAvLyBHRVQg7JqU7LKt66eMIOy6kOyLsSDqs6DroKRcbiAgICAgICAgICAgIGlmIChyZXEubWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgIC8vIO2KueyglSDqsr3roZzripQg7Ken7J2AIOy6kOyLnFxuICAgICAgICAgICAgICBpZiAocmVxLnBhdGguc3RhcnRzV2l0aChcIi9hcGkvc3RhdGljLWRhdGFcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNob3J0TGl2ZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlcS5wYXRoLnN0YXJ0c1dpdGgoXCIvYXBpL3Rlcm1zXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5tZWRpdW1MaXZlZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g6riw67O4OiDsupDsi5wg7JeG7J2MXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLm5vQ2FjaGU7XG5cbiAgICAgICAgICBjYXNlIFwic3NyXCI6XG4gICAgICAgICAgICAvLyBTU1Ig7Y6Y7J207KeAOiAxMOy0iCDsupDsi5xcbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuc3NyO1xuXG4gICAgICAgICAgY2FzZSBcImNzclwiOlxuICAgICAgICAgICAgLy8gQ1NSIGZhbGxiYWNrIChpbmRleC5odG1sKTogMeu2hCDsupDsi5xcbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuc2hvcnRMaXZlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLm5vQ2FjaGU7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY2FjaGU6IHtcbiAgICAgIGRlZmF1bHQ6IFwibWFpblwiLFxuICAgICAgc3RvcmVzOiB7XG4gICAgICAgIG1haW46IHN0b3JlKCkudXNlTDFMYXllcihjYWNoZURyaXZlcnMubWVtb3J5KHsgbWF4U2l6ZTogXCI1MG1iXCIgfSkpLFxuICAgICAgfSxcbiAgICAgIHR0bDogXCI1bVwiLFxuICAgICAgcHJlZml4OiBcIlwiLFxuICAgIH0sXG4gICAgbGlmZWN5Y2xlOiB7XG4gICAgICBvblN0YXJ0OiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZyA9IGdldExvZ2dlcihbXCJxZ3JpZFwiLCBcInN0YXJ0dXBcIl0pO1xuXG4gICAgICAgIC8vIGRpc3BhdGNoZXIg6rCAIOyDneyEseyekOyXkOyEnCDsm4zsu6Qg7ISk7KCV7J2EIOydveycvOuvgOuhnCDqt7gg7KCE7JeQIOyYrOugpOyVvCDtlZzri6QuXG4gICAgICAgIGF3YWl0IGxvYWRTZXR0aW5ncygpO1xuICAgICAgICAvLyDrn7Dtg4DsnoQg7ISk7KCVIOyGjOu5hOyekOulvCDsg4HsnIQg6rOE7Li17JeQ7IScIOyXsOqysO2VtCBzZXR0aW5nIOuqqOuTiOydtCBxZ3JpZCDrpbwg7Jet7LC47KGw7ZWY7KeAIOyViuqyjCDtlZzri6QuXG4gICAgICAgIHNldFNldHRpbmdDaGFuZ2VIYW5kbGVyKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAoa2V5ID09PSBcInNsYWNrLmV4cGlyeVJlbWluZGVyTWludXRlc1wiKSByZXNjaGVkdWxlRXhwaXJlZFRva2VuUmVtaW5kZXIoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHRyaWdnZXJSZWFkeSA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZW5zdXJlVG9rZW5zVHJpZ2dlcihjb25uQ29uZmlnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRyaWdnZXJSZWFkeSA9IGZhbHNlO1xuICAgICAgICAgIGxvZy53YXJuKGB0cmlnZ2VyIHNldHVwIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSBuZXcgVG9rZW5TdWJzY3JpYmVyKGNvbm5Db25maWcsIFFncmlkRGlzcGF0Y2hlcik7XG4gICAgICAgIFFncmlkRGlzcGF0Y2hlci5zdWJzY3JpYmVyID0gc3Vic2NyaWJlcjtcblxuICAgICAgICBjb25zdCBzdGFydGVkID0gYXdhaXQgc3Vic2NyaWJlci5zdGFydCgpO1xuXG4gICAgICAgIC8vIOq4sOuPmSDsg4Htg5zrpbwg64Ko6ri064ukIOKAlCBIVFRQIOuKlCDsnbTrr7gg7Je066CkIOyeiOyWtOyEnCwg7KSA67mEIOyghCDsmpTssq3snbQgXCLsnqDsi5wg7ZuEIOuQmOuKlOyngFwiXG4gICAgICAgIC8vIFwi7J6s7Iuc64+E7ZW064+EIOyViCDrkJjripTsp4BcIuulvCDqtazrtoTtlbQg7J2R64u17ZW07JW8IO2VnOuLpCg1MDMgdnMgNTAwKS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBvcGVuYWlEaXNwYXRjaGVyID0gbmV3IE9wZW5BSURpc3BhdGNoZXIoKTtcbiAgICAgICAgICBhd2FpdCBvcGVuYWlEaXNwYXRjaGVyLnN0YXJ0KCk7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXIgPSBvcGVuYWlEaXNwYXRjaGVyO1xuICAgICAgICAgIFFncmlkRGlzcGF0Y2hlci5zdGFydHVwU3RhdGUub3BlbmFpID0gXCJyZWFkeVwiO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLnN0YXJ0dXBTdGF0ZS5vcGVuYWkgPSBcImZhaWxlZFwiO1xuICAgICAgICAgIGxvZy53YXJuKGBvcGVuYWkgZGlzcGF0Y2hlciBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFudGhyb3BpY0Rpc3BhdGNoZXIgPSBuZXcgQW50aHJvcGljRGlzcGF0Y2hlcigpO1xuICAgICAgICAgIGF3YWl0IGFudGhyb3BpY0Rpc3BhdGNoZXIuc3RhcnQoKTtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIuYW50aHJvcGljRGlzcGF0Y2hlciA9IGFudGhyb3BpY0Rpc3BhdGNoZXI7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLnN0YXJ0dXBTdGF0ZS5hbnRocm9waWMgPSBcInJlYWR5XCI7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIuc3RhcnR1cFN0YXRlLmFudGhyb3BpYyA9IFwiZmFpbGVkXCI7XG4gICAgICAgICAgbG9nLndhcm4oYGFudGhyb3BpYyBkaXNwYXRjaGVyIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0RXhwaXJlZFRva2VuUmVtaW5kZXIoKTtcblxuICAgICAgICBjb25zdCBhbnRocm9waWNDb3VudCA9IFFncmlkRGlzcGF0Y2hlci5hbnRocm9waWNEaXNwYXRjaGVyPy50b2tlbkNvdW50ID8/IDA7XG4gICAgICAgIGNvbnN0IG9wZW5haVJlYWR5ID0gUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LnJlYWR5V29ya2VyQ291bnQgPz8gMDtcbiAgICAgICAgY29uc3Qgb3BlbmFpVG90YWwgPSBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcj8ud29ya2VyQ291bnQgPz8gMDtcblxuICAgICAgICBsb2cuaW5mbyhgbGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH1gKTtcbiAgICAgICAgbG9nLmluZm8oYGFudGhyb3BpYzogJHthbnRocm9waWNDb3VudH0gdG9rZW5zIHJlYWR5YCk7XG4gICAgICAgIGxvZy5pbmZvKGBvcGVuYWk6ICR7b3BlbmFpUmVhZHl9LyR7b3BlbmFpVG90YWx9IHRva2VucyByZWFkeWApO1xuICAgICAgICBsb2cuaW5mbyhcbiAgICAgICAgICBgc3Vic2NyaWJlcjogJHtzdGFydGVkID8gXCJMSVNURU4gYWN0aXZlXCIgOiBcImRlZ3JhZGVkXCJ9JHt0cmlnZ2VyUmVhZHkgPyBcIlwiIDogXCIsIHRyaWdnZXIgZmFpbGVkXCJ9YCxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBvblNodXRkb3duOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZyA9IGdldExvZ2dlcihbXCJxZ3JpZFwiLCBcInN0YXJ0dXBcIl0pO1xuICAgICAgICBzdG9wRXhwaXJlZFRva2VuUmVtaW5kZXIoKTtcbiAgICAgICAgc2V0U2V0dGluZ0NoYW5nZUhhbmRsZXIobnVsbCk7XG4gICAgICAgIGlmIChRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcikge1xuICAgICAgICAgIGF3YWl0IFFncmlkRGlzcGF0Y2hlci5vcGVuYWlEaXNwYXRjaGVyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXIpIHtcbiAgICAgICAgICBhd2FpdCBRZ3JpZERpc3BhdGNoZXIuYW50aHJvcGljRGlzcGF0Y2hlci5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFFncmlkRGlzcGF0Y2hlci5zdWJzY3JpYmVyKSB7XG4gICAgICAgICAgYXdhaXQgUWdyaWREaXNwYXRjaGVyLnN1YnNjcmliZXIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGxvZy5pbmZvKFwiZ3JhY2VmdWwgc2h1dGRvd25cIik7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogKGVycm9yLCBfcmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgaGFuZGxlU2VydmVyRXJyb3IoZXJyb3IsIHJlcGx5KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLE1BQU0sT0FBTyxRQUFRLElBQUksUUFBUTtBQUNqQyxNQUFNLE9BQU8sT0FBTyxRQUFRLElBQUksUUFBUSxLQUFLO0FBRTdDLE1BQU0sYUFBYTtDQUNqQixNQUFNLFFBQVEsSUFBSSxrQkFBa0I7Q0FDcEMsTUFBTSxPQUFPLFFBQVEsSUFBSSxrQkFBa0IsSUFBSTtDQUMvQyxNQUFNLFFBQVEsSUFBSSxrQkFBa0I7Q0FDcEMsVUFBVSxRQUFRLElBQUksc0JBQXNCO0NBQzVDLFVBQVUsUUFBUSxJQUFJLGtCQUFrQjtBQUMxQztBQUVBLElBQUEsd0JBQWUsYUFBYTtDQUMxQixhQUFhLFFBQVEsSUFBSSxnQkFBZ0I7Q0FDekMsVUFBVSxFQUNSLGdCQUFnQixFQUNkLFlBQVk7RUFDVixHQUFHO0VBQ0gsV0FBVztFQUNYLDZCQUE2QjtDQUMvQixFQUNGLEVBQ0Y7Q0FDQSxLQUFLO0VBQ0gsS0FBSztFQUNMLFVBQVU7RUFDVixPQUFPLEVBQ0wsUUFBUSxPQUNWO0NBQ0Y7Q0FDQSxNQUFNO0VBQ0osZUFBZTtFQUNmLGtCQUFrQixDQUFDLE1BQU0sSUFBSTtDQUMvQjtDQUNBLE1BQU0sRUFDSixTQUFTLENBQUMsS0FBSyxFQUNqQjtDQUNBLE1BQU07RUFDSixVQUFVO0VBQ1YsWUFBWTtFQUNaLFdBQVcsRUFBRSxTQUFTLEtBQUs7Q0FDN0I7Q0FDQSxTQUFTO0VBQ1AsT0FBTztHQUNMLFNBQVMsZUFBZSxFQUN0QixXQUFXLG1CQUFtQjtJQUM1QixXQUFXO0lBQ1gsZUFBZTtJQUNmLGtCQUFrQjtHQUNwQixDQUFDLEVBQ0gsQ0FBQztH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
|
|
196
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmNvbmZpZy5qcyIsIm5hbWVzIjpbImNhY2hlRHJpdmVycyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zb25hbXUuY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGdldENvbnNvbGVTaW5rIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgeyBDYWNoZVByZXNldHMsIGRlZmluZUNvbmZpZyB9IGZyb20gXCJzb25hbXVcIjtcbmltcG9ydCB7IGRyaXZlcnMgYXMgY2FjaGVEcml2ZXJzLCBzdG9yZSB9IGZyb20gXCJzb25hbXUvY2FjaGVcIjtcblxuaW1wb3J0IHsgbW9uaXRMb2dTaW5rIH0gZnJvbSBcIi4vYXBwbGljYXRpb24vbW9uaXQvbG9nLWJ1ZmZlclwiO1xuaW1wb3J0IHtcbiAgcmVzY2hlZHVsZUV4cGlyZWRUb2tlblJlbWluZGVyLFxuICBzdGFydEV4cGlyZWRUb2tlblJlbWluZGVyLFxuICBzdG9wRXhwaXJlZFRva2VuUmVtaW5kZXIsXG59IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL2V4cGlyZWQtdG9rZW4tcmVtaW5kZXJcIjtcbmltcG9ydCB7IFFncmlkRGlzcGF0Y2hlciB9IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmRpc3BhdGNoZXJcIjtcbmltcG9ydCB7IFFncmlkRnJhbWUgfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC5mcmFtZVwiO1xuaW1wb3J0IHsgVG9rZW5TdWJzY3JpYmVyIH0gZnJvbSBcIi4vYXBwbGljYXRpb24vcWdyaWQvdG9rZW4tc3Vic2NyaWJlclwiO1xuaW1wb3J0IHsgZW5zdXJlVG9rZW5zVHJpZ2dlciB9IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL3Rva2VuLXRyaWdnZXItc2V0dXBcIjtcbmltcG9ydCB7IGxvYWRTZXR0aW5ncywgc2V0U2V0dGluZ0NoYW5nZUhhbmRsZXIgfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9zZXR0aW5nL3NldHRpbmcuc3RvcmVcIjtcbmltcG9ydCB7IGhhbmRsZVNlcnZlckVycm9yIH0gZnJvbSBcIi4vc2VydmVyLWVycm9yLWhhbmRsZXJcIjtcbmltcG9ydCB7IEFudGhyb3BpY0Rpc3BhdGNoZXIgfSBmcm9tIFwiLi91dGlscy9wcm92aWRlcnMvYW50aHJvcGljL2FudGhyb3BpYy1kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBPcGVuQUlEaXNwYXRjaGVyIH0gZnJvbSBcIi4vdXRpbHMvcHJvdmlkZXJzL29wZW5haS9vcGVuYWktZGlzcGF0Y2hlclwiO1xuXG5jb25zdCBob3N0ID0gcHJvY2Vzcy5lbnYuSE9TVCA/PyBcImxvY2FsaG9zdFwiO1xuY29uc3QgcG9ydCA9IE51bWJlcihwcm9jZXNzLmVudi5QT1JUID8/IDQ0OTAwKTtcblxuY29uc3QgY29ubkNvbmZpZyA9IHtcbiAgaG9zdDogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX0hPU1QgPz8gXCJsb2NhbGhvc3RcIixcbiAgcG9ydDogTnVtYmVyKHByb2Nlc3MuZW52LlNPTkFNVV9EQl9QT1JUID8/IDU0MzIpLFxuICB1c2VyOiBwcm9jZXNzLmVudi5TT05BTVVfREJfVVNFUiA/PyBcInBvc3RncmVzXCIsXG4gIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5TT05BTVVfREJfUEFTU1dPUkQgPz8gXCJwb3N0Z3Jlc1wiLFxuICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX05BTUUgPz8gXCJxZ3JpZFwiLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcHJvamVjdE5hbWU6IHByb2Nlc3MuZW52LlBST0pFQ1RfTkFNRSA/PyBcIlFncmlkXCIsXG4gIGRhdGFiYXNlOiB7XG4gICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgLi4uY29ubkNvbmZpZyxcbiAgICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgICAgICBrZWVwQWxpdmVJbml0aWFsRGVsYXlNaWxsaXM6IDEwMDAwLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBhcGk6IHtcbiAgICBkaXI6IFwiYXBpXCIsXG4gICAgdGltZXpvbmU6IFwiQXNpYS9TZW91bFwiLFxuICAgIHJvdXRlOiB7XG4gICAgICBwcmVmaXg6IFwiL2FwaVwiLFxuICAgIH0sXG4gIH0sXG4gIGkxOG46IHtcbiAgICBkZWZhdWx0TG9jYWxlOiBcImtvXCIsXG4gICAgc3VwcG9ydGVkTG9jYWxlczogW1wia29cIiwgXCJlblwiXSxcbiAgfSxcbiAgc3luYzoge1xuICAgIHRhcmdldHM6IFtcIndlYlwiXSxcbiAgfSxcbiAgdGVzdDoge1xuICAgIHBhcmFsbGVsOiB0cnVlLFxuICAgIG1heFdvcmtlcnM6IDQsXG4gICAgZGV2UnVubmVyOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgfSxcbiAgbG9nZ2luZzoge1xuICAgIHNpbmtzOiB7XG4gICAgICBjb25zb2xlOiBnZXRDb25zb2xlU2luayh7XG4gICAgICAgIGZvcm1hdHRlcjogZ2V0UHJldHR5Rm9ybWF0dGVyKHtcbiAgICAgICAgICB0aW1lc3RhbXA6IFwidGltZVwiLFxuICAgICAgICAgIGNhdGVnb3J5V2lkdGg6IDIwLFxuICAgICAgICAgIGNhdGVnb3J5VHJ1bmNhdGU6IFwibWlkZGxlXCIsXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgICAvLyBNb25pdCDtg63smqkgaW4tbWVtb3J5IHJpbmcgYnVmZmVyLiDtj6zrp7fsnYAgc2luayDrs4Qg4oCUIOy9mOyGlCDstpzroKXsnYAg6re464yA66Gc64ukLlxuICAgICAgbW9uaXQ6IG1vbml0TG9nU2luayxcbiAgICB9LFxuICAgIGxvZ2dlcnM6IFtcbiAgICAgIC8vIHFncmlkIOuhnOq3uCAo7JqU7LKtIOu2hOuwsCwgb2F1dGgvdXNhZ2UgQVBJKVxuICAgICAgeyBjYXRlZ29yeTogW1wicWdyaWRcIl0sIHNpbmtzOiBbXCJjb25zb2xlXCIsIFwibW9uaXRcIl0sIGxvd2VzdExldmVsOiBcImluZm9cIiB9LFxuICAgICAgLy8gc29uYW11IOuhnOq3uOuKlCB3YXJuaW5nIOydtOyDgeunjFxuICAgICAgeyBjYXRlZ29yeTogW1wic29uYW11XCJdLCBzaW5rczogW1wiY29uc29sZVwiLCBcIm1vbml0XCJdLCBsb3dlc3RMZXZlbDogXCJ3YXJuaW5nXCIgfSxcbiAgICAgIC8vIGZhc3RpZnkg66Gc6re4IOywqOuLqFxuICAgICAgeyBjYXRlZ29yeTogW1wiZmFzdGlmeVwiXSwgc2lua3M6IFtdLCBsb3dlc3RMZXZlbDogXCJmYXRhbFwiIH0sXG4gICAgXSxcbiAgfSxcbiAgc2VydmVyOiB7XG4gICAgbGlzdGVuOiB7IHBvcnQsIGhvc3QgfSxcbiAgICBmYXN0aWZ5OiB7XG4gICAgICBib2R5TGltaXQ6IDEwICogMTAyNCAqIDEwMjQsXG4gICAgfSxcbiAgICBwbHVnaW5zOiB7XG4gICAgICBmb3JtYm9keTogdHJ1ZSxcbiAgICAgIHFzOiB0cnVlLFxuICAgICAgc3NlOiB0cnVlLFxuICAgICAgbXVsdGlwYXJ0OiB7IGxpbWl0czogeyBmaWxlU2l6ZTogMTAyNCAqIDEwMjQgKiAzMCB9IH0sXG4gICAgICBzdGF0aWM6IHtcbiAgICAgICAgcm9vdDogcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLy4uL1wiLCBcInB1YmxpY1wiKSxcbiAgICAgICAgcHJlZml4OiBcIi9hcGkvcHVibGljXCIsXG4gICAgICB9LFxuICAgICAgY3VzdG9tOiAoc2VydmVyKSA9PiB7XG4gICAgICAgIC8vIE9BdXRoIOy9nOuwsSDigJQgQW50aHJvcGlj7J20IC9jYWxsYmFja+ycvOuhnCDrpqzri6TsnbTroIntirhcbiAgICAgICAgc2VydmVyLmdldChcIi9jYWxsYmFja1wiLCBhc3luYyAocmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIHN0YXRlIH0gPSByZXF1ZXN0LnF1ZXJ5IGFzIHsgY29kZT86IHN0cmluZzsgc3RhdGU/OiBzdHJpbmcgfTtcbiAgICAgICAgICBpZiAoIWNvZGUgfHwgIXN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXCIvP29hdXRoPWVycm9yJnJlYXNvbj1taXNzaW5nX3BhcmFtc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBRZ3JpZEZyYW1lLmhhbmRsZU9BdXRoQ2FsbGJhY2soY29kZSwgc3RhdGUsIHJlcGx5KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXG4gICAgICAgICAgICAgIGAvP29hdXRoPWVycm9yJnJlYXNvbj0ke2VuY29kZVVSSUNvbXBvbmVudCgoZSBhcyBFcnJvcikubWVzc2FnZSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPcGVuQUkgT0F1dGgg64qUIGNvZGV4IGFwcC1zZXJ2ZXIg6rCAIOyekOyytCBjYWxsYmFjayDshJzrsoTrpbwg7Jis66a8XG4gICAgICAgIC8vIGhhbmRsZU9wZW5BSUNhbGxiYWNrIOu2iO2VhOyalCDigJQgb2F1dGhDb21wbGV0ZU9wZW5BSSBBUEkg66GcIOyZhOujjCDtmZXsnbhcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhcGlDb25maWc6IHtcbiAgICAgIGNvbnRleHRQcm92aWRlcjogKGRlZmF1bHRDb250ZXh0LCByZXF1ZXN0KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGVmYXVsdENvbnRleHQsXG4gICAgICAgICAgaXA6IHJlcXVlc3QuaXAsXG4gICAgICAgICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGd1YXJkSGFuZGxlcjogKCkgPT4ge30sXG4gICAgICBjYWNoZUNvbnRyb2xIYW5kbGVyOiAocmVxKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVxLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiYXNzZXRzXCI6XG4gICAgICAgICAgICAvLyBIYXNoIO2PrO2VqOuQnCDtjIzsnbw6IOyYgeq1rCDsupDsi5xcbiAgICAgICAgICAgIGlmIChyZXEucGF0aC5tYXRjaCgvLVthLWYwLTldK1xcLi8pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuaW1tdXRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5sb25nTGl2ZWQ7XG5cbiAgICAgICAgICBjYXNlIFwiYXBpXCI6XG4gICAgICAgICAgICAvLyBHRVQg7JqU7LKt66eMIOy6kOyLsSDqs6DroKRcbiAgICAgICAgICAgIGlmIChyZXEubWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgIC8vIO2KueyglSDqsr3roZzripQg7Ken7J2AIOy6kOyLnFxuICAgICAgICAgICAgICBpZiAocmVxLnBhdGguc3RhcnRzV2l0aChcIi9hcGkvc3RhdGljLWRhdGFcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNob3J0TGl2ZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlcS5wYXRoLnN0YXJ0c1dpdGgoXCIvYXBpL3Rlcm1zXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5tZWRpdW1MaXZlZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g6riw67O4OiDsupDsi5wg7JeG7J2MXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLm5vQ2FjaGU7XG5cbiAgICAgICAgICBjYXNlIFwic3NyXCI6XG4gICAgICAgICAgICAvLyBTU1Ig7Y6Y7J207KeAOiAxMOy0iCDsupDsi5xcbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuc3NyO1xuXG4gICAgICAgICAgY2FzZSBcImNzclwiOlxuICAgICAgICAgICAgLy8gQ1NSIGZhbGxiYWNrIChpbmRleC5odG1sKTogMeu2hCDsupDsi5xcbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuc2hvcnRMaXZlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLm5vQ2FjaGU7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY2FjaGU6IHtcbiAgICAgIGRlZmF1bHQ6IFwibWFpblwiLFxuICAgICAgc3RvcmVzOiB7XG4gICAgICAgIG1haW46IHN0b3JlKCkudXNlTDFMYXllcihjYWNoZURyaXZlcnMubWVtb3J5KHsgbWF4U2l6ZTogXCI1MG1iXCIgfSkpLFxuICAgICAgfSxcbiAgICAgIHR0bDogXCI1bVwiLFxuICAgICAgcHJlZml4OiBcIlwiLFxuICAgIH0sXG4gICAgbGlmZWN5Y2xlOiB7XG4gICAgICBvblN0YXJ0OiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZyA9IGdldExvZ2dlcihbXCJxZ3JpZFwiLCBcInN0YXJ0dXBcIl0pO1xuXG4gICAgICAgIC8vIGRpc3BhdGNoZXIg6rCAIOyDneyEseyekOyXkOyEnCDsm4zsu6Qg7ISk7KCV7J2EIOydveycvOuvgOuhnCDqt7gg7KCE7JeQIOyYrOugpOyVvCDtlZzri6QuXG4gICAgICAgIGF3YWl0IGxvYWRTZXR0aW5ncygpO1xuICAgICAgICAvLyDrn7Dtg4DsnoQg7ISk7KCVIOyGjOu5hOyekOulvCDsg4HsnIQg6rOE7Li17JeQ7IScIOyXsOqysO2VtCBzZXR0aW5nIOuqqOuTiOydtCBxZ3JpZCDrpbwg7Jet7LC47KGw7ZWY7KeAIOyViuqyjCDtlZzri6QuXG4gICAgICAgIHNldFNldHRpbmdDaGFuZ2VIYW5kbGVyKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAoa2V5ID09PSBcInNsYWNrLmV4cGlyeVJlbWluZGVyTWludXRlc1wiIHx8IGtleSA9PT0gXCJzbGFjay5yZW1pbmRlcnNFbmFibGVkXCIpIHtcbiAgICAgICAgICAgIHJlc2NoZWR1bGVFeHBpcmVkVG9rZW5SZW1pbmRlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHRyaWdnZXJSZWFkeSA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZW5zdXJlVG9rZW5zVHJpZ2dlcihjb25uQ29uZmlnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRyaWdnZXJSZWFkeSA9IGZhbHNlO1xuICAgICAgICAgIGxvZy53YXJuKGB0cmlnZ2VyIHNldHVwIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSBuZXcgVG9rZW5TdWJzY3JpYmVyKGNvbm5Db25maWcsIFFncmlkRGlzcGF0Y2hlcik7XG4gICAgICAgIFFncmlkRGlzcGF0Y2hlci5zdWJzY3JpYmVyID0gc3Vic2NyaWJlcjtcblxuICAgICAgICBjb25zdCBzdGFydGVkID0gYXdhaXQgc3Vic2NyaWJlci5zdGFydCgpO1xuXG4gICAgICAgIC8vIOq4sOuPmSDsg4Htg5zrpbwg64Ko6ri064ukIOKAlCBIVFRQIOuKlCDsnbTrr7gg7Je066CkIOyeiOyWtOyEnCwg7KSA67mEIOyghCDsmpTssq3snbQgXCLsnqDsi5wg7ZuEIOuQmOuKlOyngFwiXG4gICAgICAgIC8vIFwi7J6s7Iuc64+E7ZW064+EIOyViCDrkJjripTsp4BcIuulvCDqtazrtoTtlbQg7J2R64u17ZW07JW8IO2VnOuLpCg1MDMgdnMgNTAwKS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBvcGVuYWlEaXNwYXRjaGVyID0gbmV3IE9wZW5BSURpc3BhdGNoZXIoKTtcbiAgICAgICAgICBhd2FpdCBvcGVuYWlEaXNwYXRjaGVyLnN0YXJ0KCk7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXIgPSBvcGVuYWlEaXNwYXRjaGVyO1xuICAgICAgICAgIFFncmlkRGlzcGF0Y2hlci5zdGFydHVwU3RhdGUub3BlbmFpID0gXCJyZWFkeVwiO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLnN0YXJ0dXBTdGF0ZS5vcGVuYWkgPSBcImZhaWxlZFwiO1xuICAgICAgICAgIGxvZy53YXJuKGBvcGVuYWkgZGlzcGF0Y2hlciBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFudGhyb3BpY0Rpc3BhdGNoZXIgPSBuZXcgQW50aHJvcGljRGlzcGF0Y2hlcigpO1xuICAgICAgICAgIGF3YWl0IGFudGhyb3BpY0Rpc3BhdGNoZXIuc3RhcnQoKTtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIuYW50aHJvcGljRGlzcGF0Y2hlciA9IGFudGhyb3BpY0Rpc3BhdGNoZXI7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLnN0YXJ0dXBTdGF0ZS5hbnRocm9waWMgPSBcInJlYWR5XCI7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIuc3RhcnR1cFN0YXRlLmFudGhyb3BpYyA9IFwiZmFpbGVkXCI7XG4gICAgICAgICAgbG9nLndhcm4oYGFudGhyb3BpYyBkaXNwYXRjaGVyIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0RXhwaXJlZFRva2VuUmVtaW5kZXIoKTtcblxuICAgICAgICBjb25zdCBhbnRocm9waWNDb3VudCA9IFFncmlkRGlzcGF0Y2hlci5hbnRocm9waWNEaXNwYXRjaGVyPy50b2tlbkNvdW50ID8/IDA7XG4gICAgICAgIGNvbnN0IG9wZW5haVJlYWR5ID0gUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LnJlYWR5V29ya2VyQ291bnQgPz8gMDtcbiAgICAgICAgY29uc3Qgb3BlbmFpVG90YWwgPSBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcj8ud29ya2VyQ291bnQgPz8gMDtcblxuICAgICAgICBsb2cuaW5mbyhgbGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH1gKTtcbiAgICAgICAgbG9nLmluZm8oYGFudGhyb3BpYzogJHthbnRocm9waWNDb3VudH0gdG9rZW5zIHJlYWR5YCk7XG4gICAgICAgIGxvZy5pbmZvKGBvcGVuYWk6ICR7b3BlbmFpUmVhZHl9LyR7b3BlbmFpVG90YWx9IHRva2VucyByZWFkeWApO1xuICAgICAgICBsb2cuaW5mbyhcbiAgICAgICAgICBgc3Vic2NyaWJlcjogJHtzdGFydGVkID8gXCJMSVNURU4gYWN0aXZlXCIgOiBcImRlZ3JhZGVkXCJ9JHt0cmlnZ2VyUmVhZHkgPyBcIlwiIDogXCIsIHRyaWdnZXIgZmFpbGVkXCJ9YCxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBvblNodXRkb3duOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZyA9IGdldExvZ2dlcihbXCJxZ3JpZFwiLCBcInN0YXJ0dXBcIl0pO1xuICAgICAgICBzdG9wRXhwaXJlZFRva2VuUmVtaW5kZXIoKTtcbiAgICAgICAgc2V0U2V0dGluZ0NoYW5nZUhhbmRsZXIobnVsbCk7XG4gICAgICAgIGlmIChRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcikge1xuICAgICAgICAgIGF3YWl0IFFncmlkRGlzcGF0Y2hlci5vcGVuYWlEaXNwYXRjaGVyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXIpIHtcbiAgICAgICAgICBhd2FpdCBRZ3JpZERpc3BhdGNoZXIuYW50aHJvcGljRGlzcGF0Y2hlci5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFFncmlkRGlzcGF0Y2hlci5zdWJzY3JpYmVyKSB7XG4gICAgICAgICAgYXdhaXQgUWdyaWREaXNwYXRjaGVyLnN1YnNjcmliZXIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGxvZy5pbmZvKFwiZ3JhY2VmdWwgc2h1dGRvd25cIik7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogKGVycm9yLCBfcmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgaGFuZGxlU2VydmVyRXJyb3IoZXJyb3IsIHJlcGx5KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLE1BQU0sT0FBTyxRQUFRLElBQUksUUFBUTtBQUNqQyxNQUFNLE9BQU8sT0FBTyxRQUFRLElBQUksUUFBUSxLQUFLO0FBRTdDLE1BQU0sYUFBYTtDQUNqQixNQUFNLFFBQVEsSUFBSSxrQkFBa0I7Q0FDcEMsTUFBTSxPQUFPLFFBQVEsSUFBSSxrQkFBa0IsSUFBSTtDQUMvQyxNQUFNLFFBQVEsSUFBSSxrQkFBa0I7Q0FDcEMsVUFBVSxRQUFRLElBQUksc0JBQXNCO0NBQzVDLFVBQVUsUUFBUSxJQUFJLGtCQUFrQjtBQUMxQztBQUVBLElBQUEsd0JBQWUsYUFBYTtDQUMxQixhQUFhLFFBQVEsSUFBSSxnQkFBZ0I7Q0FDekMsVUFBVSxFQUNSLGdCQUFnQixFQUNkLFlBQVk7RUFDVixHQUFHO0VBQ0gsV0FBVztFQUNYLDZCQUE2QjtDQUMvQixFQUNGLEVBQ0Y7Q0FDQSxLQUFLO0VBQ0gsS0FBSztFQUNMLFVBQVU7RUFDVixPQUFPLEVBQ0wsUUFBUSxPQUNWO0NBQ0Y7Q0FDQSxNQUFNO0VBQ0osZUFBZTtFQUNmLGtCQUFrQixDQUFDLE1BQU0sSUFBSTtDQUMvQjtDQUNBLE1BQU0sRUFDSixTQUFTLENBQUMsS0FBSyxFQUNqQjtDQUNBLE1BQU07RUFDSixVQUFVO0VBQ1YsWUFBWTtFQUNaLFdBQVcsRUFBRSxTQUFTLEtBQUs7Q0FDN0I7Q0FDQSxTQUFTO0VBQ1AsT0FBTztHQUNMLFNBQVMsZUFBZSxFQUN0QixX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
|