@cartanova/qgrid-cli 2.6.6 → 2.6.8

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.
Files changed (87) hide show
  1. package/bundle/dist/application/monit/monit.frame.js +2 -2
  2. package/bundle/dist/application/qgrid/expired-token-reminder.js +37 -16
  3. package/bundle/dist/application/qgrid/oauth.js +1 -1
  4. package/bundle/dist/application/qgrid/qgrid.frame.js +3 -3
  5. package/bundle/dist/application/qgrid/slack-user-map.js +5 -14
  6. package/bundle/dist/application/qgrid/token-death.js +3 -2
  7. package/bundle/dist/application/qgrid/tool-emulation.js +1 -1
  8. package/bundle/dist/application/queries.generated.js +8 -2
  9. package/bundle/dist/application/request-log/request-log.model.js +2 -2
  10. package/bundle/dist/application/request-log-step/request-log-step.model.js +1 -1
  11. package/bundle/dist/application/setting/setting.model.js +236 -0
  12. package/bundle/dist/application/setting/setting.schema.js +157 -0
  13. package/bundle/dist/application/setting/setting.store.js +66 -0
  14. package/bundle/dist/application/setting/setting.types.js +48 -0
  15. package/bundle/dist/application/sonamu.generated.js +32 -2
  16. package/bundle/dist/application/sonamu.generated.sso.js +12 -2
  17. package/bundle/dist/application/token/token.model.js +1 -1
  18. package/bundle/dist/i18n/en.js +3 -1
  19. package/bundle/dist/i18n/ko.js +3 -1
  20. package/bundle/dist/i18n/sd.generated.js +9 -1
  21. package/bundle/dist/migrations/20260808194708_create__settings.js +24 -0
  22. package/bundle/dist/sonamu.config.js +8 -2
  23. package/bundle/dist/utils/providers/openai/openai-worker-pool-config.js +21 -6
  24. package/bundle/dist/utils/quiet-hours.js +43 -0
  25. package/bundle/dist/utils/slack-notify.js +12 -5
  26. package/bundle/src/application/qgrid/expired-token-reminder.test.ts +135 -13
  27. package/bundle/src/application/qgrid/expired-token-reminder.ts +60 -21
  28. package/bundle/src/application/qgrid/slack-user-map.test.ts +23 -0
  29. package/bundle/src/application/qgrid/slack-user-map.ts +4 -14
  30. package/bundle/src/application/qgrid/token-death.ts +2 -0
  31. package/bundle/src/application/queries.generated.ts +21 -1
  32. package/bundle/src/application/setting/setting.entity.json +59 -0
  33. package/bundle/src/application/setting/setting.model.ts +263 -0
  34. package/bundle/src/application/setting/setting.schema.test.ts +80 -0
  35. package/bundle/src/application/setting/setting.schema.ts +174 -0
  36. package/bundle/src/application/setting/setting.store.test.ts +87 -0
  37. package/bundle/src/application/setting/setting.store.ts +85 -0
  38. package/bundle/src/application/setting/setting.types.ts +51 -0
  39. package/bundle/src/application/sonamu.generated.http +47 -0
  40. package/bundle/src/application/sonamu.generated.sso.ts +21 -0
  41. package/bundle/src/application/sonamu.generated.ts +51 -0
  42. package/bundle/src/i18n/en.ts +2 -0
  43. package/bundle/src/i18n/ko.ts +2 -0
  44. package/bundle/src/i18n/sd.generated.ts +8 -0
  45. package/bundle/src/migrations/20260808194708_create__settings.ts +19 -0
  46. package/bundle/src/sonamu.config.ts +10 -0
  47. package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +12 -0
  48. package/bundle/src/utils/providers/openai/openai-worker-pool-config.ts +43 -5
  49. package/bundle/src/utils/quiet-hours.ts +40 -0
  50. package/bundle/src/utils/slack-notify.test.ts +88 -20
  51. package/bundle/src/utils/slack-notify.ts +24 -4
  52. package/bundle/web-dist/client/assets/index-7SZyiqAx.css +1 -0
  53. package/bundle/web-dist/client/assets/index-DrsXE13r.js +78 -0
  54. package/bundle/web-dist/client/assets/{logs-CvmI4KuC.js → logs-e4-6aYnO.js} +1 -1
  55. package/bundle/web-dist/client/assets/{monit-CUueNzoL.js → monit-eOAlYTK9.js} +1 -1
  56. package/bundle/web-dist/client/assets/plus-p4vtg6LN.js +1 -0
  57. package/bundle/web-dist/client/assets/{routes-CAfjRsMY.js → routes-Qie4ogtJ.js} +2 -2
  58. package/bundle/web-dist/client/assets/{sd.generated-DYdwSB2I.js → sd.generated-Bwa7rses.js} +1 -1
  59. package/bundle/web-dist/client/assets/services.generated-T4ctVcia.js +1 -0
  60. package/bundle/web-dist/client/assets/settings-CTVZpAAg.js +1 -0
  61. package/bundle/web-dist/client/assets/{show-C5vKpp5z.js → show-60iOOM-e.js} +1 -1
  62. package/bundle/web-dist/client/assets/tokens-DdDccGlX.js +1 -0
  63. package/bundle/web-dist/client/assets/{use-oauth-login-flow-B3o4CXDW.js → use-oauth-login-flow-0ZGq74bZ.js} +1 -1
  64. package/bundle/web-dist/client/index.html +3 -3
  65. package/bundle/web-dist/server/assets/{lazyRouteComponent-BaZaveNc.js → lazyRouteComponent-Ws7I6fL-.js} +2 -1
  66. package/bundle/web-dist/server/assets/{logs-DMOw3SjD.js → logs-DmkzGxGU.js} +4 -4
  67. package/bundle/web-dist/server/assets/{monit-UmcqHroX.js → monit-DyKLJX4s.js} +3 -2
  68. package/bundle/web-dist/server/assets/plus-BISXNqRU.js +19 -0
  69. package/bundle/web-dist/server/assets/react-dom-D7duWOwf.js +462 -0
  70. package/bundle/web-dist/server/assets/{routes-BfoQmYud.js → routes-g62E9xmC.js} +5 -4
  71. package/bundle/web-dist/server/assets/{sd.generated-B0xqnHEo.js → sd.generated-LO-h1_16.js} +13 -461
  72. package/bundle/web-dist/server/assets/{services.generated-DqAKskAS.js → services.generated-DADr9OGH.js} +111 -2
  73. package/bundle/web-dist/server/assets/settings-CMJKayff.js +332 -0
  74. package/bundle/web-dist/server/assets/{show-C-oSdzHX.js → show-BGAiCPGq.js} +4 -4
  75. package/bundle/web-dist/server/assets/{tokens-Dkd_uXEk.js → tokens-DmhIfVct.js} +6 -21
  76. package/bundle/web-dist/server/assets/{use-oauth-login-flow-YM1nsd-H.js → use-oauth-login-flow-B6MY65IN.js} +2 -2
  77. package/bundle/web-dist/server/entry-server.generated.js +54 -18
  78. package/package.json +1 -1
  79. package/skills/qgrid/references/cli-env-and-server-boot.md +14 -2
  80. package/skills/qgrid/references/openai-codex-runtime.md +1 -1
  81. package/skills/qgrid/references/sonamu-api-web-flow.md +2 -0
  82. package/skills/qgrid/references/token-auth-quota-lifecycle.md +2 -1
  83. package/bundle/web-dist/client/assets/index-B4GlN1IX.css +0 -1
  84. package/bundle/web-dist/client/assets/index-qs8K8bOv.js +0 -78
  85. package/bundle/web-dist/client/assets/services.generated-BsAvotjG.js +0 -1
  86. package/bundle/web-dist/client/assets/tokens-C9KKP2Yq.js +0 -1
  87. /package/bundle/web-dist/server/assets/{cost-CSH_t17I.js → cost-DzjfVtUr.js} +0 -0
@@ -153,6 +153,16 @@ const requestLogStepLoaderQueries = {
153
153
  T: [],
154
154
  I: []
155
155
  };
156
+ const settingSubsetQueries = { A: (qbWrapper) => {
157
+ return qbWrapper.from("settings").select({
158
+ id: "settings.id",
159
+ created_at: "settings.created_at",
160
+ key: "settings.key",
161
+ value: "settings.value",
162
+ updated_at: "settings.updated_at"
163
+ });
164
+ } };
165
+ const settingLoaderQueries = { A: [] };
156
166
  const tokenSubsetQueries = { A: (qbWrapper) => {
157
167
  return qbWrapper.from("tokens").select({
158
168
  id: "tokens.id",
@@ -168,6 +178,6 @@ const tokenSubsetQueries = { A: (qbWrapper) => {
168
178
  } };
169
179
  const tokenLoaderQueries = { A: [] };
170
180
  //#endregion
171
- export { requestLogLoaderQueries, requestLogStepLoaderQueries, requestLogStepSubsetQueries, requestLogSubsetQueries, tokenLoaderQueries, tokenSubsetQueries };
181
+ export { requestLogLoaderQueries, requestLogStepLoaderQueries, requestLogStepSubsetQueries, requestLogSubsetQueries, settingLoaderQueries, settingSubsetQueries, tokenLoaderQueries, tokenSubsetQueries };
172
182
 
173
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBQdXJpV3JhcHBlciwgdHlwZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyB9IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5LFxuICB0eXBlIFRva2VuU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dCYXNlU2NoZW1hLFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYSxcbiAgdHlwZSBUb2tlbkJhc2VTY2hlbWEsXG59IGZyb20gXCIuL3NvbmFtdS5nZW5lcmF0ZWRcIjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCByZXF1ZXN0TG9nU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ3MuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHRva2VuX25hbWU6IFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIixcbiAgICAgIHByb2plY3RfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucHJvamVjdF9uYW1lXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9ncy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgdXNlcl9wcm9tcHQ6IFwicmVxdWVzdF9sb2dzLnVzZXJfcHJvbXB0XCIsXG4gICAgICBzeXN0ZW1fcHJvbXB0OiBcInJlcXVlc3RfbG9ncy5zeXN0ZW1fcHJvbXB0XCIsXG4gICAgICByZXNwb25zZTogXCJyZXF1ZXN0X2xvZ3MucmVzcG9uc2VcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9ncy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ3MudHRmdF9tc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICAgIGltYWdlX2Nvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X3VzZFwiLFxuICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfbWV0aG9kXCIsXG4gICAgICBlZmZvcnQ6IFwicmVxdWVzdF9sb2dzLmVmZm9ydFwiLFxuICAgICAgaGlzdG9yeTogXCJyZXF1ZXN0X2xvZ3MuaGlzdG9yeVwiLFxuICAgICAgdG9vbHM6IFwicmVxdWVzdF9sb2dzLnRvb2xzXCIsXG4gICAgICBzdGF0dXM6IFwicmVxdWVzdF9sb2dzLnN0YXR1c1wiLFxuICAgICAgZXJyb3JfbWVzc2FnZTogXCJyZXF1ZXN0X2xvZ3MuZXJyb3JfbWVzc2FnZVwiLFxuICAgICAgdG9vbF9jYWxsX2NvdW50OiBcInJlcXVlc3RfbG9ncy50b29sX2NhbGxfY291bnRcIixcbiAgICAgIGlzX2ltYWdlX2dlbmVyYXRpb246IFwicmVxdWVzdF9sb2dzLmlzX2ltYWdlX2dlbmVyYXRpb25cIixcbiAgICB9KTtcbiAgfSxcbiAgUDogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ3MuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHRva2VuX25hbWU6IFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIixcbiAgICAgIHByb2plY3RfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucHJvamVjdF9uYW1lXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9ncy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9ncy50dGZ0X21zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9ncy5jb3N0X3NvdXJjZVwiLFxuICAgICAgaW1hZ2VfY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfdXNkXCIsXG4gICAgICBpbWFnZV9jb3N0X21ldGhvZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF9tZXRob2RcIixcbiAgICAgIGVmZm9ydDogXCJyZXF1ZXN0X2xvZ3MuZWZmb3J0XCIsXG4gICAgICBzdGF0dXM6IFwicmVxdWVzdF9sb2dzLnN0YXR1c1wiLFxuICAgICAgdG9vbF9jYWxsX2NvdW50OiBcInJlcXVlc3RfbG9ncy50b29sX2NhbGxfY291bnRcIixcbiAgICAgIGlzX2ltYWdlX2dlbmVyYXRpb246IFwicmVxdWVzdF9sb2dzLmlzX2ltYWdlX2dlbmVyYXRpb25cIixcbiAgICB9KTtcbiAgfSxcbiAgQzogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ3MuaWRcIixcbiAgICAgIHRva2VuX25hbWU6IFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGNvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dzLmNvc3Rfc291cmNlXCIsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyBMb2FkZXJRdWVyeTogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dMb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbiAgUDogW10sXG4gIEM6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8UmVxdWVzdExvZ1N1YnNldEtleT47XG5cbi8vIFN1YnNldFF1ZXJ5OiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdGVwU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHN0ZXBfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLFxuICAgICAgdHlwZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50eXBlXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCIsXG4gICAgICBmYWxsYmFja19jb3VudDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3Rfc291cmNlXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50dGZ0X21zXCIsXG4gICAgICBmaW5pc2hfcmVhc29uOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZpbmlzaF9yZWFzb25cIixcbiAgICAgIHJlYXNvbmluZ190ZXh0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlYXNvbmluZ190ZXh0XCIsXG4gICAgICByZWFzb25pbmdfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlYXNvbmluZ190b2tlbnNcIixcbiAgICAgIHRvb2xfY2FsbF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2NhbGxfaW5kZXhcIixcbiAgICAgIHRvb2xfY2FsbF9pZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2NhbGxfaWRcIixcbiAgICAgIHRvb2xfbmFtZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX25hbWVcIixcbiAgICAgIHRvb2xfYXJnczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2FyZ3NcIixcbiAgICAgIHRvb2xfcmVzdWx0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfcmVzdWx0XCIsXG4gICAgICB0b29sX2R1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfZHVyYXRpb25fbXNcIixcbiAgICAgIGVycm9yOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmVycm9yXCIsXG4gICAgfSk7XG4gIH0sXG4gIFQ6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInJlcXVlc3RfbG9nX3N0ZXBzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jcmVhdGVkX2F0XCIsXG4gICAgICBzdGVwX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnN0ZXBfaW5kZXhcIixcbiAgICAgIHR5cGU6IFwicmVxdWVzdF9sb2dfc3RlcHMudHlwZVwiLFxuICAgICAgbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuZmFsbGJhY2tfY291bnRcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMub3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGNvc3RfdXNkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3NvdXJjZVwiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMuZHVyYXRpb25fbXNcIixcbiAgICAgIHR0ZnRfbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudHRmdF9tc1wiLFxuICAgICAgZmluaXNoX3JlYXNvbjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5maW5pc2hfcmVhc29uXCIsXG4gICAgICByZWFzb25pbmdfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlYXNvbmluZ190b2tlbnNcIixcbiAgICAgIHRvb2xfY2FsbF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2NhbGxfaW5kZXhcIixcbiAgICAgIHRvb2xfY2FsbF9pZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2NhbGxfaWRcIixcbiAgICAgIHRvb2xfbmFtZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX25hbWVcIixcbiAgICAgIHRvb2xfZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgICAgZXJyb3I6IFwicmVxdWVzdF9sb2dfc3RlcHMuZXJyb3JcIixcbiAgICB9KTtcbiAgfSxcbiAgSTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsXG4gICAgICB0b29sX2FyZ3M6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9hcmdzXCIsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyBMb2FkZXJRdWVyeTogUmVxdWVzdExvZ1N0ZXBcbmV4cG9ydCBjb25zdCByZXF1ZXN0TG9nU3RlcExvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxuICBUOiBbXSxcbiAgSTogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxSZXF1ZXN0TG9nU3RlcFN1YnNldEtleT47XG5cbi8vIFN1YnNldFF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwidG9rZW5zXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJ0b2tlbnMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwidG9rZW5zLmNyZWF0ZWRfYXRcIixcbiAgICAgIHByb3ZpZGVyOiBcInRva2Vucy5wcm92aWRlclwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwidG9rZW5zLmNyZWRlbnRpYWxzXCIsXG4gICAgICBuYW1lOiBcInRva2Vucy5uYW1lXCIsXG4gICAgICBhY3RpdmU6IFwidG9rZW5zLmFjdGl2ZVwiLFxuICAgICAgb3JkOiBcInRva2Vucy5vcmRcIixcbiAgICAgIHF1b3RhX3RocmVzaG9sZDogXCJ0b2tlbnMucXVvdGFfdGhyZXNob2xkXCIsXG4gICAgICB3ZWlnaHQ6IFwidG9rZW5zLndlaWdodFwiLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gTG9hZGVyUXVlcnk6IFRva2VuXG5leHBvcnQgY29uc3QgdG9rZW5Mb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFRva2VuU3Vic2V0S2V5PjtcblxuLy8gRm9yZWlnbktleSBUeXBlc1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBGb3JlaWduS2V5cyA9IFwicmVxdWVzdF9sb2dfaWRcIjtcblxuLy8gRGF0YWJhc2VTY2hlbWFcbmRlY2xhcmUgbW9kdWxlIFwic29uYW11XCIge1xuICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU2NoZW1hRXh0ZW5kIHtcbiAgICByZXF1ZXN0X2xvZ3M6IFJlcXVlc3RMb2dCYXNlU2NoZW1hO1xuICAgIHJlcXVlc3RfbG9nX3N0ZXBzOiBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWE7XG4gICAgdG9rZW5zOiBUb2tlbkJhc2VTY2hlbWE7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlRm9yZWlnbktleXMge1xuICAgIHJlcXVlc3RfbG9nX3N0ZXBzOiBSZXF1ZXN0TG9nU3RlcEZvcmVpZ25LZXlzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFpQkEsTUFBYSwwQkFBMEI7Q0FDckMsSUFBSSxjQUFpRDtFQUNuRCxPQUFPLFVBQVUsS0FBSyxjQUFjLENBQUMsQ0FBQyxPQUFPO0dBQzNDLElBQUk7R0FDSixZQUFZO0dBQ1osWUFBWTtHQUNaLGNBQWM7R0FDZCxZQUFZO0dBQ1osc0JBQXNCO0dBQ3RCLGdCQUFnQjtHQUNoQixhQUFhO0dBQ2IsZUFBZTtHQUNmLFVBQVU7R0FDVixjQUFjO0dBQ2QsZUFBZTtHQUNmLG1CQUFtQjtHQUNuQix1QkFBdUI7R0FDdkIsMEJBQTBCO0dBQzFCLDBCQUEwQjtHQUMxQixhQUFhO0dBQ2IsU0FBUztHQUNULFVBQVU7R0FDVixhQUFhO0dBQ2IsZ0JBQWdCO0dBQ2hCLG1CQUFtQjtHQUNuQixRQUFRO0dBQ1IsU0FBUztHQUNULE9BQU87R0FDUCxRQUFRO0dBQ1IsZUFBZTtHQUNmLGlCQUFpQjtHQUNqQixxQkFBcUI7RUFDdkIsQ0FBQztDQUNIO0NBQ0EsSUFBSSxjQUFpRDtFQUNuRCxPQUFPLFVBQVUsS0FBSyxjQUFjLENBQUMsQ0FBQyxPQUFPO0dBQzNDLElBQUk7R0FDSixZQUFZO0dBQ1osWUFBWTtHQUNaLGNBQWM7R0FDZCxZQUFZO0dBQ1osc0JBQXNCO0dBQ3RCLGdCQUFnQjtHQUNoQixjQUFjO0dBQ2QsZUFBZTtHQUNmLG1CQUFtQjtHQUNuQix1QkFBdUI7R0FD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
183
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBQdXJpV3JhcHBlciwgdHlwZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyB9IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5LFxuICB0eXBlIFNldHRpbmdTdWJzZXRLZXksXG4gIHR5cGUgVG9rZW5TdWJzZXRLZXksXG4gIHR5cGUgUmVxdWVzdExvZ0Jhc2VTY2hlbWEsXG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBCYXNlU2NoZW1hLFxuICB0eXBlIFNldHRpbmdCYXNlU2NoZW1hLFxuICB0eXBlIFRva2VuQmFzZVNjaGVtYSxcbn0gZnJvbSBcIi4vc29uYW11LmdlbmVyYXRlZFwiO1xuXG4vLyBTdWJzZXRRdWVyeTogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ3MuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgcHJvamVjdF9uYW1lOiBcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICB1c2VyX3Byb21wdDogXCJyZXF1ZXN0X2xvZ3MudXNlcl9wcm9tcHRcIixcbiAgICAgIHN5c3RlbV9wcm9tcHQ6IFwicmVxdWVzdF9sb2dzLnN5c3RlbV9wcm9tcHRcIixcbiAgICAgIHJlc3BvbnNlOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9ncy50dGZ0X21zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9ncy5jb3N0X3NvdXJjZVwiLFxuICAgICAgaW1hZ2VfY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfdXNkXCIsXG4gICAgICBpbWFnZV9jb3N0X21ldGhvZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF9tZXRob2RcIixcbiAgICAgIGVmZm9ydDogXCJyZXF1ZXN0X2xvZ3MuZWZmb3J0XCIsXG4gICAgICBoaXN0b3J5OiBcInJlcXVlc3RfbG9ncy5oaXN0b3J5XCIsXG4gICAgICB0b29sczogXCJyZXF1ZXN0X2xvZ3MudG9vbHNcIixcbiAgICAgIHN0YXR1czogXCJyZXF1ZXN0X2xvZ3Muc3RhdHVzXCIsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBcInJlcXVlc3RfbG9ncy5lcnJvcl9tZXNzYWdlXCIsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IFwicmVxdWVzdF9sb2dzLnRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogXCJyZXF1ZXN0X2xvZ3MuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgIH0pO1xuICB9LFxuICBQOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ3MuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgcHJvamVjdF9uYW1lOiBcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3Mub3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ3MuZHVyYXRpb25fbXNcIixcbiAgICAgIHR0ZnRfbXM6IFwicmVxdWVzdF9sb2dzLnR0ZnRfbXNcIixcbiAgICAgIGNvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dzLmNvc3Rfc291cmNlXCIsXG4gICAgICBpbWFnZV9jb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF91c2RcIixcbiAgICAgIGltYWdlX2Nvc3RfbWV0aG9kOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X21ldGhvZFwiLFxuICAgICAgZWZmb3J0OiBcInJlcXVlc3RfbG9ncy5lZmZvcnRcIixcbiAgICAgIHN0YXR1czogXCJyZXF1ZXN0X2xvZ3Muc3RhdHVzXCIsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IFwicmVxdWVzdF9sb2dzLnRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogXCJyZXF1ZXN0X2xvZ3MuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgIH0pO1xuICB9LFxuICBDOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MubW9kZWxfbmFtZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxuICBQOiBbXSxcbiAgQzogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxSZXF1ZXN0TG9nU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuY3JlYXRlZF9hdFwiLFxuICAgICAgc3RlcF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5zdGVwX2luZGV4XCIsXG4gICAgICB0eXBlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR5cGVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMubW9kZWxfbmFtZVwiLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF9zb3VyY2VcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR0ZnRfbXNcIixcbiAgICAgIGZpbmlzaF9yZWFzb246IFwicmVxdWVzdF9sb2dfc3RlcHMuZmluaXNoX3JlYXNvblwiLFxuICAgICAgcmVhc29uaW5nX3RleHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3RleHRcIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9hcmdzOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfYXJnc1wiLFxuICAgICAgdG9vbF9yZXN1bHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9yZXN1bHRcIixcbiAgICAgIHRvb2xfZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgICAgZXJyb3I6IFwicmVxdWVzdF9sb2dfc3RlcHMuZXJyb3JcIixcbiAgICB9KTtcbiAgfSxcbiAgVDogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHN0ZXBfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLFxuICAgICAgdHlwZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50eXBlXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCIsXG4gICAgICBmYWxsYmFja19jb3VudDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3Rfc291cmNlXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50dGZ0X21zXCIsXG4gICAgICBmaW5pc2hfcmVhc29uOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZpbmlzaF9yZWFzb25cIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9kdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2R1cmF0aW9uX21zXCIsXG4gICAgICBlcnJvcjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5lcnJvclwiLFxuICAgIH0pO1xuICB9LFxuICBJOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIHRvb2xfYXJnczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2FyZ3NcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdGVwTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG4gIFQ6IFtdLFxuICBJOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBzZXR0aW5nU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwic2V0dGluZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInNldHRpbmdzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInNldHRpbmdzLmNyZWF0ZWRfYXRcIixcbiAgICAgIGtleTogXCJzZXR0aW5ncy5rZXlcIixcbiAgICAgIHZhbHVlOiBcInNldHRpbmdzLnZhbHVlXCIsXG4gICAgICB1cGRhdGVkX2F0OiBcInNldHRpbmdzLnVwZGF0ZWRfYXRcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBTZXR0aW5nXG5leHBvcnQgY29uc3Qgc2V0dGluZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8U2V0dGluZ1N1YnNldEtleT47XG5cbi8vIFN1YnNldFF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwidG9rZW5zXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJ0b2tlbnMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwidG9rZW5zLmNyZWF0ZWRfYXRcIixcbiAgICAgIHByb3ZpZGVyOiBcInRva2Vucy5wcm92aWRlclwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwidG9rZW5zLmNyZWRlbnRpYWxzXCIsXG4gICAgICBuYW1lOiBcInRva2Vucy5uYW1lXCIsXG4gICAgICBhY3RpdmU6IFwidG9rZW5zLmFjdGl2ZVwiLFxuICAgICAgb3JkOiBcInRva2Vucy5vcmRcIixcbiAgICAgIHF1b3RhX3RocmVzaG9sZDogXCJ0b2tlbnMucXVvdGFfdGhyZXNob2xkXCIsXG4gICAgICB3ZWlnaHQ6IFwidG9rZW5zLndlaWdodFwiLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gTG9hZGVyUXVlcnk6IFRva2VuXG5leHBvcnQgY29uc3QgdG9rZW5Mb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFRva2VuU3Vic2V0S2V5PjtcblxuLy8gRm9yZWlnbktleSBUeXBlc1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBGb3JlaWduS2V5cyA9IFwicmVxdWVzdF9sb2dfaWRcIjtcblxuLy8gRGF0YWJhc2VTY2hlbWFcbmRlY2xhcmUgbW9kdWxlIFwic29uYW11XCIge1xuICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU2NoZW1hRXh0ZW5kIHtcbiAgICByZXF1ZXN0X2xvZ3M6IFJlcXVlc3RMb2dCYXNlU2NoZW1hO1xuICAgIHJlcXVlc3RfbG9nX3N0ZXBzOiBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWE7XG4gICAgc2V0dGluZ3M6IFNldHRpbmdCYXNlU2NoZW1hO1xuICAgIHRva2VuczogVG9rZW5CYXNlU2NoZW1hO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUZvcmVpZ25LZXlzIHtcbiAgICByZXF1ZXN0X2xvZ19zdGVwczogUmVxdWVzdExvZ1N0ZXBGb3JlaWduS2V5cztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoi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
@@ -1,7 +1,7 @@
1
1
  import { SD } from "../../i18n/sd.generated.js";
2
+ import { tokenLoaderQueries, tokenSubsetQueries } from "../sonamu.generated.sso.js";
2
3
  import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorateMetadata.js";
3
4
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorate.js";
4
- import { tokenLoaderQueries, tokenSubsetQueries } from "../sonamu.generated.sso.js";
5
5
  import { BadRequestException, BaseModelClass, NotFoundException, api, asArray, exhaustive } from "sonamu";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  //#region src/application/token/token.model.ts
@@ -48,6 +48,8 @@ var en_default = {
48
48
  "error.internalServerError": "Internal server error",
49
49
  "error.notFound": "Not found",
50
50
  "error.serviceUnavailable": "Service unavailable",
51
+ "setting.invalidValue": (reason) => `Invalid setting value: ${reason}`,
52
+ "setting.unknownKey": (key) => `Unknown setting key ${key}`,
51
53
  "qgrid.dispatcherFailed": (provider) => `${provider} dispatcher failed to initialize`,
52
54
  "qgrid.dispatcherStarting": (provider) => `${provider} dispatcher is starting up. Please retry shortly`,
53
55
  "error.unauthorized": "Unauthorized",
@@ -61,4 +63,4 @@ var en_default = {
61
63
  //#endregion
62
64
  export { en_default as default };
63
65
 
64
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2kxOG4vZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1cmFsIH0gZnJvbSBcInNvbmFtdS9kaWN0XCI7XG5cbi8qKlxuICogUHJvamVjdCBFTiBEaWN0aW9uYXJ5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCJjb21tb24uYWxsXCI6IFwiQWxsXCIsXG4gIFwiY29tbW9uLmJhY2tUb0xpc3RcIjogXCJCYWNrIHRvIExpc3RcIixcbiAgXCJjb21tb24uY2FuY2VsXCI6IFwiQ2FuY2VsXCIsXG4gIFwiY29tbW9uLmNsb3NlXCI6IFwiQ2xvc2VcIixcbiAgXCJjb21tb24uY29uZmlybVwiOiBcIkNvbmZpcm1cIixcbiAgXCJjb21tb24uY3JlYXRlXCI6IFwiQ3JlYXRlXCIsXG4gIFwiY29tbW9uLmNyZWF0ZWRBdFwiOiBcIkNyZWF0ZWQgQXRcIixcbiAgXCJjb21tb24uZGVsZXRlXCI6IFwiRGVsZXRlXCIsXG4gIFwiY29tbW9uLmVkaXRcIjogXCJFZGl0XCIsXG4gIFwiY29tbW9uLmxvZ2luXCI6IFwiTG9naW5cIixcbiAgXCJjb21tb24ubG9nb3V0XCI6IFwiTG9nb3V0XCIsXG4gIFwiY29tbW9uLm1hbmFnZVwiOiBcIk1hbmFnZVwiLFxuICBcImNvbW1vbi5yZXN1bHRzXCI6IChjb3VudDogbnVtYmVyKSA9PlxuICAgIHBsdXJhbChjb3VudCwgeyBvbmU6IGAke2NvdW50fSByZXN1bHRgLCBvdGhlcjogYCR7Y291bnR9IHJlc3VsdHNgIH0pLFxuICBcImNvbW1vbi5zYXZlXCI6IFwiU2F2ZVwiLFxuICBcImNvbW1vbi5zZWFyY2hcIjogXCJTZWFyY2hcIixcbiAgXCJjb21tb24uc2VhcmNoUGxhY2Vob2xkZXJcIjogXCJTZWFyY2guLi5cIixcbiAgXCJjb21tb24uc2VhcmNoVHlwZVwiOiBcIlNlYXJjaCBUeXBlXCIsXG4gIFwiY29tbW9uLnNvcnRcIjogXCJTb3J0XCIsXG4gIFwiY29uZmlybS5kZWxldGVcIjogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlP1wiLFxuICBcImNvbmZpcm0uc2F2ZVwiOiBcIkRvIHlvdSB3YW50IHRvIHNhdmU/XCIsXG4gIFwiZGFzaGJvYXJkLmFkbWluTWVudVwiOiBcIkFkbWluIE1lbnVcIixcbiAgXCJkYXNoYm9hcmQuY3JlYXRlZEF0XCI6IFwiSm9pbmVkXCIsXG4gIFwiZGFzaGJvYXJkLmVtYWlsXCI6IFwiRW1haWxcIixcbiAgXCJkYXNoYm9hcmQubG9naW5SZXF1aXJlZFwiOiBcIlBsZWFzZSBsb2dpbiB0byBjb250aW51ZS5cIixcbiAgXCJkYXNoYm9hcmQubmFtZVwiOiBcIk5hbWVcIixcbiAgXCJkYXNoYm9hcmQucm9sZVwiOiBcIlJvbGVcIixcbiAgXCJkYXNoYm9hcmQudGl0bGVcIjogXCJBZG1pbiBEYXNoYm9hcmRcIixcbiAgXCJkYXNoYm9hcmQud2VsY29tZVwiOiBcIldlbGNvbWUhXCIsXG4gIFwiZGVsZXRlLmNvbmZpcm0uZGVzY3JpcHRpb25cIjpcbiAgICBcIlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuIFRoaXMgd2lsbCBwZXJtYW5lbnRseSBkZWxldGUgdGhpcyBpdGVtLlwiLFxuICBcImRlbGV0ZS5jb25maXJtLnRpdGxlXCI6IFwiQXJlIHlvdSBzdXJlP1wiLFxuICBcImVudGl0eS5jcmVhdGVcIjogKG5hbWU6IHN0cmluZykgPT4gYENyZWF0ZSAke25hbWV9YCxcbiAgXCJlbnRpdHkuZWRpdFwiOiAobmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKSA9PiBgRWRpdCAke25hbWV9ICgjJHtpZH0pYCxcbiAgXCJlbnRpdHkubGlzdFwiOiAobmFtZTogc3RyaW5nKSA9PiBgJHtuYW1lfSBMaXN0YCxcbiAgXCJlbnRpdHkubGlzdE1hbmFnZVwiOiAobmFtZTogc3RyaW5nKSA9PiBgTWFuYWdlICR7bmFtZX0gTGlzdGAsXG4gIFwiZXJyb3IuYWxyZWFkeVByb2Nlc3NlZFwiOiBcIkFscmVhZHkgcHJvY2Vzc2VkXCIsXG4gIFwiZXJyb3IuYmFkUmVxdWVzdFwiOiBcIkJhZCByZXF1ZXN0XCIsXG4gIFwiZXJyb3IuZHVwbGljYXRlUm93XCI6IFwiRHVwbGljYXRlIGRhdGFcIixcbiAgXCJlcnJvci5mb3JiaWRkZW5cIjogXCJGb3JiaWRkZW5cIixcbiAgXCJlcnJvci5pbnRlcm5hbFNlcnZlckVycm9yXCI6IFwiSW50ZXJuYWwgc2VydmVyIGVycm9yXCIsXG4gIFwiZXJyb3Iubm90Rm91bmRcIjogXCJOb3QgZm91bmRcIixcbiAgXCJlcnJvci5zZXJ2aWNlVW5hdmFpbGFibGVcIjogXCJTZXJ2aWNlIHVuYXZhaWxhYmxlXCIsXG4gIFwicWdyaWQuZGlzcGF0Y2hlckZhaWxlZFwiOiAocHJvdmlkZXI6IHN0cmluZykgPT4gYCR7cHJvdmlkZXJ9IGRpc3BhdGNoZXIgZmFpbGVkIHRvIGluaXRpYWxpemVgLFxuICBcInFncmlkLmRpc3BhdGNoZXJTdGFydGluZ1wiOiAocHJvdmlkZXI6IHN0cmluZykgPT5cbiAgICBgJHtwcm92aWRlcn0gZGlzcGF0Y2hlciBpcyBzdGFydGluZyB1cC4gUGxlYXNlIHJldHJ5IHNob3J0bHlgLFxuICBcImVycm9yLnVuYXV0aG9yaXplZFwiOiBcIlVuYXV0aG9yaXplZFwiLFxuICBub3RGb3VuZDogKG5hbWU6IHN0cmluZywgaWQ6IG51bWJlcikgPT4gYCR7bmFtZX0gSUQgJHtpZH0gbm90IGZvdW5kYCxcbiAgXCJ2YWxpZGF0aW9uLmVtYWlsXCI6IFwiSW52YWxpZCBlbWFpbCBmb3JtYXRcIixcbiAgXCJ2YWxpZGF0aW9uLm1heExlbmd0aFwiOiAoZmllbGQ6IHN0cmluZywgbWF4OiBudW1iZXIpID0+XG4gICAgYCR7ZmllbGR9IG11c3QgYmUgYXQgbW9zdCAke21heH0gY2hhcmFjdGVyc2AsXG4gIFwidmFsaWRhdGlvbi5taW5MZW5ndGhcIjogKGZpZWxkOiBzdHJpbmcsIG1pbjogbnVtYmVyKSA9PlxuICAgIGAke2ZpZWxkfSBtdXN0IGJlIGF0IGxlYXN0ICR7bWlufSBjaGFyYWN0ZXJzYCxcbiAgXCJ2YWxpZGF0aW9uLnJlcXVpcmVkXCI6IChmaWVsZDogc3RyaW5nKSA9PiBgJHtmaWVsZH0gaXMgcmVxdWlyZWRgLFxuICBcInZhbGlkYXRpb24udXJsXCI6IFwiSW52YWxpZCBVUkwgZm9ybWF0XCIsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUtBLElBQUEsYUFBZTtDQUNiLGNBQWM7Q0FDZCxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGdCQUFnQjtDQUNoQixrQkFBa0I7Q0FDbEIsaUJBQWlCO0NBQ2pCLG9CQUFvQjtDQUNwQixpQkFBaUI7Q0FDakIsZUFBZTtDQUNmLGdCQUFnQjtDQUNoQixpQkFBaUI7Q0FDakIsaUJBQWlCO0NBQ2pCLG1CQUFtQixVQUNqQixPQUFPLE9BQU87RUFBRSxLQUFLLEdBQUcsTUFBTTtFQUFVLE9BQU8sR0FBRyxNQUFNO0NBQVUsQ0FBQztDQUNyRSxlQUFlO0NBQ2YsaUJBQWlCO0NBQ2pCLDRCQUE0QjtDQUM1QixxQkFBcUI7Q0FDckIsZUFBZTtDQUNmLGtCQUFrQjtDQUNsQixnQkFBZ0I7Q0FDaEIsdUJBQXVCO0NBQ3ZCLHVCQUF1QjtDQUN2QixtQkFBbUI7Q0FDbkIsMkJBQTJCO0NBQzNCLGtCQUFrQjtDQUNsQixrQkFBa0I7Q0FDbEIsbUJBQW1CO0NBQ25CLHFCQUFxQjtDQUNyQiw4QkFDRTtDQUNGLHdCQUF3QjtDQUN4QixrQkFBa0IsU0FBaUIsVUFBVTtDQUM3QyxnQkFBZ0IsTUFBYyxPQUFlLFFBQVEsS0FBSyxLQUFLLEdBQUc7Q0FDbEUsZ0JBQWdCLFNBQWlCLEdBQUcsS0FBSztDQUN6QyxzQkFBc0IsU0FBaUIsVUFBVSxLQUFLO0NBQ3RELDBCQUEwQjtDQUMxQixvQkFBb0I7Q0FDcEIsc0JBQXNCO0NBQ3RCLG1CQUFtQjtDQUNuQiw2QkFBNkI7Q0FDN0Isa0JBQWtCO0NBQ2xCLDRCQUE0QjtDQUM1QiwyQkFBMkIsYUFBcUIsR0FBRyxTQUFTO0NBQzVELDZCQUE2QixhQUMzQixHQUFHLFNBQVM7Q0FDZCxzQkFBc0I7Q0FDdEIsV0FBVyxNQUFjLE9BQWUsR0FBRyxLQUFLLE1BQU0sR0FBRztDQUN6RCxvQkFBb0I7Q0FDcEIseUJBQXlCLE9BQWUsUUFDdEMsR0FBRyxNQUFNLG1CQUFtQixJQUFJO0NBQ2xDLHlCQUF5QixPQUFlLFFBQ3RDLEdBQUcsTUFBTSxvQkFBb0IsSUFBSTtDQUNuQyx3QkFBd0IsVUFBa0IsR0FBRyxNQUFNO0NBQ25ELGtCQUFrQjtBQUNwQiJ9
66
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2kxOG4vZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1cmFsIH0gZnJvbSBcInNvbmFtdS9kaWN0XCI7XG5cbi8qKlxuICogUHJvamVjdCBFTiBEaWN0aW9uYXJ5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCJjb21tb24uYWxsXCI6IFwiQWxsXCIsXG4gIFwiY29tbW9uLmJhY2tUb0xpc3RcIjogXCJCYWNrIHRvIExpc3RcIixcbiAgXCJjb21tb24uY2FuY2VsXCI6IFwiQ2FuY2VsXCIsXG4gIFwiY29tbW9uLmNsb3NlXCI6IFwiQ2xvc2VcIixcbiAgXCJjb21tb24uY29uZmlybVwiOiBcIkNvbmZpcm1cIixcbiAgXCJjb21tb24uY3JlYXRlXCI6IFwiQ3JlYXRlXCIsXG4gIFwiY29tbW9uLmNyZWF0ZWRBdFwiOiBcIkNyZWF0ZWQgQXRcIixcbiAgXCJjb21tb24uZGVsZXRlXCI6IFwiRGVsZXRlXCIsXG4gIFwiY29tbW9uLmVkaXRcIjogXCJFZGl0XCIsXG4gIFwiY29tbW9uLmxvZ2luXCI6IFwiTG9naW5cIixcbiAgXCJjb21tb24ubG9nb3V0XCI6IFwiTG9nb3V0XCIsXG4gIFwiY29tbW9uLm1hbmFnZVwiOiBcIk1hbmFnZVwiLFxuICBcImNvbW1vbi5yZXN1bHRzXCI6IChjb3VudDogbnVtYmVyKSA9PlxuICAgIHBsdXJhbChjb3VudCwgeyBvbmU6IGAke2NvdW50fSByZXN1bHRgLCBvdGhlcjogYCR7Y291bnR9IHJlc3VsdHNgIH0pLFxuICBcImNvbW1vbi5zYXZlXCI6IFwiU2F2ZVwiLFxuICBcImNvbW1vbi5zZWFyY2hcIjogXCJTZWFyY2hcIixcbiAgXCJjb21tb24uc2VhcmNoUGxhY2Vob2xkZXJcIjogXCJTZWFyY2guLi5cIixcbiAgXCJjb21tb24uc2VhcmNoVHlwZVwiOiBcIlNlYXJjaCBUeXBlXCIsXG4gIFwiY29tbW9uLnNvcnRcIjogXCJTb3J0XCIsXG4gIFwiY29uZmlybS5kZWxldGVcIjogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlP1wiLFxuICBcImNvbmZpcm0uc2F2ZVwiOiBcIkRvIHlvdSB3YW50IHRvIHNhdmU/XCIsXG4gIFwiZGFzaGJvYXJkLmFkbWluTWVudVwiOiBcIkFkbWluIE1lbnVcIixcbiAgXCJkYXNoYm9hcmQuY3JlYXRlZEF0XCI6IFwiSm9pbmVkXCIsXG4gIFwiZGFzaGJvYXJkLmVtYWlsXCI6IFwiRW1haWxcIixcbiAgXCJkYXNoYm9hcmQubG9naW5SZXF1aXJlZFwiOiBcIlBsZWFzZSBsb2dpbiB0byBjb250aW51ZS5cIixcbiAgXCJkYXNoYm9hcmQubmFtZVwiOiBcIk5hbWVcIixcbiAgXCJkYXNoYm9hcmQucm9sZVwiOiBcIlJvbGVcIixcbiAgXCJkYXNoYm9hcmQudGl0bGVcIjogXCJBZG1pbiBEYXNoYm9hcmRcIixcbiAgXCJkYXNoYm9hcmQud2VsY29tZVwiOiBcIldlbGNvbWUhXCIsXG4gIFwiZGVsZXRlLmNvbmZpcm0uZGVzY3JpcHRpb25cIjpcbiAgICBcIlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuIFRoaXMgd2lsbCBwZXJtYW5lbnRseSBkZWxldGUgdGhpcyBpdGVtLlwiLFxuICBcImRlbGV0ZS5jb25maXJtLnRpdGxlXCI6IFwiQXJlIHlvdSBzdXJlP1wiLFxuICBcImVudGl0eS5jcmVhdGVcIjogKG5hbWU6IHN0cmluZykgPT4gYENyZWF0ZSAke25hbWV9YCxcbiAgXCJlbnRpdHkuZWRpdFwiOiAobmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKSA9PiBgRWRpdCAke25hbWV9ICgjJHtpZH0pYCxcbiAgXCJlbnRpdHkubGlzdFwiOiAobmFtZTogc3RyaW5nKSA9PiBgJHtuYW1lfSBMaXN0YCxcbiAgXCJlbnRpdHkubGlzdE1hbmFnZVwiOiAobmFtZTogc3RyaW5nKSA9PiBgTWFuYWdlICR7bmFtZX0gTGlzdGAsXG4gIFwiZXJyb3IuYWxyZWFkeVByb2Nlc3NlZFwiOiBcIkFscmVhZHkgcHJvY2Vzc2VkXCIsXG4gIFwiZXJyb3IuYmFkUmVxdWVzdFwiOiBcIkJhZCByZXF1ZXN0XCIsXG4gIFwiZXJyb3IuZHVwbGljYXRlUm93XCI6IFwiRHVwbGljYXRlIGRhdGFcIixcbiAgXCJlcnJvci5mb3JiaWRkZW5cIjogXCJGb3JiaWRkZW5cIixcbiAgXCJlcnJvci5pbnRlcm5hbFNlcnZlckVycm9yXCI6IFwiSW50ZXJuYWwgc2VydmVyIGVycm9yXCIsXG4gIFwiZXJyb3Iubm90Rm91bmRcIjogXCJOb3QgZm91bmRcIixcbiAgXCJlcnJvci5zZXJ2aWNlVW5hdmFpbGFibGVcIjogXCJTZXJ2aWNlIHVuYXZhaWxhYmxlXCIsXG4gIFwic2V0dGluZy5pbnZhbGlkVmFsdWVcIjogKHJlYXNvbjogc3RyaW5nKSA9PiBgSW52YWxpZCBzZXR0aW5nIHZhbHVlOiAke3JlYXNvbn1gLFxuICBcInNldHRpbmcudW5rbm93bktleVwiOiAoa2V5OiBzdHJpbmcpID0+IGBVbmtub3duIHNldHRpbmcga2V5ICR7a2V5fWAsXG4gIFwicWdyaWQuZGlzcGF0Y2hlckZhaWxlZFwiOiAocHJvdmlkZXI6IHN0cmluZykgPT4gYCR7cHJvdmlkZXJ9IGRpc3BhdGNoZXIgZmFpbGVkIHRvIGluaXRpYWxpemVgLFxuICBcInFncmlkLmRpc3BhdGNoZXJTdGFydGluZ1wiOiAocHJvdmlkZXI6IHN0cmluZykgPT5cbiAgICBgJHtwcm92aWRlcn0gZGlzcGF0Y2hlciBpcyBzdGFydGluZyB1cC4gUGxlYXNlIHJldHJ5IHNob3J0bHlgLFxuICBcImVycm9yLnVuYXV0aG9yaXplZFwiOiBcIlVuYXV0aG9yaXplZFwiLFxuICBub3RGb3VuZDogKG5hbWU6IHN0cmluZywgaWQ6IG51bWJlcikgPT4gYCR7bmFtZX0gSUQgJHtpZH0gbm90IGZvdW5kYCxcbiAgXCJ2YWxpZGF0aW9uLmVtYWlsXCI6IFwiSW52YWxpZCBlbWFpbCBmb3JtYXRcIixcbiAgXCJ2YWxpZGF0aW9uLm1heExlbmd0aFwiOiAoZmllbGQ6IHN0cmluZywgbWF4OiBudW1iZXIpID0+XG4gICAgYCR7ZmllbGR9IG11c3QgYmUgYXQgbW9zdCAke21heH0gY2hhcmFjdGVyc2AsXG4gIFwidmFsaWRhdGlvbi5taW5MZW5ndGhcIjogKGZpZWxkOiBzdHJpbmcsIG1pbjogbnVtYmVyKSA9PlxuICAgIGAke2ZpZWxkfSBtdXN0IGJlIGF0IGxlYXN0ICR7bWlufSBjaGFyYWN0ZXJzYCxcbiAgXCJ2YWxpZGF0aW9uLnJlcXVpcmVkXCI6IChmaWVsZDogc3RyaW5nKSA9PiBgJHtmaWVsZH0gaXMgcmVxdWlyZWRgLFxuICBcInZhbGlkYXRpb24udXJsXCI6IFwiSW52YWxpZCBVUkwgZm9ybWF0XCIsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUtBLElBQUEsYUFBZTtDQUNiLGNBQWM7Q0FDZCxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGdCQUFnQjtDQUNoQixrQkFBa0I7Q0FDbEIsaUJBQWlCO0NBQ2pCLG9CQUFvQjtDQUNwQixpQkFBaUI7Q0FDakIsZUFBZTtDQUNmLGdCQUFnQjtDQUNoQixpQkFBaUI7Q0FDakIsaUJBQWlCO0NBQ2pCLG1CQUFtQixVQUNqQixPQUFPLE9BQU87RUFBRSxLQUFLLEdBQUcsTUFBTTtFQUFVLE9BQU8sR0FBRyxNQUFNO0NBQVUsQ0FBQztDQUNyRSxlQUFlO0NBQ2YsaUJBQWlCO0NBQ2pCLDRCQUE0QjtDQUM1QixxQkFBcUI7Q0FDckIsZUFBZTtDQUNmLGtCQUFrQjtDQUNsQixnQkFBZ0I7Q0FDaEIsdUJBQXVCO0NBQ3ZCLHVCQUF1QjtDQUN2QixtQkFBbUI7Q0FDbkIsMkJBQTJCO0NBQzNCLGtCQUFrQjtDQUNsQixrQkFBa0I7Q0FDbEIsbUJBQW1CO0NBQ25CLHFCQUFxQjtDQUNyQiw4QkFDRTtDQUNGLHdCQUF3QjtDQUN4QixrQkFBa0IsU0FBaUIsVUFBVTtDQUM3QyxnQkFBZ0IsTUFBYyxPQUFlLFFBQVEsS0FBSyxLQUFLLEdBQUc7Q0FDbEUsZ0JBQWdCLFNBQWlCLEdBQUcsS0FBSztDQUN6QyxzQkFBc0IsU0FBaUIsVUFBVSxLQUFLO0NBQ3RELDBCQUEwQjtDQUMxQixvQkFBb0I7Q0FDcEIsc0JBQXNCO0NBQ3RCLG1CQUFtQjtDQUNuQiw2QkFBNkI7Q0FDN0Isa0JBQWtCO0NBQ2xCLDRCQUE0QjtDQUM1Qix5QkFBeUIsV0FBbUIsMEJBQTBCO0NBQ3RFLHVCQUF1QixRQUFnQix1QkFBdUI7Q0FDOUQsMkJBQTJCLGFBQXFCLEdBQUcsU0FBUztDQUM1RCw2QkFBNkIsYUFDM0IsR0FBRyxTQUFTO0NBQ2Qsc0JBQXNCO0NBQ3RCLFdBQVcsTUFBYyxPQUFlLEdBQUcsS0FBSyxNQUFNLEdBQUc7Q0FDekQsb0JBQW9CO0NBQ3BCLHlCQUF5QixPQUFlLFFBQ3RDLEdBQUcsTUFBTSxtQkFBbUIsSUFBSTtDQUNsQyx5QkFBeUIsT0FBZSxRQUN0QyxHQUFHLE1BQU0sb0JBQW9CLElBQUk7Q0FDbkMsd0JBQXdCLFVBQWtCLEdBQUcsTUFBTTtDQUNuRCxrQkFBa0I7QUFDcEIifQ==
@@ -46,6 +46,8 @@ var ko_default = {
46
46
  "error.internalServerError": "서버 오류가 발생했습니다",
47
47
  "error.notFound": "찾을 수 없습니다",
48
48
  "error.serviceUnavailable": "서비스를 사용할 수 없습니다",
49
+ "setting.invalidValue": (reason) => `설정 값이 올바르지 않습니다: ${reason}`,
50
+ "setting.unknownKey": (key) => `알 수 없는 설정 키 ${key}`,
49
51
  "qgrid.dispatcherFailed": (provider) => `${provider} dispatcher 초기화에 실패했습니다`,
50
52
  "qgrid.dispatcherStarting": (provider) => `${provider} dispatcher 기동 중입니다. 잠시 후 다시 시도해주세요`,
51
53
  "error.unauthorized": "인증이 필요합니다",
@@ -60,4 +62,4 @@ var ko_default = {
60
62
  //#endregion
61
63
  export { ko_default as default };
62
64
 
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2kxOG4va28udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9zYSB9IGZyb20gXCJzb25hbXUvZGljdFwiO1xuXG4vKipcbiAqIFByb2plY3QgS08gRGljdGlvbmFyeVxuICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIFwiY29tbW9uLmFsbFwiOiBcIuyghOyytFwiLFxuICBcImNvbW1vbi5iYWNrVG9MaXN0XCI6IFwi66qp66Gd7Jy866GcXCIsXG4gIFwiY29tbW9uLmNhbmNlbFwiOiBcIuy3qOyGjFwiLFxuICBcImNvbW1vbi5jbG9zZVwiOiBcIuuLq+q4sFwiLFxuICBcImNvbW1vbi5jb25maXJtXCI6IFwi7ZmV7J24XCIsXG4gIFwiY29tbW9uLmNyZWF0ZVwiOiBcIuyDneyEsVwiLFxuICBcImNvbW1vbi5jcmVhdGVkQXRcIjogXCLrk7HroZ1cIixcbiAgXCJjb21tb24uZGVsZXRlXCI6IFwi7IKt7KCcXCIsXG4gIFwiY29tbW9uLmVkaXRcIjogXCLsiJjsoJVcIixcbiAgXCJjb21tb24ubG9naW5cIjogXCLroZzqt7jsnbhcIixcbiAgXCJjb21tb24ubG9nb3V0XCI6IFwi66Gc6re47JWE7JuDXCIsXG4gIFwiY29tbW9uLm1hbmFnZVwiOiBcIuq0gOumrFwiLFxuICBcImNvbW1vbi5yZXN1bHRzXCI6IChjb3VudDogbnVtYmVyKSA9PiBgJHtjb3VudH3qsJwg6rKw6rO8YCxcbiAgXCJjb21tb24uc2F2ZVwiOiBcIuyggOyepVwiLFxuICBcImNvbW1vbi5zZWFyY2hcIjogXCLqsoDsg4lcIixcbiAgXCJjb21tb24uc2VhcmNoUGxhY2Vob2xkZXJcIjogXCLqsoDsg4kuLi5cIixcbiAgXCJjb21tb24uc2VhcmNoVHlwZVwiOiBcIuqygOyDiSDsnKDtmJVcIixcbiAgXCJjb21tb24uc29ydFwiOiBcIuygleugrFwiLFxuICBcImNvbmZpcm0uZGVsZXRlXCI6IFwi7KCV66eQIOyCreygnO2VmOyLnOqyoOyKteuLiOq5jD9cIixcbiAgXCJjb25maXJtLnNhdmVcIjogXCLsoIDsnqXtlZjsi5zqsqDsirXri4jquYw/XCIsXG4gIFwiZGFzaGJvYXJkLmFkbWluTWVudVwiOiBcIuq0gOumrCDrqZTribRcIixcbiAgXCJkYXNoYm9hcmQuY3JlYXRlZEF0XCI6IFwi6rCA7J6F7J28XCIsXG4gIFwiZGFzaGJvYXJkLmVtYWlsXCI6IFwi7J2066mU7J28XCIsXG4gIFwiZGFzaGJvYXJkLmxvZ2luUmVxdWlyZWRcIjogXCLroZzqt7jsnbjsnbQg7ZWE7JqU7ZWp64uI64ukLlwiLFxuICBcImRhc2hib2FyZC5uYW1lXCI6IFwi7J2066aEXCIsXG4gIFwiZGFzaGJvYXJkLnJvbGVcIjogXCLsl63tlaBcIixcbiAgXCJkYXNoYm9hcmQudGl0bGVcIjogXCLqtIDrpqzsnpAg64yA7Iuc67O065OcXCIsXG4gIFwiZGFzaGJvYXJkLndlbGNvbWVcIjogXCLtmZjsmIHtlanri4jri6QhXCIsXG4gIFwiZGVsZXRlLmNvbmZpcm0uZGVzY3JpcHRpb25cIjogXCLsnbQg7J6R7JeF7J2AIOy3qOyGjO2VoCDsiJgg7JeG7Iq164uI64ukLiDtla3rqqnsnbQg7JiB6rWs7KCB7Jy866GcIOyCreygnOuQqeuLiOuLpC5cIixcbiAgXCJkZWxldGUuY29uZmlybS50aXRsZVwiOiBcIuygleunkCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/XCIsXG4gIFwiZW50aXR5LmNyZWF0ZVwiOiAobmFtZTogc3RyaW5nKSA9PiBgJHtuYW1lfSDsg53shLFgLFxuICBcImVudGl0eS5lZGl0XCI6IChuYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIpID0+IGAke25hbWV9IOyImOyglSAoIyR7aWR9KWAsXG4gIFwiZW50aXR5Lmxpc3RcIjogKG5hbWU6IHN0cmluZykgPT4gYCR7bmFtZX0g66qp66GdYCxcbiAgXCJlbnRpdHkubGlzdE1hbmFnZVwiOiAobmFtZTogc3RyaW5nKSA9PiBgJHtuYW1lfSDrqqnroZ0g6rSA66asYCxcbiAgXCJlcnJvci5hbHJlYWR5UHJvY2Vzc2VkXCI6IFwi7J2066+4IOyymOumrOuQmOyXiOyKteuLiOuLpFwiLFxuICBcImVycm9yLmJhZFJlcXVlc3RcIjogXCLsnpjrqrvrkJwg7JqU7LKt7J6F64uI64ukXCIsXG4gIFwiZXJyb3IuZHVwbGljYXRlUm93XCI6IFwi7KSR67O165CcIOuNsOydtO2EsOyeheuLiOuLpFwiLFxuICBcImVycm9yLmVudGl0eU5vdEZvdW5kXCI6IChuYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcpID0+IGDsobTsnqztlZjsp4Ag7JWK64qUICR7bmFtZX0gSUQgJHtpZH1gLFxuICBcImVycm9yLmZvcmJpZGRlblwiOiBcIuq2jO2VnOydtCDsl4bsirXri4jri6RcIixcbiAgXCJlcnJvci5pbnRlcm5hbFNlcnZlckVycm9yXCI6IFwi7ISc67KEIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6RcIixcbiAgXCJlcnJvci5ub3RGb3VuZFwiOiBcIuywvuydhCDsiJgg7JeG7Iq164uI64ukXCIsXG4gIFwiZXJyb3Iuc2VydmljZVVuYXZhaWxhYmxlXCI6IFwi7ISc67mE7Iqk66W8IOyCrOyaqe2VoCDsiJgg7JeG7Iq164uI64ukXCIsXG4gIFwicWdyaWQuZGlzcGF0Y2hlckZhaWxlZFwiOiAocHJvdmlkZXI6IHN0cmluZykgPT4gYCR7cHJvdmlkZXJ9IGRpc3BhdGNoZXIg7LSI6riw7ZmU7JeQIOyLpO2MqO2WiOyKteuLiOuLpGAsXG4gIFwicWdyaWQuZGlzcGF0Y2hlclN0YXJ0aW5nXCI6IChwcm92aWRlcjogc3RyaW5nKSA9PlxuICAgIGAke3Byb3ZpZGVyfSBkaXNwYXRjaGVyIOq4sOuPmSDspJHsnoXri4jri6QuIOyeoOyLnCDtm4Qg64uk7IucIOyLnOuPhO2VtOyjvOyEuOyalGAsXG4gIFwiZXJyb3IudW5hdXRob3JpemVkXCI6IFwi7J247Kad7J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICBcImVycm9yLnVua25vd25TZWFyY2hGaWVsZFwiOiAoZmllbGQ6IHN0cmluZykgPT4gYOq1rO2YhOuQmOyngCDslYrsnYAg6rKA7IOJIO2VhOuTnCAke2ZpZWxkfWAsXG4gIG5vdEZvdW5kOiAobmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKSA9PiBg7KG07J6s7ZWY7KeAIOyViuuKlCAke25hbWV9IElEICR7aWR9YCxcbiAgXCJ2YWxpZGF0aW9uLmVtYWlsXCI6IFwi7Jis67CU66W4IOydtOuplOydvCDtmJXsi53snbQg7JWE64uZ64uI64ukXCIsXG4gIFwidmFsaWRhdGlvbi5tYXhMZW5ndGhcIjogKGZpZWxkOiBzdHJpbmcsIG1heDogbnVtYmVyKSA9PlxuICAgIGAke2ZpZWxkfSR7am9zYShmaWVsZCwgXCLsnYDripRcIil9IOy1nOuMgCAke21heH3snpDquYzsp4Ag7J6F66Cl7ZWgIOyImCDsnojsirXri4jri6RgLFxuICBcInZhbGlkYXRpb24ubWluTGVuZ3RoXCI6IChmaWVsZDogc3RyaW5nLCBtaW46IG51bWJlcikgPT5cbiAgICBgJHtmaWVsZH0ke2pvc2EoZmllbGQsIFwi7J2A64qUXCIpfSDstZzshowgJHttaW597J6QIOydtOyDgeydtOyWtOyVvCDtlanri4jri6RgLFxuICBcInZhbGlkYXRpb24ucmVxdWlyZWRcIjogKGZpZWxkOiBzdHJpbmcpID0+IGAke2pvc2EoZmllbGQsIFwi7J2A64qUXCIpfSDtlYTsiJjsnoXri4jri6RgLFxuICBcInZhbGlkYXRpb24udXJsXCI6IFwi7Jis67CU66W4IFVSTCDtmJXsi53snbQg7JWE64uZ64uI64ukXCIsXG59IGFzIGNvbnN0O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUtBLElBQUEsYUFBZTtDQUNiLGNBQWM7Q0FDZCxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGdCQUFnQjtDQUNoQixrQkFBa0I7Q0FDbEIsaUJBQWlCO0NBQ2pCLG9CQUFvQjtDQUNwQixpQkFBaUI7Q0FDakIsZUFBZTtDQUNmLGdCQUFnQjtDQUNoQixpQkFBaUI7Q0FDakIsaUJBQWlCO0NBQ2pCLG1CQUFtQixVQUFrQixHQUFHLE1BQU07Q0FDOUMsZUFBZTtDQUNmLGlCQUFpQjtDQUNqQiw0QkFBNEI7Q0FDNUIscUJBQXFCO0NBQ3JCLGVBQWU7Q0FDZixrQkFBa0I7Q0FDbEIsZ0JBQWdCO0NBQ2hCLHVCQUF1QjtDQUN2Qix1QkFBdUI7Q0FDdkIsbUJBQW1CO0NBQ25CLDJCQUEyQjtDQUMzQixrQkFBa0I7Q0FDbEIsa0JBQWtCO0NBQ2xCLG1CQUFtQjtDQUNuQixxQkFBcUI7Q0FDckIsOEJBQThCO0NBQzlCLHdCQUF3QjtDQUN4QixrQkFBa0IsU0FBaUIsR0FBRyxLQUFLO0NBQzNDLGdCQUFnQixNQUFjLE9BQWUsR0FBRyxLQUFLLFFBQVEsR0FBRztDQUNoRSxnQkFBZ0IsU0FBaUIsR0FBRyxLQUFLO0NBQ3pDLHNCQUFzQixTQUFpQixHQUFHLEtBQUs7Q0FDL0MsMEJBQTBCO0NBQzFCLG9CQUFvQjtDQUNwQixzQkFBc0I7Q0FDdEIseUJBQXlCLE1BQWMsT0FBd0IsV0FBVyxLQUFLLE1BQU07Q0FDckYsbUJBQW1CO0NBQ25CLDZCQUE2QjtDQUM3QixrQkFBa0I7Q0FDbEIsNEJBQTRCO0NBQzVCLDJCQUEyQixhQUFxQixHQUFHLFNBQVM7Q0FDNUQsNkJBQTZCLGFBQzNCLEdBQUcsU0FBUztDQUNkLHNCQUFzQjtDQUN0Qiw2QkFBNkIsVUFBa0IsaUJBQWlCO0NBQ2hFLFdBQVcsTUFBYyxPQUFlLFdBQVcsS0FBSyxNQUFNO0NBQzlELG9CQUFvQjtDQUNwQix5QkFBeUIsT0FBZSxRQUN0QyxHQUFHLFFBQVEsS0FBSyxPQUFPLElBQUksRUFBRSxNQUFNLElBQUk7Q0FDekMseUJBQXlCLE9BQWUsUUFDdEMsR0FBRyxRQUFRLEtBQUssT0FBTyxJQUFJLEVBQUUsTUFBTSxJQUFJO0NBQ3pDLHdCQUF3QixVQUFrQixHQUFHLEtBQUssT0FBTyxJQUFJLEVBQUU7Q0FDL0Qsa0JBQWtCO0FBQ3BCIn0=
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2kxOG4va28udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9zYSB9IGZyb20gXCJzb25hbXUvZGljdFwiO1xuXG4vKipcbiAqIFByb2plY3QgS08gRGljdGlvbmFyeVxuICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIFwiY29tbW9uLmFsbFwiOiBcIuyghOyytFwiLFxuICBcImNvbW1vbi5iYWNrVG9MaXN0XCI6IFwi66qp66Gd7Jy866GcXCIsXG4gIFwiY29tbW9uLmNhbmNlbFwiOiBcIuy3qOyGjFwiLFxuICBcImNvbW1vbi5jbG9zZVwiOiBcIuuLq+q4sFwiLFxuICBcImNvbW1vbi5jb25maXJtXCI6IFwi7ZmV7J24XCIsXG4gIFwiY29tbW9uLmNyZWF0ZVwiOiBcIuyDneyEsVwiLFxuICBcImNvbW1vbi5jcmVhdGVkQXRcIjogXCLrk7HroZ1cIixcbiAgXCJjb21tb24uZGVsZXRlXCI6IFwi7IKt7KCcXCIsXG4gIFwiY29tbW9uLmVkaXRcIjogXCLsiJjsoJVcIixcbiAgXCJjb21tb24ubG9naW5cIjogXCLroZzqt7jsnbhcIixcbiAgXCJjb21tb24ubG9nb3V0XCI6IFwi66Gc6re47JWE7JuDXCIsXG4gIFwiY29tbW9uLm1hbmFnZVwiOiBcIuq0gOumrFwiLFxuICBcImNvbW1vbi5yZXN1bHRzXCI6IChjb3VudDogbnVtYmVyKSA9PiBgJHtjb3VudH3qsJwg6rKw6rO8YCxcbiAgXCJjb21tb24uc2F2ZVwiOiBcIuyggOyepVwiLFxuICBcImNvbW1vbi5zZWFyY2hcIjogXCLqsoDsg4lcIixcbiAgXCJjb21tb24uc2VhcmNoUGxhY2Vob2xkZXJcIjogXCLqsoDsg4kuLi5cIixcbiAgXCJjb21tb24uc2VhcmNoVHlwZVwiOiBcIuqygOyDiSDsnKDtmJVcIixcbiAgXCJjb21tb24uc29ydFwiOiBcIuygleugrFwiLFxuICBcImNvbmZpcm0uZGVsZXRlXCI6IFwi7KCV66eQIOyCreygnO2VmOyLnOqyoOyKteuLiOq5jD9cIixcbiAgXCJjb25maXJtLnNhdmVcIjogXCLsoIDsnqXtlZjsi5zqsqDsirXri4jquYw/XCIsXG4gIFwiZGFzaGJvYXJkLmFkbWluTWVudVwiOiBcIuq0gOumrCDrqZTribRcIixcbiAgXCJkYXNoYm9hcmQuY3JlYXRlZEF0XCI6IFwi6rCA7J6F7J28XCIsXG4gIFwiZGFzaGJvYXJkLmVtYWlsXCI6IFwi7J2066mU7J28XCIsXG4gIFwiZGFzaGJvYXJkLmxvZ2luUmVxdWlyZWRcIjogXCLroZzqt7jsnbjsnbQg7ZWE7JqU7ZWp64uI64ukLlwiLFxuICBcImRhc2hib2FyZC5uYW1lXCI6IFwi7J2066aEXCIsXG4gIFwiZGFzaGJvYXJkLnJvbGVcIjogXCLsl63tlaBcIixcbiAgXCJkYXNoYm9hcmQudGl0bGVcIjogXCLqtIDrpqzsnpAg64yA7Iuc67O065OcXCIsXG4gIFwiZGFzaGJvYXJkLndlbGNvbWVcIjogXCLtmZjsmIHtlanri4jri6QhXCIsXG4gIFwiZGVsZXRlLmNvbmZpcm0uZGVzY3JpcHRpb25cIjogXCLsnbQg7J6R7JeF7J2AIOy3qOyGjO2VoCDsiJgg7JeG7Iq164uI64ukLiDtla3rqqnsnbQg7JiB6rWs7KCB7Jy866GcIOyCreygnOuQqeuLiOuLpC5cIixcbiAgXCJkZWxldGUuY29uZmlybS50aXRsZVwiOiBcIuygleunkCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/XCIsXG4gIFwiZW50aXR5LmNyZWF0ZVwiOiAobmFtZTogc3RyaW5nKSA9PiBgJHtuYW1lfSDsg53shLFgLFxuICBcImVudGl0eS5lZGl0XCI6IChuYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIpID0+IGAke25hbWV9IOyImOyglSAoIyR7aWR9KWAsXG4gIFwiZW50aXR5Lmxpc3RcIjogKG5hbWU6IHN0cmluZykgPT4gYCR7bmFtZX0g66qp66GdYCxcbiAgXCJlbnRpdHkubGlzdE1hbmFnZVwiOiAobmFtZTogc3RyaW5nKSA9PiBgJHtuYW1lfSDrqqnroZ0g6rSA66asYCxcbiAgXCJlcnJvci5hbHJlYWR5UHJvY2Vzc2VkXCI6IFwi7J2066+4IOyymOumrOuQmOyXiOyKteuLiOuLpFwiLFxuICBcImVycm9yLmJhZFJlcXVlc3RcIjogXCLsnpjrqrvrkJwg7JqU7LKt7J6F64uI64ukXCIsXG4gIFwiZXJyb3IuZHVwbGljYXRlUm93XCI6IFwi7KSR67O165CcIOuNsOydtO2EsOyeheuLiOuLpFwiLFxuICBcImVycm9yLmVudGl0eU5vdEZvdW5kXCI6IChuYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcpID0+IGDsobTsnqztlZjsp4Ag7JWK64qUICR7bmFtZX0gSUQgJHtpZH1gLFxuICBcImVycm9yLmZvcmJpZGRlblwiOiBcIuq2jO2VnOydtCDsl4bsirXri4jri6RcIixcbiAgXCJlcnJvci5pbnRlcm5hbFNlcnZlckVycm9yXCI6IFwi7ISc67KEIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6RcIixcbiAgXCJlcnJvci5ub3RGb3VuZFwiOiBcIuywvuydhCDsiJgg7JeG7Iq164uI64ukXCIsXG4gIFwiZXJyb3Iuc2VydmljZVVuYXZhaWxhYmxlXCI6IFwi7ISc67mE7Iqk66W8IOyCrOyaqe2VoCDsiJgg7JeG7Iq164uI64ukXCIsXG4gIFwic2V0dGluZy5pbnZhbGlkVmFsdWVcIjogKHJlYXNvbjogc3RyaW5nKSA9PiBg7ISk7KCVIOqwkuydtCDsmKzrsJTrpbTsp4Ag7JWK7Iq164uI64ukOiAke3JlYXNvbn1gLFxuICBcInNldHRpbmcudW5rbm93bktleVwiOiAoa2V5OiBzdHJpbmcpID0+IGDslYwg7IiYIOyXhuuKlCDshKTsoJUg7YKkICR7a2V5fWAsXG4gIFwicWdyaWQuZGlzcGF0Y2hlckZhaWxlZFwiOiAocHJvdmlkZXI6IHN0cmluZykgPT4gYCR7cHJvdmlkZXJ9IGRpc3BhdGNoZXIg7LSI6riw7ZmU7JeQIOyLpO2MqO2WiOyKteuLiOuLpGAsXG4gIFwicWdyaWQuZGlzcGF0Y2hlclN0YXJ0aW5nXCI6IChwcm92aWRlcjogc3RyaW5nKSA9PlxuICAgIGAke3Byb3ZpZGVyfSBkaXNwYXRjaGVyIOq4sOuPmSDspJHsnoXri4jri6QuIOyeoOyLnCDtm4Qg64uk7IucIOyLnOuPhO2VtOyjvOyEuOyalGAsXG4gIFwiZXJyb3IudW5hdXRob3JpemVkXCI6IFwi7J247Kad7J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICBcImVycm9yLnVua25vd25TZWFyY2hGaWVsZFwiOiAoZmllbGQ6IHN0cmluZykgPT4gYOq1rO2YhOuQmOyngCDslYrsnYAg6rKA7IOJIO2VhOuTnCAke2ZpZWxkfWAsXG4gIG5vdEZvdW5kOiAobmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKSA9PiBg7KG07J6s7ZWY7KeAIOyViuuKlCAke25hbWV9IElEICR7aWR9YCxcbiAgXCJ2YWxpZGF0aW9uLmVtYWlsXCI6IFwi7Jis67CU66W4IOydtOuplOydvCDtmJXsi53snbQg7JWE64uZ64uI64ukXCIsXG4gIFwidmFsaWRhdGlvbi5tYXhMZW5ndGhcIjogKGZpZWxkOiBzdHJpbmcsIG1heDogbnVtYmVyKSA9PlxuICAgIGAke2ZpZWxkfSR7am9zYShmaWVsZCwgXCLsnYDripRcIil9IOy1nOuMgCAke21heH3snpDquYzsp4Ag7J6F66Cl7ZWgIOyImCDsnojsirXri4jri6RgLFxuICBcInZhbGlkYXRpb24ubWluTGVuZ3RoXCI6IChmaWVsZDogc3RyaW5nLCBtaW46IG51bWJlcikgPT5cbiAgICBgJHtmaWVsZH0ke2pvc2EoZmllbGQsIFwi7J2A64qUXCIpfSDstZzshowgJHttaW597J6QIOydtOyDgeydtOyWtOyVvCDtlanri4jri6RgLFxuICBcInZhbGlkYXRpb24ucmVxdWlyZWRcIjogKGZpZWxkOiBzdHJpbmcpID0+IGAke2pvc2EoZmllbGQsIFwi7J2A64qUXCIpfSDtlYTsiJjsnoXri4jri6RgLFxuICBcInZhbGlkYXRpb24udXJsXCI6IFwi7Jis67CU66W4IFVSTCDtmJXsi53snbQg7JWE64uZ64uI64ukXCIsXG59IGFzIGNvbnN0O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUtBLElBQUEsYUFBZTtDQUNiLGNBQWM7Q0FDZCxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGdCQUFnQjtDQUNoQixrQkFBa0I7Q0FDbEIsaUJBQWlCO0NBQ2pCLG9CQUFvQjtDQUNwQixpQkFBaUI7Q0FDakIsZUFBZTtDQUNmLGdCQUFnQjtDQUNoQixpQkFBaUI7Q0FDakIsaUJBQWlCO0NBQ2pCLG1CQUFtQixVQUFrQixHQUFHLE1BQU07Q0FDOUMsZUFBZTtDQUNmLGlCQUFpQjtDQUNqQiw0QkFBNEI7Q0FDNUIscUJBQXFCO0NBQ3JCLGVBQWU7Q0FDZixrQkFBa0I7Q0FDbEIsZ0JBQWdCO0NBQ2hCLHVCQUF1QjtDQUN2Qix1QkFBdUI7Q0FDdkIsbUJBQW1CO0NBQ25CLDJCQUEyQjtDQUMzQixrQkFBa0I7Q0FDbEIsa0JBQWtCO0NBQ2xCLG1CQUFtQjtDQUNuQixxQkFBcUI7Q0FDckIsOEJBQThCO0NBQzlCLHdCQUF3QjtDQUN4QixrQkFBa0IsU0FBaUIsR0FBRyxLQUFLO0NBQzNDLGdCQUFnQixNQUFjLE9BQWUsR0FBRyxLQUFLLFFBQVEsR0FBRztDQUNoRSxnQkFBZ0IsU0FBaUIsR0FBRyxLQUFLO0NBQ3pDLHNCQUFzQixTQUFpQixHQUFHLEtBQUs7Q0FDL0MsMEJBQTBCO0NBQzFCLG9CQUFvQjtDQUNwQixzQkFBc0I7Q0FDdEIseUJBQXlCLE1BQWMsT0FBd0IsV0FBVyxLQUFLLE1BQU07Q0FDckYsbUJBQW1CO0NBQ25CLDZCQUE2QjtDQUM3QixrQkFBa0I7Q0FDbEIsNEJBQTRCO0NBQzVCLHlCQUF5QixXQUFtQixvQkFBb0I7Q0FDaEUsdUJBQXVCLFFBQWdCLGVBQWU7Q0FDdEQsMkJBQTJCLGFBQXFCLEdBQUcsU0FBUztDQUM1RCw2QkFBNkIsYUFDM0IsR0FBRyxTQUFTO0NBQ2Qsc0JBQXNCO0NBQ3RCLDZCQUE2QixVQUFrQixpQkFBaUI7Q0FDaEUsV0FBVyxNQUFjLE9BQWUsV0FBVyxLQUFLLE1BQU07Q0FDOUQsb0JBQW9CO0NBQ3BCLHlCQUF5QixPQUFlLFFBQ3RDLEdBQUcsUUFBUSxLQUFLLE9BQU8sSUFBSSxFQUFFLE1BQU0sSUFBSTtDQUN6Qyx5QkFBeUIsT0FBZSxRQUN0QyxHQUFHLFFBQVEsS0FBSyxPQUFPLElBQUksRUFBRSxNQUFNLElBQUk7Q0FDekMsd0JBQXdCLFVBQWtCLEdBQUcsS0FBSyxPQUFPLElBQUksRUFBRTtDQUMvRCxrQkFBa0I7QUFDcEIifQ==
@@ -244,6 +244,14 @@ const entityLabels = {
244
244
  "enum.RequestLogStepType.tool_call": "Tool 호출",
245
245
  "enum.RequestLogStepOrderBy.id-asc": "ID순",
246
246
  "enum.RequestLogStepSearchField.id": "ID",
247
+ "entity.Setting": "Setting",
248
+ "entity.Setting.id": "ID",
249
+ "entity.Setting.created_at": "등록일시",
250
+ "entity.Setting.key": "설정 키 (예: openai.maxWorkersPerToken)",
251
+ "entity.Setting.value": "설정 값 (문자열 저장, 앱에서 파싱·검증)",
252
+ "entity.Setting.updated_at": "최종 수정일시",
253
+ "enum.SettingOrderBy.key-asc": "키순",
254
+ "enum.SettingSearchField.key": "키",
247
255
  "entity.Token": "Token",
248
256
  "entity.Token.id": "ID",
249
257
  "entity.Token.created_at": "등록일시",
@@ -377,4 +385,4 @@ SD.enumLabels = (enumName) => {
377
385
  //#endregion
378
386
  export { SD, defineLocale, localizedColumn };
379
387
 
380
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QuZ2VuZXJhdGVkLmpzIiwibmFtZXMiOlsia28iLCJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pMThuL3NkLmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcImtvXCIgYXMgY29uc3Q7XG5jb25zdCBTVVBQT1JURURfTE9DQUxFUyA9IFtcImtvXCIsIFwiZW5cIl0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIChjdHgubG9jYWxlIGFzICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gREVGQVVMVF9MT0NBTEU7XG4gIH1cbn1cblxuaW1wb3J0IGVuIGZyb20gXCIuL2VuXCI7XG5pbXBvcnQga28gZnJvbSBcIi4va29cIjtcblxuLy8gcmVhY3QtY29tcG9uZW50cyBpMThuIGtleXNcbmNvbnN0IHJjS2V5c0tvID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwi66Gc65SpIOykkS4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIuyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLmFzeW5jU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gQ29tYm9ib3ggQ29tcG9uZW50XG4gIFwicmMuY29tYm9ib3gubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5jb21ib2JveC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIERhdGVQaWNrZXIgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVBpY2tlci5waWNrRGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVQaWNrZXIuc2VsZWN0RGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwi64Kg7KecIOy2lOqwgFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIuq4sOqwhFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcblxuICAvLyBGaWxlSW5wdXQgQ29tcG9uZW50XG4gIFwicmMuZmlsZUlucHV0LmJyb3dzZUZpbGVzXCI6IFwi7YyM7J28IOywvuq4sFwiLFxuICBcInJjLmZpbGVJbnB1dC5kcm9wWm9uZVwiOiBcIu2MjOydvOydhCDrk5zrnpjqt7jtlZjqsbDrgpgg7YG066at7ZWY7JesIOyXheuhnOuTnFwiLFxuICBcInJjLmZpbGVJbnB1dC5maWxlUGxhY2Vob2xkZXJcIjogXCLtjIzsnbxcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIuydtOuvuOyngFwiLFxuICBcInJjLmZpbGVJbnB1dC5tYXhGaWxlc0V4Y2VlZGVkXCI6IChtYXhGaWxlczogbnVtYmVyKSA9PlxuICAgIGDstZzrjIAgJHttYXhGaWxlc33qsJwg7YyM7J2866eMIOyXheuhnOuTnCDqsIDriqXtlanri4jri6RgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwi64yA6riwIOykkVwiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCLsoJzqsbBcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwi7JeF66Gc65OcIOyLpO2MqFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCLsl4XroZzrk5wg7KSRLi4uXCIsXG5cbiAgLy8gTW9udGhQaWNrZXJNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmFkZE1vbnRoXCI6IFwi7JuUIOy2lOqwgFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZGF0ZVJhbmdlXCI6IFwi6riw6rCEXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwi7KKF66OM7J28XCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIuyblCDshKDtg51cIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnN0YXJ0RGF0ZVwiOiBcIuyLnOyekeydvFwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwi7KCE7LK0IO2VtOygnFwiLFxuICBcInJjLm11bHRpU2VsZWN0LmNsb3NlXCI6IFwi64ur6riwXCIsXG4gIFwicmMubXVsdGlTZWxlY3QubW9yZUl0ZW1zXCI6IChjb3VudDogbnVtYmVyKSA9PiBgKyR7Y291bnR96rCcIOuNlOuztOq4sGAsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zXCI6IFwi7Ji17IWY7J20IOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1NlbGVjdGVkXCI6IFwi7ISg7YOd65CcIOyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR96rCcIOyYteyFmGAsXG4gIFwicmMubXVsdGlTZWxlY3Quc2VsZWN0QWxsXCI6IFwi7KCE7LK0IOyEoO2DnVwiLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gUGFnaW5hdGlvbiBDb21wb25lbnRcbiAgXCJyYy5wYWdpbmF0aW9uLm5leHRcIjogXCLri6TsnYxcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnByZXZpb3VzXCI6IFwi7J207KCEXCIsXG4gIFwicmMucGFnaW5hdGlvbi5zaG93aW5nXCI6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT5cbiAgICBgJHt0b3RhbH3qsJwg7KSRICR7c3RhcnR9LSR7ZW5kfWAsXG5cbiAgLy8gQ2FsZW5kYXIgQ29tcG9uZW50XG4gIFwicmMuY2FsZW5kYXIubW9udGguMFwiOiBcIjHsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xXCI6IFwiMuyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCIz7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguM1wiOiBcIjTsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC40XCI6IFwiNeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjVcIjogXCI27JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNlwiOiBcIjfsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC43XCI6IFwiOOyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCI57JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguOVwiOiBcIjEw7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMTBcIjogXCIxMeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjExXCI6IFwiMTLsm5RcIixcblxuICAvLyBTb25hbXUgRmlsdGVyIENvbXBvbmVudFxuICBcInJjLnNvbmFtdUZpbHRlci50aXRsZVwiOiBcIuyGjOuCmOustCDtlYTthLBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbHlcIjogXCLsoIHsmqlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCLstIjquLDtmZRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYWRkUnVsZVwiOiBcIuq3nOy5mSDstpTqsIBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAn7JWE7KeBIOq3nOy5meydtCDsl4bsirXri4jri6QuIFwiKyDqt5zsuZkg7LaU6rCAXCLrpbwg7YG066at7ZWY7JesIOyLnOyeke2VmOyEuOyalC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIu2VhOuTnCDshKDtg51cIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0T3BlcmF0b3JcIjogXCLsl7DsgrDsnpAg7ISg7YOdXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCLrqLzsoIAg7Jew7IKw7J6Q66W8IOyEoO2Dne2VmOyEuOyalFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlclZhbHVlXCI6IFwi6rCSIOyeheugpVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlck51bWJlclwiOiBcIuyIq+yekCDsnoXroKVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm90U3VwcG9ydGVkXCI6IFwi7KeA7JuQ7ZWY7KeAIOyViuydjFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zdGFydERhdGVcIjogXCLsi5zsnpHsnbxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW5kRGF0ZVwiOiBcIuyiheujjOydvFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hcHBsaWVkRmlsdGVyc1wiOiBcIvCfjLIg7KCB7Jqp65CcIOyGjOuCmOustCDtlYTthLBcIixcblxuICAvLyBDb21tb25cbiAgXCJyYy5jb21tb24uY2FuY2VsXCI6IFwi7Leo7IaMXCIsXG4gIFwicmMuY29tbW9uLnNhdmVcIjogXCLsoIDsnqVcIixcbn07XG5cbmNvbnN0IHJjS2V5c0VuID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwiTG9hZGluZy4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIk5vIG9wdGlvbnNcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Quc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBDb21ib2JveCBDb21wb25lbnRcbiAgXCJyYy5jb21ib2JveC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuY29tYm9ib3guc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBEYXRlUGlja2VyIENvbXBvbmVudFxuICBcInJjLmRhdGVQaWNrZXIucGlja0RhdGVcIjogXCJQaWNrIGRhdGVcIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5zZWxlY3REYXRlXCI6IFwiU2VsZWN0IGRhdGVcIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwiQWRkIGRhdGVcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCJSYW5nZVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuXG4gIC8vIEZpbGVJbnB1dCBDb21wb25lbnRcbiAgXCJyYy5maWxlSW5wdXQuYnJvd3NlRmlsZXNcIjogXCJCcm93c2UgZmlsZXNcIixcbiAgXCJyYy5maWxlSW5wdXQuZHJvcFpvbmVcIjogXCJEcmFnIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gdXBsb2FkXCIsXG4gIFwicmMuZmlsZUlucHV0LmZpbGVQbGFjZWhvbGRlclwiOiBcIkZpbGVcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIkltYWdlXCIsXG4gIFwicmMuZmlsZUlucHV0Lm1heEZpbGVzRXhjZWVkZWRcIjogKG1heEZpbGVzOiBudW1iZXIpID0+IGBNYXhpbXVtICR7bWF4RmlsZXN9IGZpbGVzIGFsbG93ZWRgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwiUGVuZGluZ1wiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCJSZW1vdmVcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwiVXBsb2FkIGZhaWxlZFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCJVcGxvYWRpbmcuLi5cIixcblxuICAvLyBNb250aFBpY2tlck11bHRpcGxlIENvbXBvbmVudFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuYWRkTW9udGhcIjogXCJBZGQgbW9udGhcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIlJhbmdlXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBtb250aFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwiQ2xlYXIgYWxsXCIsXG4gIFwicmMubXVsdGlTZWxlY3QuY2xvc2VcIjogXCJDbG9zZVwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm1vcmVJdGVtc1wiOiAoY291bnQ6IG51bWJlcikgPT4gYCske2NvdW50fSBtb3JlYCxcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub09wdGlvbnNcIjogXCJObyBvcHRpb25zXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zU2VsZWN0ZWRcIjogXCJObyBvcHRpb25zIHNlbGVjdGVkXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR9IG9wdGlvbnNgLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdEFsbFwiOiBcIlNlbGVjdCBhbGxcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIlNlbGVjdC4uLlwiLFxuXG4gIC8vIFBhZ2luYXRpb24gQ29tcG9uZW50XG4gIFwicmMucGFnaW5hdGlvbi5uZXh0XCI6IFwiTmV4dFwiLFxuICBcInJjLnBhZ2luYXRpb24ucHJldmlvdXNcIjogXCJQcmV2aW91c1wiLFxuICBcInJjLnBhZ2luYXRpb24uc2hvd2luZ1wiOiAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpID0+XG4gICAgYFNob3dpbmcgJHtzdGFydH0tJHtlbmR9IG9mICR7dG90YWx9YCxcblxuICAvLyBDYWxlbmRhciBDb21wb25lbnRcbiAgXCJyYy5jYWxlbmRhci5tb250aC4wXCI6IFwiSmFudWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjFcIjogXCJGZWJydWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCJNYXJjaFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjNcIjogXCJBcHJpbFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjRcIjogXCJNYXlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC41XCI6IFwiSnVuZVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjZcIjogXCJKdWx5XCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguN1wiOiBcIkF1Z3VzdFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCJTZXB0ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC45XCI6IFwiT2N0b2JlclwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjEwXCI6IFwiTm92ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMVwiOiBcIkRlY2VtYmVyXCIsXG5cbiAgLy8gU29uYW11IEZpbHRlciBDb21wb25lbnRcbiAgXCJyYy5zb25hbXVGaWx0ZXIudGl0bGVcIjogXCJTb25hbXUgRmlsdGVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGx5XCI6IFwiQXBwbHlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCJSZXNldFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hZGRSdWxlXCI6IFwiQWRkIFJ1bGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAnTm8gcnVsZXMgeWV0LiBDbGljayBcIisgQWRkIFJ1bGVcIiB0byBzdGFydC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIlNlbGVjdCBmaWVsZFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvclwiOiBcIk9wZXJhdG9yXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCJTZWxlY3Qgb3BlcmF0b3IgZmlyc3RcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJWYWx1ZVwiOiBcIkVudGVyIHZhbHVlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVudGVyTnVtYmVyXCI6IFwiRW50ZXIgbnVtYmVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vdFN1cHBvcnRlZFwiOiBcIk5vdCBzdXBwb3J0ZWRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbGllZEZpbHRlcnNcIjogXCLwn4yyIEFwcGxpZWQgU29uYW11RmlsdGVyc1wiLFxuXG4gIC8vIENvbW1vblxuICBcInJjLmNvbW1vbi5jYW5jZWxcIjogXCJDYW5jZWxcIixcbiAgXCJyYy5jb21tb24uc2F2ZVwiOiBcIlNhdmVcIixcbn0gYXMgY29uc3Q7XG5cbi8vIGVudGl0eS5qc29u7JeQ7IScIOy2lOy2nO2VnCBlbnRpdHkgbGFiZWxzIChkZWZhdWx0TG9jYWxlIOyghOyaqSlcbmNvbnN0IGVudGl0eUxhYmVscyA9IHtcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1wiOiBcIlJlcXVlc3RMb2dcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY3JlYXRlZF9hdFwiOiBcIuuTseuhneydvOyLnFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRva2VuX25hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucHJvamVjdF9uYW1lXCI6IFwi7ZSE66Gc7KCd7Yq4IOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLm1vZGVsX25hbWVcIjogXCLrqqjrjbgg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IOydtOumhCAoZmFsbGJhY2sg7KCEKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnVzZXJfcHJvbXB0XCI6IFwi7IKs7Jqp7J6QIO2UhOuhrO2UhO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnN5c3RlbV9wcm9tcHRcIjogXCLsi5zsiqTthZwg7ZSE66Gs7ZSE7Yq4XCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVzcG9uc2VcIjogXCJsbG0g7J2R64u1IOyghOusuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmlucHV0X3Rva2Vuc1wiOiBcIuyeheugpSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5vdXRwdXRfdG9rZW5zXCI6IFwi7Lac66ClIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX3JlYWRfdG9rZW5zXCI6IFwi7LqQ7IucIOydveq4sCDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIjogXCLsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCI6IFwiMeyLnOqwhCBUVEwg7LqQ7IucIOyDneyEsSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5kdXJhdGlvbl9tc1wiOiBcIuydkeuLtSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cudHRmdF9tc1wiOiBcImZpcnN0IGdlbiBUVEZUKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3RfdXNkXCI6IFwiQVBJIOu5hOyaqVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3Rfc291cmNlXCI6IFwi67mE7JqpIOy2nOyymChwcm92aWRlci9wcmljaW5nX3RhYmxlL21peGVkKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmltYWdlX2Nvc3RfdXNkXCI6IFwi7J2066+47KeAIOyDneyEsSDstpTsoJUg67mE7JqpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaW1hZ2VfY29zdF9tZXRob2RcIjogXCLsnbTrr7jsp4Ag67mE7JqpIOy2lOyglSDrsKnsi51cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5lZmZvcnRcIjogXCJlZmZvcnQgbGV2ZWxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5oaXN0b3J5XCI6IFwiaW5qZWN0X2l0ZW1zIO2eiOyKpO2GoOumrFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRvb2xzXCI6IFwi7JqU7LKt7JeQIOyepeywqeuQnCB0b29sIOygleydmCDrqqnroZ1cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5zdGF0dXNcIjogXCLsi6Ttlokg7IOB7YOcXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuZXJyb3JfbWVzc2FnZVwiOiBcIuyXkOufrCDrqZTsi5zsp4BcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy50b29sX2NhbGxfY291bnRcIjogXCJ0b29sIGNhbGwg7Zqf7IiYXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiOiBcIuydtOuvuOyngCDsg53shLEgdHVybiDsl6zrtoAgKHF1b3RhIOq3gOyGjeyaqSlcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LmlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuaWQtYXNjXCI6IFwiSUTsmKTrnpjrkJzsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LmNyZWF0ZWRfYXQtZGVzY1wiOiBcIuuTseuhneydvOyLnOy1nOyLoOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY3JlYXRlZF9hdC1hc2NcIjogXCLrk7HroZ3snbzsi5zsmKTrnpjrkJzsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LnR0ZnRfbXMtZGVzY1wiOiBcIlRURlTquLTsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LnR0ZnRfbXMtYXNjXCI6IFwiVFRGVOynp+ydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuZHVyYXRpb25fbXMtZGVzY1wiOiBcIuyGjOyalOyLnOqwhOq4tOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuZHVyYXRpb25fbXMtYXNjXCI6IFwi7IaM7JqU7Iuc6rCE7Ken7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5pbnB1dF90b2tlbnMtZGVzY1wiOiBcIuyeheugpe2GoO2BsOunjuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuaW5wdXRfdG9rZW5zLWFzY1wiOiBcIuyeheugpe2GoO2BsOyggeydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkub3V0cHV0X3Rva2Vucy1kZXNjXCI6IFwi7Lac66Cl7Yag7YGw66eO7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5vdXRwdXRfdG9rZW5zLWFzY1wiOiBcIuy2nOugpe2GoO2BsOyggeydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY2FjaGVfcmVhZF90b2tlbnMtZGVzY1wiOiBcIuy6kOyLnOydveq4sOunjuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY2FjaGVfcmVhZF90b2tlbnMtYXNjXCI6IFwi7LqQ7Iuc7J296riw7KCB7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5jYWNoZV9jcmVhdGlvbl90b2tlbnMtZGVzY1wiOiBcIuy6kOyLnOyDneyEseunjuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY2FjaGVfY3JlYXRpb25fdG9rZW5zLWFzY1wiOiBcIuy6kOyLnOyDneyEseyggeydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY29zdF91c2QtZGVzY1wiOiBcIuu5hOyaqeuGkuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY29zdF91c2QtYXNjXCI6IFwi67mE7Jqp64Ku7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1NlYXJjaEZpZWxkLnRva2VuX25hbWVcIjogXCLthqDtgbDsnbTrpoRcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTZWFyY2hGaWVsZC51c2VyX3Byb21wdFwiOiBcIuyCrOyaqeyekCDtlITroaztlITtirhcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGF0dXMucnVubmluZ1wiOiBcIuyLpO2WiSDspJFcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGF0dXMuc3VjY2VlZGVkXCI6IFwi7ISx6rO1XCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLmVycm9yXCI6IFwi7JeQ65+sXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLmFib3J0ZWRcIjogXCLspJHri6hcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXBcIjogXCJSZXF1ZXN0TG9nU3RlcFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVxdWVzdF9sb2dcIjogXCLrtoDrqqggcmVxdWVzdCBsb2cgSURcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuc3RlcF9pbmRleFwiOiBcImFpLXNkayBzdGVwIG51bWJlciAoMC1iYXNlZClcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudHlwZVwiOiBcInN0ZXAg7YOA7J6FXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLm1vZGVsX25hbWVcIjogXCLsi6TsoJwgc2VydmluZyDrqqjrjbhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IChmYWxsYmFjayDsoIQpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5pbnB1dF90b2tlbnNcIjogXCLsnoXroKUg7Yag7YGwIChnZW5lcmF0ZSlcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAub3V0cHV0X3Rva2Vuc1wiOiBcIuy2nOugpSDthqDtgbAgKGdlbmVyYXRlKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jYWNoZV9yZWFkX3Rva2Vuc1wiOiBcIuy6kOyLnCDsnb3quLAg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiOiBcIuy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiOiBcIjHsi5zqsIQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNvc3RfdXNkXCI6IFwic3RlcCDruYTsmqkgKG1pY3JvLVVTRClcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuY29zdF9zb3VyY2VcIjogXCLruYTsmqkg7Lac7LKYKHByb3ZpZGVyL3ByaWNpbmdfdGFibGUpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmR1cmF0aW9uX21zXCI6IFwi7IaM7JqU7Iuc6rCEKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC50dGZ0X21zXCI6IFwiR2VuIFRURlQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmZpbmlzaF9yZWFzb25cIjogXCLsmYTro4wg7IKs7JygXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnJlYXNvbmluZ190ZXh0XCI6IFwicmVhc29uaW5nIO2FjeyKpO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5yZWFzb25pbmdfdG9rZW5zXCI6IFwicmVhc29uaW5nIO2GoO2BsCDsiJhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9jYWxsX2luZGV4XCI6IFwi6rCZ7J2AIHN0ZXAg64K0IHRvb2wgY2FsbCDsiJzshJxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9jYWxsX2lkXCI6IFwidG9vbCBjYWxsIElEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfbmFtZVwiOiBcInRvb2wg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfYXJnc1wiOiBcInRvb2wg7J247J6QIChKU09OIHN0cmluZylcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9yZXN1bHRcIjogXCJ0b29sIOqysOqzvCAoSlNPTiBzdHJpbmcpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfZHVyYXRpb25fbXNcIjogXCJ0b29sIOyLpO2WiSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmVycm9yXCI6IFwic3RlcCDsl5Drn6wg66mU7Iuc7KeAXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcFR5cGUuZ2VuZXJhdGVcIjogXCJMTE0g7IOd7ISxXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcFR5cGUudG9vbF9jYWxsXCI6IFwiVG9vbCDtmLjstpxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGVwT3JkZXJCeS5pZC1hc2NcIjogXCJJROyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0ZXBTZWFyY2hGaWVsZC5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlRva2VuXCI6IFwiVG9rZW5cIixcbiAgXCJlbnRpdHkuVG9rZW4uaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5Ub2tlbi5jcmVhdGVkX2F0XCI6IFwi65Ox66Gd7J287IucXCIsXG4gIFwiZW50aXR5LlRva2VuLnByb3ZpZGVyXCI6IFwi7ZSE66Gc67CU7J20642UXCIsXG4gIFwiZW50aXR5LlRva2VuLmNyZWRlbnRpYWxzXCI6IFwi7J247KadIOygleuztCAoSlNPTkIpXCIsXG4gIFwiZW50aXR5LlRva2VuLm5hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlRva2VuLmFjdGl2ZVwiOiBcIu2ZnOyEsSDsl6zrtoBcIixcbiAgXCJlbnRpdHkuVG9rZW4ub3JkXCI6IFwi7KCV66CsIOyInOyEnFwiLFxuICBcImVudGl0eS5Ub2tlbi5xdW90YV90aHJlc2hvbGRcIjogXCJxdW90YSDsgqzsmqnrpaAg7J6E6rOE7LmYKCUpLiBudWxs7J2066m0IOuvuOyEpOyglVwiLFxuICBcImVudGl0eS5Ub2tlbi53ZWlnaHRcIjogXCLqsIDspJEg65287Jq065Oc66Gc67mIIOudvOyasO2MhSDqsIDspJHsuZggKDEuLjEwMClcIixcbiAgXCJlbnVtLlRva2VuT3JkZXJCeS5pZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIixcbiAgXCJlbnVtLlRva2VuT3JkZXJCeS5vcmQtYXNjXCI6IFwi7Iic7ISc7IicXCIsXG4gIFwiZW51bS5Ub2tlblNlYXJjaEZpZWxkLmlkXCI6IFwiSURcIixcbiAgXCJlbnVtLlRva2VuU2VhcmNoRmllbGQubmFtZVwiOiBcIuydtOumhFwiLFxufSBhcyBjb25zdDtcblxuLy8gZGVmYXVsdExvY2FsZeydmCBkaWN0aW9uYXJ566W8IOq4sOykgOycvOuhnCDtgqQg7LaU7LacXG50eXBlIFJDS2V5cyA9IHR5cGVvZiByY0tleXNLbztcbnR5cGUgUHJvamVjdERpY3Rpb25hcnkgPSB0eXBlb2Yga287XG50eXBlIEVudGl0eUxhYmVscyA9IHR5cGVvZiBlbnRpdHlMYWJlbHM7XG50eXBlIFJhd01lcmdlZERpY3Rpb25hcnkgPSBSQ0tleXMgJlxuICBPbWl0PEVudGl0eUxhYmVscywga2V5b2YgKFJDS2V5cyAmIFByb2plY3REaWN0aW9uYXJ5KT4gJlxuICBQcm9qZWN0RGljdGlvbmFyeTtcblxuLy8g7YKk64qUIOycoOyngO2VmOuQmCwg6rCSIO2DgOyeheydgCBzdHJpbmcg65iQ64qUIO2VqOyImOuhnCDsnbzrsJjtmZQgKOuLpOuluCBsb2NhbGXsnZgg66as7YSw65+0IO2DgOyehSDstqnrj4wg67Cp7KeAKVxuZXhwb3J0IHR5cGUgTWVyZ2VkRGljdGlvbmFyeSA9IHtcbiAgW0sgaW4ga2V5b2YgUmF3TWVyZ2VkRGljdGlvbmFyeV06IFJhd01lcmdlZERpY3Rpb25hcnlbS10gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgUCkgPT4gc3RyaW5nXG4gICAgPyAoLi4uYXJnczogUCkgPT4gc3RyaW5nXG4gICAgOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRGljdEtleSA9IGtleW9mIE1lcmdlZERpY3Rpb25hcnk7XG5leHBvcnQgdHlwZSBMb2NhbGl6ZWRTdHJpbmcgPSBzdHJpbmcgJiB7IF9fYnJhbmQ6IFwiTG9jYWxpemVkU3RyaW5nXCIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUxvY2FsZShkaWN0OiBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+KSB7XG4gIHJldHVybiBkaWN0O1xufVxuXG4vLyDqsIEgbG9jYWxl67OE66GcIHJjLWtleXMgKyBlbnRpdHkgbGFiZWxzICsg7ZSE66Gc7KCd7Yq4IGRpY3Qg7ZWp7LmoXG5jb25zdCBkaWN0aW9uYXJpZXM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8TWVyZ2VkRGljdGlvbmFyeT4+ID0ge1xuICBrbzogeyAuLi5yY0tleXNLbywgLi4uZW50aXR5TGFiZWxzLCAuLi5rbyB9LFxuICBlbjogeyAuLi5yY0tleXNFbiwgLi4uZW4gfSxcbn07XG5cbnR5cGUgU0RSZXR1cm5UeXBlPEsgZXh0ZW5kcyBEaWN0S2V5PiA9IE1lcmdlZERpY3Rpb25hcnlbS10gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgUCkgPT4gc3RyaW5nXG4gID8gKC4uLmFyZ3M6IFApID0+IExvY2FsaXplZFN0cmluZ1xuICA6IExvY2FsaXplZFN0cmluZztcblxuZnVuY3Rpb24gZ2V0RGljdFZhbHVlPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEssIGxvY2FsZTogc3RyaW5nKTogU0RSZXR1cm5UeXBlPEs+IHtcbiAgLy8gMS4g7KeA7KCV65CcIGxvY2FsZeyXkOyEnCDsobDtmoxcbiAgY29uc3QgZGljdCA9IGRpY3Rpb25hcmllc1tsb2NhbGVdO1xuICBpZiAoZGljdD8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkaWN0W2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gIH1cblxuICAvLyAyLiBkZWZhdWx0IGxvY2FsZeyXkOyEnCDsobDtmoxcbiAgaWYgKGxvY2FsZSAhPT0gREVGQVVMVF9MT0NBTEUgJiYgZGljdGlvbmFyaWVzW0RFRkFVTFRfTE9DQUxFXT8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdW2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gIH1cblxuICAvLyAzLiBzdXBwb3J0ZWQgbG9jYWxlcyDsiJztmoxcbiAgZm9yIChjb25zdCBzdXBwb3J0ZWRMb2NhbGUgb2YgU1VQUE9SVEVEX0xPQ0FMRVMpIHtcbiAgICBpZiAoc3VwcG9ydGVkTG9jYWxlICE9PSBsb2NhbGUgJiYgc3VwcG9ydGVkTG9jYWxlICE9PSBERUZBVUxUX0xPQ0FMRSkge1xuICAgICAgaWYgKGRpY3Rpb25hcmllc1tzdXBwb3J0ZWRMb2NhbGVdPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkaWN0aW9uYXJpZXNbc3VwcG9ydGVkTG9jYWxlXVtrZXldIGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIDQuIOuqqOuRkCDsi6TtjKgg7IucIGtleSDrsJjtmZhcbiAgcmV0dXJuIGtleSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbn1cblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSDtlajsiJhcbiAqIGxvY2FsZeyXkCDrp57ripQg67KI7JetIO2FjeyKpO2KuOulvCDrsJjtmZjtlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIFNEKFwiY29tbW9uLnNhdmVcIikgIC8vIOKGkiBcIuyggOyepVwiIChMb2NhbGl6ZWRTdHJpbmcpXG4gKiBTRChcInVzZXIubm90Rm91bmRcIikoMSkgIC8vIOKGkiBcIuyhtOyerO2VmOyngCDslYrripQgVXNlciBJRCAxXCIgKExvY2FsaXplZFN0cmluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNEPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEspOiBTRFJldHVyblR5cGU8Sz4ge1xuICBjb25zdCBsb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIHJldHVybiBnZXREaWN0VmFsdWUoa2V5LCBsb2NhbGUpO1xufVxuXG4vKipcbiAqIO2KueyglSBsb2NhbGXsnZgg67KI7JetIO2FjeyKpO2KuOulvCDrsJjtmZjtlZjripQg7ZWo7IiY66W8IOyDneyEse2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgRU4gPSBTRC5sb2NhbGUoXCJlblwiKTtcbiAqIEVOKFwiY29tbW9uLnNhdmVcIikgIC8vIOKGkiBcIlNhdmVcIlxuICovXG5TRC5sb2NhbGUgPVxuICAobG9jYWxlOiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdKSA9PlxuICA8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiA9PiB7XG4gICAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG4gIH07XG5cbi8vIExvY2FsaXplZCDqsIDriqXtlZwgQ29sdW1uIO2DgOyehSDqs4TsgrBcbnR5cGUgTG9jYWxpemVkQmFzZUNvbHVtbjxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCAmIHN0cmluZ106IEsgZXh0ZW5kcyBgJHtpbmZlciBCYXNlfV8keyh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl19YFxuICAgID8gQmFzZVxuICAgIDogSztcbn1ba2V5b2YgVCAmIHN0cmluZ107XG5cbi8qKlxuICogbG9jYWxl7JeQIOuUsOudvCDsoIHsoIjtlZwg7Lus65+8IOqwkuydhCDrsJjtmZjtlanri4jri6QuXG4gKiBEQuyXkCBuYW1lLCBuYW1lX2tvLCBuYW1lX2Vu7LKY65+8IGxvY2FsaXplZCBjb2x1bW7snbQg7J6I7J2EIOuVjCDsgqzsmqntlanri4jri6QuXG4gKlxuICog7Jqw7ISg7Iic7JyEICjsp4Dsm5Ag66Gc7LyA7J287J2AIGtvL2pwL2Vu7J206rOgLCDshJzruYTsiqTsnZgg6riw67O4IOuhnOy8gOydvOydgCBrbywg7IKs7Jqp7J6Q7J2YIOuhnOy8gOydvOydgCBqcOydvCDrlYwpOiBjb2x1bW5fanAg4oaSIGNvbHVtbiDihpIgY29sdW1uX2tvIOKGkiBjb2x1bW5fZW5cbiAqIOyasOyEoOyInOychCAo7KeA7JuQIOuhnOy8gOydvOydgCBrby9qcC9lbuydtOqzoCwg7ISc67mE7Iqk7J2YIOq4sOuzuCDroZzsvIDsnbzsnYAgZW4sIOyCrOyaqeyekOydmCDroZzsvIDsnbzsnYAga2/snbwg65WMKTogY29sdW1uX2tvIOKGkiBjb2x1bW4g4oaSIGNvbHVtbl9lbiDihpIgY29sdW1uX2pwXG4gKlxuICogQGV4YW1wbGVcbiAqIGxvY2FsaXplZENvbHVtbih0YWcsIFwibmFtZVwiKVxuICovXG50eXBlIExvY2FsaXplZENvbHVtblNjYWxhclZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IGJpZ2ludDtcbnR5cGUgTG9jYWxpemVkQ29sdW1uVmFsdWUgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgTmVzdGVkTG9jYWxpemVkQ29sdW1uVmFsdWVGcm9tPFY+ID0gViBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZ1xuICA6IFYgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXVxuICAgID8gc3RyaW5nW11cbiAgICA6IG5ldmVyO1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5WYWx1ZUZyb208Vj4gPSBWIGV4dGVuZHMgc3RyaW5nXG4gID8gc3RyaW5nXG4gIDogViBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgPyBzdHJpbmdbXVxuICAgIDogViBleHRlbmRzIG51bWJlciB8IGJvb2xlYW4gfCBiaWdpbnRcbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFYgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDwodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdLCBpbmZlciBMVj4+XG4gICAgICAgID8gTmVzdGVkTG9jYWxpemVkQ29sdW1uVmFsdWVGcm9tPExWPlxuICAgICAgICA6IG5ldmVyO1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5DYW5kaWRhdGU8VCwgSyBleHRlbmRzIHN0cmluZz4gPVxuICB8IChLIGV4dGVuZHMga2V5b2YgVCA/IFRbS10gOiBuZXZlcilcbiAgfCB7XG4gICAgICBbTCBpbiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdXTogYCR7S31fJHtMfWAgZXh0ZW5kcyBrZXlvZiBUXG4gICAgICAgID8gVFtgJHtLfV8ke0x9YF1cbiAgICAgICAgOiBuZXZlcjtcbiAgICB9Wyh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl1dO1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5SZXR1cm48VCwgSyBleHRlbmRzIHN0cmluZz4gPVxuICB8IExvY2FsaXplZENvbHVtblZhbHVlRnJvbTxMb2NhbGl6ZWRDb2x1bW5DYW5kaWRhdGU8VCwgSz4+XG4gIHwgdW5kZWZpbmVkO1xudHlwZSBMb2NhbGVWYWx1ZU1hcCA9IFBhcnRpYWw8UmVjb3JkPCh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0sIHVua25vd24+PjtcblxuZnVuY3Rpb24gaXNMb2NhbGl6ZWRDb2x1bW5WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIExvY2FsaXplZENvbHVtblZhbHVlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHxcbiAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNMb2NhbGl6ZWRDb2x1bW5TY2FsYXJWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIExvY2FsaXplZENvbHVtblNjYWxhclZhbHVlIHtcbiAgcmV0dXJuIFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJvb2xlYW5cIiwgXCJiaWdpbnRcIl0uaW5jbHVkZXModHlwZW9mIHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNFbXB0eUxvY2FsaXplZENvbHVtblZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCB8IFwiXCIge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIjtcbn1cblxuZnVuY3Rpb24gZ2V0TmVzdGVkTG9jYWxlVmFsdWU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBLIGV4dGVuZHMgTG9jYWxpemVkQmFzZUNvbHVtbjxUPj4oXG4gIHJvdzogVCxcbiAgY29sdW1uOiBLLFxuICBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0sXG4pOiB1bmtub3duIHtcbiAgY29uc3QgY29sdW1uVmFsdWUgPSByb3dbY29sdW1uXTtcbiAgaWYgKGNvbHVtblZhbHVlID09PSBudWxsIHx8IHR5cGVvZiBjb2x1bW5WYWx1ZSAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGNvbHVtblZhbHVlKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gKGNvbHVtblZhbHVlIGFzIExvY2FsZVZhbHVlTWFwKVtsb2NhbGVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxpemVkQ29sdW1uPFxuICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIEsgZXh0ZW5kcyBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+LFxuPihyb3c6IFQsIGNvbHVtbjogSyk6IExvY2FsaXplZENvbHVtblJldHVybjxULCBLPiB7XG4gIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIGNvbnN0IGxvY2FsZSA9IFNVUFBPUlRFRF9MT0NBTEVTLmluY2x1ZGVzKGN1cnJlbnRMb2NhbGUpID8gY3VycmVudExvY2FsZSA6IERFRkFVTFRfTE9DQUxFO1xuICBjb25zdCBvdGhlckxvY2FsZXMgPSBTVVBQT1JURURfTE9DQUxFUy5maWx0ZXIoXG4gICAgKGw6IHN0cmluZykgPT4gbCAhPT0gbG9jYWxlICYmIGwgIT09IERFRkFVTFRfTE9DQUxFLFxuICApO1xuICBjb25zdCBsb2NhbGl6ZWRLZXkgPSAoY29sdW1uOiBLLCBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gICAgYCR7Y29sdW1ufV8ke2xvY2FsZX1gO1xuICBjb25zdCB2YWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogcm93W2xvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSldLCBzb3VyY2U6IFwiZGlyZWN0XCIgfSxcbiAgICB7IHZhbHVlOiBnZXROZXN0ZWRMb2NhbGVWYWx1ZShyb3csIGNvbHVtbiwgbG9jYWxlKSwgc291cmNlOiBcIm5lc3RlZFwiIH0sXG4gICAgeyB2YWx1ZTogcm93W2NvbHVtbl0sIHNvdXJjZTogXCJkaXJlY3RcIiB9LFxuICAgIHsgdmFsdWU6IHJvd1tsb2NhbGl6ZWRLZXkoY29sdW1uLCBERUZBVUxUX0xPQ0FMRSldLCBzb3VyY2U6IFwiZGlyZWN0XCIgfSxcbiAgICB7IHZhbHVlOiBnZXROZXN0ZWRMb2NhbGVWYWx1ZShyb3csIGNvbHVtbiwgREVGQVVMVF9MT0NBTEUpLCBzb3VyY2U6IFwibmVzdGVkXCIgfSxcbiAgICAuLi5vdGhlckxvY2FsZXMuZmxhdE1hcCgobCkgPT4gW1xuICAgICAgeyB2YWx1ZTogcm93W2xvY2FsaXplZEtleShjb2x1bW4sIGwpXSwgc291cmNlOiBcImRpcmVjdFwiIH0sXG4gICAgICB7IHZhbHVlOiBnZXROZXN0ZWRMb2NhbGVWYWx1ZShyb3csIGNvbHVtbiwgbCksIHNvdXJjZTogXCJuZXN0ZWRcIiB9LFxuICAgIF0pLFxuICBdO1xuXG4gIGZvciAoY29uc3QgeyB2YWx1ZSwgc291cmNlIH0gb2YgdmFsdWVzKSB7XG4gICAgaWYgKCFpc0VtcHR5TG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWUpICYmIGlzTG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgTG9jYWxpemVkQ29sdW1uUmV0dXJuPFQsIEs+O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzb3VyY2UgPT09IFwiZGlyZWN0XCIgJiZcbiAgICAgICFpc0VtcHR5TG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWUpICYmXG4gICAgICBpc0xvY2FsaXplZENvbHVtblNjYWxhclZhbHVlKHZhbHVlKVxuICAgICkge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSkgYXMgTG9jYWxpemVkQ29sdW1uUmV0dXJuPFQsIEs+O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRW51beydmCBsb2NhbGl6ZWQgbGFiZWxz66W8IFByb3h566GcIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIFNlbGVjdCDsu7Ttj6zrhIztirgg65Ox7JeQ7IScIEVudW1MYWJlbFtrZXldIOuMgOyLoCDsgqzsmqntlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIFNELmVudW1MYWJlbHMoXCJUYWdPcmRlckJ5XCIpW2tleV0gIC8vIOKGkiDtmITsnqwgbG9jYWxl7J2YIOudvOuyqFxuICovXG5TRC5lbnVtTGFiZWxzID0gKGVudW1OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBMb2NhbGl6ZWRTdHJpbmc+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm94eSh7fSBhcyBSZWNvcmQ8c3RyaW5nLCBMb2NhbGl6ZWRTdHJpbmc+LCB7XG4gICAgZ2V0KF8sIGtleTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkaWN0S2V5ID0gYGVudW0uJHtlbnVtTmFtZX0uJHtrZXl9YCBhcyBEaWN0S2V5O1xuICAgICAgcmV0dXJuIGdldERpY3RWYWx1ZShkaWN0S2V5LCBnZXRDdXJyZW50TG9jYWxlKCkpO1xuICAgIH0sXG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFPQSxNQUFNLGlCQUFpQjtBQUN2QixNQUFNLG9CQUFvQixDQUFDLE1BQU0sSUFBSTtBQUNyQyxTQUFTLG1CQUF1RDtDQUM5RCxJQUFJO0VBRUYsT0FEWSxPQUFPLFdBQ1gsQ0FBQSxDQUFJLFVBQWlEO0NBQy9ELFFBQVE7RUFDTixPQUFPO0NBQ1Q7QUFDRjtBQU1BLE1BQU0sV0FB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
388
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QuZ2VuZXJhdGVkLmpzIiwibmFtZXMiOlsia28iLCJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pMThuL3NkLmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcImtvXCIgYXMgY29uc3Q7XG5jb25zdCBTVVBQT1JURURfTE9DQUxFUyA9IFtcImtvXCIsIFwiZW5cIl0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIChjdHgubG9jYWxlIGFzICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gREVGQVVMVF9MT0NBTEU7XG4gIH1cbn1cblxuaW1wb3J0IGVuIGZyb20gXCIuL2VuXCI7XG5pbXBvcnQga28gZnJvbSBcIi4va29cIjtcblxuLy8gcmVhY3QtY29tcG9uZW50cyBpMThuIGtleXNcbmNvbnN0IHJjS2V5c0tvID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwi66Gc65SpIOykkS4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIuyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLmFzeW5jU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gQ29tYm9ib3ggQ29tcG9uZW50XG4gIFwicmMuY29tYm9ib3gubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5jb21ib2JveC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIERhdGVQaWNrZXIgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVBpY2tlci5waWNrRGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVQaWNrZXIuc2VsZWN0RGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwi64Kg7KecIOy2lOqwgFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIuq4sOqwhFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcblxuICAvLyBGaWxlSW5wdXQgQ29tcG9uZW50XG4gIFwicmMuZmlsZUlucHV0LmJyb3dzZUZpbGVzXCI6IFwi7YyM7J28IOywvuq4sFwiLFxuICBcInJjLmZpbGVJbnB1dC5kcm9wWm9uZVwiOiBcIu2MjOydvOydhCDrk5zrnpjqt7jtlZjqsbDrgpgg7YG066at7ZWY7JesIOyXheuhnOuTnFwiLFxuICBcInJjLmZpbGVJbnB1dC5maWxlUGxhY2Vob2xkZXJcIjogXCLtjIzsnbxcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIuydtOuvuOyngFwiLFxuICBcInJjLmZpbGVJbnB1dC5tYXhGaWxlc0V4Y2VlZGVkXCI6IChtYXhGaWxlczogbnVtYmVyKSA9PlxuICAgIGDstZzrjIAgJHttYXhGaWxlc33qsJwg7YyM7J2866eMIOyXheuhnOuTnCDqsIDriqXtlanri4jri6RgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwi64yA6riwIOykkVwiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCLsoJzqsbBcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwi7JeF66Gc65OcIOyLpO2MqFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCLsl4XroZzrk5wg7KSRLi4uXCIsXG5cbiAgLy8gTW9udGhQaWNrZXJNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmFkZE1vbnRoXCI6IFwi7JuUIOy2lOqwgFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZGF0ZVJhbmdlXCI6IFwi6riw6rCEXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwi7KKF66OM7J28XCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIuyblCDshKDtg51cIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnN0YXJ0RGF0ZVwiOiBcIuyLnOyekeydvFwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwi7KCE7LK0IO2VtOygnFwiLFxuICBcInJjLm11bHRpU2VsZWN0LmNsb3NlXCI6IFwi64ur6riwXCIsXG4gIFwicmMubXVsdGlTZWxlY3QubW9yZUl0ZW1zXCI6IChjb3VudDogbnVtYmVyKSA9PiBgKyR7Y291bnR96rCcIOuNlOuztOq4sGAsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zXCI6IFwi7Ji17IWY7J20IOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1NlbGVjdGVkXCI6IFwi7ISg7YOd65CcIOyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR96rCcIOyYteyFmGAsXG4gIFwicmMubXVsdGlTZWxlY3Quc2VsZWN0QWxsXCI6IFwi7KCE7LK0IOyEoO2DnVwiLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gUGFnaW5hdGlvbiBDb21wb25lbnRcbiAgXCJyYy5wYWdpbmF0aW9uLm5leHRcIjogXCLri6TsnYxcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnByZXZpb3VzXCI6IFwi7J207KCEXCIsXG4gIFwicmMucGFnaW5hdGlvbi5zaG93aW5nXCI6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT5cbiAgICBgJHt0b3RhbH3qsJwg7KSRICR7c3RhcnR9LSR7ZW5kfWAsXG5cbiAgLy8gQ2FsZW5kYXIgQ29tcG9uZW50XG4gIFwicmMuY2FsZW5kYXIubW9udGguMFwiOiBcIjHsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xXCI6IFwiMuyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCIz7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguM1wiOiBcIjTsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC40XCI6IFwiNeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjVcIjogXCI27JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNlwiOiBcIjfsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC43XCI6IFwiOOyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCI57JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguOVwiOiBcIjEw7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMTBcIjogXCIxMeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjExXCI6IFwiMTLsm5RcIixcblxuICAvLyBTb25hbXUgRmlsdGVyIENvbXBvbmVudFxuICBcInJjLnNvbmFtdUZpbHRlci50aXRsZVwiOiBcIuyGjOuCmOustCDtlYTthLBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbHlcIjogXCLsoIHsmqlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCLstIjquLDtmZRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYWRkUnVsZVwiOiBcIuq3nOy5mSDstpTqsIBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAn7JWE7KeBIOq3nOy5meydtCDsl4bsirXri4jri6QuIFwiKyDqt5zsuZkg7LaU6rCAXCLrpbwg7YG066at7ZWY7JesIOyLnOyeke2VmOyEuOyalC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIu2VhOuTnCDshKDtg51cIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0T3BlcmF0b3JcIjogXCLsl7DsgrDsnpAg7ISg7YOdXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCLrqLzsoIAg7Jew7IKw7J6Q66W8IOyEoO2Dne2VmOyEuOyalFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlclZhbHVlXCI6IFwi6rCSIOyeheugpVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlck51bWJlclwiOiBcIuyIq+yekCDsnoXroKVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm90U3VwcG9ydGVkXCI6IFwi7KeA7JuQ7ZWY7KeAIOyViuydjFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zdGFydERhdGVcIjogXCLsi5zsnpHsnbxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW5kRGF0ZVwiOiBcIuyiheujjOydvFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hcHBsaWVkRmlsdGVyc1wiOiBcIvCfjLIg7KCB7Jqp65CcIOyGjOuCmOustCDtlYTthLBcIixcblxuICAvLyBDb21tb25cbiAgXCJyYy5jb21tb24uY2FuY2VsXCI6IFwi7Leo7IaMXCIsXG4gIFwicmMuY29tbW9uLnNhdmVcIjogXCLsoIDsnqVcIixcbn07XG5cbmNvbnN0IHJjS2V5c0VuID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwiTG9hZGluZy4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIk5vIG9wdGlvbnNcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Quc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBDb21ib2JveCBDb21wb25lbnRcbiAgXCJyYy5jb21ib2JveC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuY29tYm9ib3guc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBEYXRlUGlja2VyIENvbXBvbmVudFxuICBcInJjLmRhdGVQaWNrZXIucGlja0RhdGVcIjogXCJQaWNrIGRhdGVcIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5zZWxlY3REYXRlXCI6IFwiU2VsZWN0IGRhdGVcIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwiQWRkIGRhdGVcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCJSYW5nZVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuXG4gIC8vIEZpbGVJbnB1dCBDb21wb25lbnRcbiAgXCJyYy5maWxlSW5wdXQuYnJvd3NlRmlsZXNcIjogXCJCcm93c2UgZmlsZXNcIixcbiAgXCJyYy5maWxlSW5wdXQuZHJvcFpvbmVcIjogXCJEcmFnIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gdXBsb2FkXCIsXG4gIFwicmMuZmlsZUlucHV0LmZpbGVQbGFjZWhvbGRlclwiOiBcIkZpbGVcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIkltYWdlXCIsXG4gIFwicmMuZmlsZUlucHV0Lm1heEZpbGVzRXhjZWVkZWRcIjogKG1heEZpbGVzOiBudW1iZXIpID0+IGBNYXhpbXVtICR7bWF4RmlsZXN9IGZpbGVzIGFsbG93ZWRgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwiUGVuZGluZ1wiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCJSZW1vdmVcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwiVXBsb2FkIGZhaWxlZFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCJVcGxvYWRpbmcuLi5cIixcblxuICAvLyBNb250aFBpY2tlck11bHRpcGxlIENvbXBvbmVudFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuYWRkTW9udGhcIjogXCJBZGQgbW9udGhcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIlJhbmdlXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBtb250aFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwiQ2xlYXIgYWxsXCIsXG4gIFwicmMubXVsdGlTZWxlY3QuY2xvc2VcIjogXCJDbG9zZVwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm1vcmVJdGVtc1wiOiAoY291bnQ6IG51bWJlcikgPT4gYCske2NvdW50fSBtb3JlYCxcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub09wdGlvbnNcIjogXCJObyBvcHRpb25zXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zU2VsZWN0ZWRcIjogXCJObyBvcHRpb25zIHNlbGVjdGVkXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR9IG9wdGlvbnNgLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdEFsbFwiOiBcIlNlbGVjdCBhbGxcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIlNlbGVjdC4uLlwiLFxuXG4gIC8vIFBhZ2luYXRpb24gQ29tcG9uZW50XG4gIFwicmMucGFnaW5hdGlvbi5uZXh0XCI6IFwiTmV4dFwiLFxuICBcInJjLnBhZ2luYXRpb24ucHJldmlvdXNcIjogXCJQcmV2aW91c1wiLFxuICBcInJjLnBhZ2luYXRpb24uc2hvd2luZ1wiOiAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpID0+XG4gICAgYFNob3dpbmcgJHtzdGFydH0tJHtlbmR9IG9mICR7dG90YWx9YCxcblxuICAvLyBDYWxlbmRhciBDb21wb25lbnRcbiAgXCJyYy5jYWxlbmRhci5tb250aC4wXCI6IFwiSmFudWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjFcIjogXCJGZWJydWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCJNYXJjaFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjNcIjogXCJBcHJpbFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjRcIjogXCJNYXlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC41XCI6IFwiSnVuZVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjZcIjogXCJKdWx5XCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguN1wiOiBcIkF1Z3VzdFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCJTZXB0ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC45XCI6IFwiT2N0b2JlclwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjEwXCI6IFwiTm92ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMVwiOiBcIkRlY2VtYmVyXCIsXG5cbiAgLy8gU29uYW11IEZpbHRlciBDb21wb25lbnRcbiAgXCJyYy5zb25hbXVGaWx0ZXIudGl0bGVcIjogXCJTb25hbXUgRmlsdGVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGx5XCI6IFwiQXBwbHlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCJSZXNldFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hZGRSdWxlXCI6IFwiQWRkIFJ1bGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAnTm8gcnVsZXMgeWV0LiBDbGljayBcIisgQWRkIFJ1bGVcIiB0byBzdGFydC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIlNlbGVjdCBmaWVsZFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvclwiOiBcIk9wZXJhdG9yXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCJTZWxlY3Qgb3BlcmF0b3IgZmlyc3RcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJWYWx1ZVwiOiBcIkVudGVyIHZhbHVlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVudGVyTnVtYmVyXCI6IFwiRW50ZXIgbnVtYmVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vdFN1cHBvcnRlZFwiOiBcIk5vdCBzdXBwb3J0ZWRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbGllZEZpbHRlcnNcIjogXCLwn4yyIEFwcGxpZWQgU29uYW11RmlsdGVyc1wiLFxuXG4gIC8vIENvbW1vblxuICBcInJjLmNvbW1vbi5jYW5jZWxcIjogXCJDYW5jZWxcIixcbiAgXCJyYy5jb21tb24uc2F2ZVwiOiBcIlNhdmVcIixcbn0gYXMgY29uc3Q7XG5cbi8vIGVudGl0eS5qc29u7JeQ7IScIOy2lOy2nO2VnCBlbnRpdHkgbGFiZWxzIChkZWZhdWx0TG9jYWxlIOyghOyaqSlcbmNvbnN0IGVudGl0eUxhYmVscyA9IHtcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1wiOiBcIlJlcXVlc3RMb2dcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY3JlYXRlZF9hdFwiOiBcIuuTseuhneydvOyLnFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRva2VuX25hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucHJvamVjdF9uYW1lXCI6IFwi7ZSE66Gc7KCd7Yq4IOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLm1vZGVsX25hbWVcIjogXCLrqqjrjbgg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IOydtOumhCAoZmFsbGJhY2sg7KCEKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnVzZXJfcHJvbXB0XCI6IFwi7IKs7Jqp7J6QIO2UhOuhrO2UhO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnN5c3RlbV9wcm9tcHRcIjogXCLsi5zsiqTthZwg7ZSE66Gs7ZSE7Yq4XCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVzcG9uc2VcIjogXCJsbG0g7J2R64u1IOyghOusuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmlucHV0X3Rva2Vuc1wiOiBcIuyeheugpSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5vdXRwdXRfdG9rZW5zXCI6IFwi7Lac66ClIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX3JlYWRfdG9rZW5zXCI6IFwi7LqQ7IucIOydveq4sCDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIjogXCLsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCI6IFwiMeyLnOqwhCBUVEwg7LqQ7IucIOyDneyEsSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5kdXJhdGlvbl9tc1wiOiBcIuydkeuLtSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cudHRmdF9tc1wiOiBcImZpcnN0IGdlbiBUVEZUKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3RfdXNkXCI6IFwiQVBJIOu5hOyaqVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3Rfc291cmNlXCI6IFwi67mE7JqpIOy2nOyymChwcm92aWRlci9wcmljaW5nX3RhYmxlL21peGVkKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmltYWdlX2Nvc3RfdXNkXCI6IFwi7J2066+47KeAIOyDneyEsSDstpTsoJUg67mE7JqpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaW1hZ2VfY29zdF9tZXRob2RcIjogXCLsnbTrr7jsp4Ag67mE7JqpIOy2lOyglSDrsKnsi51cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5lZmZvcnRcIjogXCJlZmZvcnQgbGV2ZWxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5oaXN0b3J5XCI6IFwiaW5qZWN0X2l0ZW1zIO2eiOyKpO2GoOumrFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRvb2xzXCI6IFwi7JqU7LKt7JeQIOyepeywqeuQnCB0b29sIOygleydmCDrqqnroZ1cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5zdGF0dXNcIjogXCLsi6Ttlokg7IOB7YOcXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuZXJyb3JfbWVzc2FnZVwiOiBcIuyXkOufrCDrqZTsi5zsp4BcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy50b29sX2NhbGxfY291bnRcIjogXCJ0b29sIGNhbGwg7Zqf7IiYXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiOiBcIuydtOuvuOyngCDsg53shLEgdHVybiDsl6zrtoAgKHF1b3RhIOq3gOyGjeyaqSlcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LmlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuaWQtYXNjXCI6IFwiSUTsmKTrnpjrkJzsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LmNyZWF0ZWRfYXQtZGVzY1wiOiBcIuuTseuhneydvOyLnOy1nOyLoOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY3JlYXRlZF9hdC1hc2NcIjogXCLrk7HroZ3snbzsi5zsmKTrnpjrkJzsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LnR0ZnRfbXMtZGVzY1wiOiBcIlRURlTquLTsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LnR0ZnRfbXMtYXNjXCI6IFwiVFRGVOynp+ydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuZHVyYXRpb25fbXMtZGVzY1wiOiBcIuyGjOyalOyLnOqwhOq4tOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuZHVyYXRpb25fbXMtYXNjXCI6IFwi7IaM7JqU7Iuc6rCE7Ken7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5pbnB1dF90b2tlbnMtZGVzY1wiOiBcIuyeheugpe2GoO2BsOunjuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuaW5wdXRfdG9rZW5zLWFzY1wiOiBcIuyeheugpe2GoO2BsOyggeydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkub3V0cHV0X3Rva2Vucy1kZXNjXCI6IFwi7Lac66Cl7Yag7YGw66eO7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5vdXRwdXRfdG9rZW5zLWFzY1wiOiBcIuy2nOugpe2GoO2BsOyggeydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY2FjaGVfcmVhZF90b2tlbnMtZGVzY1wiOiBcIuy6kOyLnOydveq4sOunjuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY2FjaGVfcmVhZF90b2tlbnMtYXNjXCI6IFwi7LqQ7Iuc7J296riw7KCB7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5jYWNoZV9jcmVhdGlvbl90b2tlbnMtZGVzY1wiOiBcIuy6kOyLnOyDneyEseunjuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY2FjaGVfY3JlYXRpb25fdG9rZW5zLWFzY1wiOiBcIuy6kOyLnOyDneyEseyggeydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY29zdF91c2QtZGVzY1wiOiBcIuu5hOyaqeuGkuydgOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuY29zdF91c2QtYXNjXCI6IFwi67mE7Jqp64Ku7J2A7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1NlYXJjaEZpZWxkLnRva2VuX25hbWVcIjogXCLthqDtgbDsnbTrpoRcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTZWFyY2hGaWVsZC51c2VyX3Byb21wdFwiOiBcIuyCrOyaqeyekCDtlITroaztlITtirhcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGF0dXMucnVubmluZ1wiOiBcIuyLpO2WiSDspJFcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGF0dXMuc3VjY2VlZGVkXCI6IFwi7ISx6rO1XCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLmVycm9yXCI6IFwi7JeQ65+sXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLmFib3J0ZWRcIjogXCLspJHri6hcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXBcIjogXCJSZXF1ZXN0TG9nU3RlcFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVxdWVzdF9sb2dcIjogXCLrtoDrqqggcmVxdWVzdCBsb2cgSURcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuc3RlcF9pbmRleFwiOiBcImFpLXNkayBzdGVwIG51bWJlciAoMC1iYXNlZClcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudHlwZVwiOiBcInN0ZXAg7YOA7J6FXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLm1vZGVsX25hbWVcIjogXCLsi6TsoJwgc2VydmluZyDrqqjrjbhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IChmYWxsYmFjayDsoIQpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5pbnB1dF90b2tlbnNcIjogXCLsnoXroKUg7Yag7YGwIChnZW5lcmF0ZSlcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAub3V0cHV0X3Rva2Vuc1wiOiBcIuy2nOugpSDthqDtgbAgKGdlbmVyYXRlKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jYWNoZV9yZWFkX3Rva2Vuc1wiOiBcIuy6kOyLnCDsnb3quLAg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiOiBcIuy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiOiBcIjHsi5zqsIQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNvc3RfdXNkXCI6IFwic3RlcCDruYTsmqkgKG1pY3JvLVVTRClcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuY29zdF9zb3VyY2VcIjogXCLruYTsmqkg7Lac7LKYKHByb3ZpZGVyL3ByaWNpbmdfdGFibGUpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmR1cmF0aW9uX21zXCI6IFwi7IaM7JqU7Iuc6rCEKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC50dGZ0X21zXCI6IFwiR2VuIFRURlQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmZpbmlzaF9yZWFzb25cIjogXCLsmYTro4wg7IKs7JygXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnJlYXNvbmluZ190ZXh0XCI6IFwicmVhc29uaW5nIO2FjeyKpO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5yZWFzb25pbmdfdG9rZW5zXCI6IFwicmVhc29uaW5nIO2GoO2BsCDsiJhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9jYWxsX2luZGV4XCI6IFwi6rCZ7J2AIHN0ZXAg64K0IHRvb2wgY2FsbCDsiJzshJxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9jYWxsX2lkXCI6IFwidG9vbCBjYWxsIElEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfbmFtZVwiOiBcInRvb2wg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfYXJnc1wiOiBcInRvb2wg7J247J6QIChKU09OIHN0cmluZylcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9yZXN1bHRcIjogXCJ0b29sIOqysOqzvCAoSlNPTiBzdHJpbmcpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfZHVyYXRpb25fbXNcIjogXCJ0b29sIOyLpO2WiSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmVycm9yXCI6IFwic3RlcCDsl5Drn6wg66mU7Iuc7KeAXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcFR5cGUuZ2VuZXJhdGVcIjogXCJMTE0g7IOd7ISxXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcFR5cGUudG9vbF9jYWxsXCI6IFwiVG9vbCDtmLjstpxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGVwT3JkZXJCeS5pZC1hc2NcIjogXCJJROyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0ZXBTZWFyY2hGaWVsZC5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlNldHRpbmdcIjogXCJTZXR0aW5nXCIsXG4gIFwiZW50aXR5LlNldHRpbmcuaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5TZXR0aW5nLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuU2V0dGluZy5rZXlcIjogXCLshKTsoJUg7YKkICjsmIg6IG9wZW5haS5tYXhXb3JrZXJzUGVyVG9rZW4pXCIsXG4gIFwiZW50aXR5LlNldHRpbmcudmFsdWVcIjogXCLshKTsoJUg6rCSICjrrLjsnpDsl7Qg7KCA7J6lLCDslbHsl5DshJwg7YyM7IuxwrfqsoDspp0pXCIsXG4gIFwiZW50aXR5LlNldHRpbmcudXBkYXRlZF9hdFwiOiBcIuy1nOyihSDsiJjsoJXsnbzsi5xcIixcbiAgXCJlbnVtLlNldHRpbmdPcmRlckJ5LmtleS1hc2NcIjogXCLtgqTsiJxcIixcbiAgXCJlbnVtLlNldHRpbmdTZWFyY2hGaWVsZC5rZXlcIjogXCLtgqRcIixcbiAgXCJlbnRpdHkuVG9rZW5cIjogXCJUb2tlblwiLFxuICBcImVudGl0eS5Ub2tlbi5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlRva2VuLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuVG9rZW4ucHJvdmlkZXJcIjogXCLtlITroZzrsJTsnbTrjZRcIixcbiAgXCJlbnRpdHkuVG9rZW4uY3JlZGVudGlhbHNcIjogXCLsnbjspp0g7KCV67O0IChKU09OQilcIixcbiAgXCJlbnRpdHkuVG9rZW4ubmFtZVwiOiBcIu2GoO2BsCDsnbTrpoRcIixcbiAgXCJlbnRpdHkuVG9rZW4uYWN0aXZlXCI6IFwi7Zmc7ISxIOyXrOu2gFwiLFxuICBcImVudGl0eS5Ub2tlbi5vcmRcIjogXCLsoJXroKwg7Iic7IScXCIsXG4gIFwiZW50aXR5LlRva2VuLnF1b3RhX3RocmVzaG9sZFwiOiBcInF1b3RhIOyCrOyaqeuloCDsnoTqs4TsuZgoJSkuIG51bGzsnbTrqbQg66+47ISk7KCVXCIsXG4gIFwiZW50aXR5LlRva2VuLndlaWdodFwiOiBcIuqwgOykkSDrnbzsmrTrk5zroZzruYgg65287Jqw7YyFIOqwgOykkey5mCAoMS4uMTAwKVwiLFxuICBcImVudW0uVG9rZW5PcmRlckJ5LmlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLFxuICBcImVudW0uVG9rZW5PcmRlckJ5Lm9yZC1hc2NcIjogXCLsiJzshJzsiJxcIixcbiAgXCJlbnVtLlRva2VuU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudW0uVG9rZW5TZWFyY2hGaWVsZC5uYW1lXCI6IFwi7J2066aEXCIsXG59IGFzIGNvbnN0O1xuXG4vLyBkZWZhdWx0TG9jYWxl7J2YIGRpY3Rpb25hcnnrpbwg6riw7KSA7Jy866GcIO2CpCDstpTstpxcbnR5cGUgUkNLZXlzID0gdHlwZW9mIHJjS2V5c0tvO1xudHlwZSBQcm9qZWN0RGljdGlvbmFyeSA9IHR5cGVvZiBrbztcbnR5cGUgRW50aXR5TGFiZWxzID0gdHlwZW9mIGVudGl0eUxhYmVscztcbnR5cGUgUmF3TWVyZ2VkRGljdGlvbmFyeSA9IFJDS2V5cyAmXG4gIE9taXQ8RW50aXR5TGFiZWxzLCBrZXlvZiAoUkNLZXlzICYgUHJvamVjdERpY3Rpb25hcnkpPiAmXG4gIFByb2plY3REaWN0aW9uYXJ5O1xuXG4vLyDtgqTripQg7Jyg7KeA7ZWY65CYLCDqsJIg7YOA7J6F7J2AIHN0cmluZyDrmJDripQg7ZWo7IiY66GcIOydvOuwmO2ZlCAo64uk66W4IGxvY2FsZeydmCDrpqzthLDrn7Qg7YOA7J6FIOy2qeuPjCDrsKnsp4ApXG5leHBvcnQgdHlwZSBNZXJnZWREaWN0aW9uYXJ5ID0ge1xuICBbSyBpbiBrZXlvZiBSYXdNZXJnZWREaWN0aW9uYXJ5XTogUmF3TWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgICA/ICguLi5hcmdzOiBQKSA9PiBzdHJpbmdcbiAgICA6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBEaWN0S2V5ID0ga2V5b2YgTWVyZ2VkRGljdGlvbmFyeTtcbmV4cG9ydCB0eXBlIExvY2FsaXplZFN0cmluZyA9IHN0cmluZyAmIHsgX19icmFuZDogXCJMb2NhbGl6ZWRTdHJpbmdcIiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTG9jYWxlKGRpY3Q6IFBhcnRpYWw8TWVyZ2VkRGljdGlvbmFyeT4pIHtcbiAgcmV0dXJuIGRpY3Q7XG59XG5cbi8vIOqwgSBsb2NhbGXrs4TroZwgcmMta2V5cyArIGVudGl0eSBsYWJlbHMgKyDtlITroZzsoJ3tirggZGljdCDtlansuahcbmNvbnN0IGRpY3Rpb25hcmllczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pj4gPSB7XG4gIGtvOiB7IC4uLnJjS2V5c0tvLCAuLi5lbnRpdHlMYWJlbHMsIC4uLmtvIH0sXG4gIGVuOiB7IC4uLnJjS2V5c0VuLCAuLi5lbiB9LFxufTtcblxudHlwZSBTRFJldHVyblR5cGU8SyBleHRlbmRzIERpY3RLZXk+ID0gTWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgPyAoLi4uYXJnczogUCkgPT4gTG9jYWxpemVkU3RyaW5nXG4gIDogTG9jYWxpemVkU3RyaW5nO1xuXG5mdW5jdGlvbiBnZXREaWN0VmFsdWU8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSywgbG9jYWxlOiBzdHJpbmcpOiBTRFJldHVyblR5cGU8Sz4ge1xuICAvLyAxLiDsp4DsoJXrkJwgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBjb25zdCBkaWN0ID0gZGljdGlvbmFyaWVzW2xvY2FsZV07XG4gIGlmIChkaWN0Py5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDIuIGRlZmF1bHQgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBpZiAobG9jYWxlICE9PSBERUZBVUxUX0xPQ0FMRSAmJiBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rpb25hcmllc1tERUZBVUxUX0xPQ0FMRV1ba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDMuIHN1cHBvcnRlZCBsb2NhbGVzIOyInO2ajFxuICBmb3IgKGNvbnN0IHN1cHBvcnRlZExvY2FsZSBvZiBTVVBQT1JURURfTE9DQUxFUykge1xuICAgIGlmIChzdXBwb3J0ZWRMb2NhbGUgIT09IGxvY2FsZSAmJiBzdXBwb3J0ZWRMb2NhbGUgIT09IERFRkFVTFRfTE9DQUxFKSB7XG4gICAgICBpZiAoZGljdGlvbmFyaWVzW3N1cHBvcnRlZExvY2FsZV0/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRpY3Rpb25hcmllc1tzdXBwb3J0ZWRMb2NhbGVdW2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gNC4g66qo65GQIOyLpO2MqCDsi5wga2V5IOuwmO2ZmFxuICByZXR1cm4ga2V5IGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xufVxuXG4vKipcbiAqIFNvbmFtdSBEaWN0aW9uYXJ5IO2VqOyImFxuICogbG9jYWxl7JeQIOunnuuKlCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QoXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwi7KCA7J6lXCIgKExvY2FsaXplZFN0cmluZylcbiAqIFNEKFwidXNlci5ub3RGb3VuZFwiKSgxKSAgLy8g4oaSIFwi7KG07J6s7ZWY7KeAIOyViuuKlCBVc2VyIElEIDFcIiAoTG9jYWxpemVkU3RyaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gU0Q8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59XG5cbi8qKlxuICog7Yq57KCVIGxvY2FsZeydmCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VmOuKlCDtlajsiJjrpbwg7IOd7ISx7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBFTiA9IFNELmxvY2FsZShcImVuXCIpO1xuICogRU4oXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwiU2F2ZVwiXG4gKi9cblNELmxvY2FsZSA9XG4gIChsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gIDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+ID0+IHtcbiAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGtleSwgbG9jYWxlKTtcbiAgfTtcblxuLy8gTG9jYWxpemVkIOqwgOuKpe2VnCBDb2x1bW4g7YOA7J6FIOqzhOyCsFxudHlwZSBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUICYgc3RyaW5nXTogSyBleHRlbmRzIGAke2luZmVyIEJhc2V9XyR7KHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXX1gXG4gICAgPyBCYXNlXG4gICAgOiBLO1xufVtrZXlvZiBUICYgc3RyaW5nXTtcblxuLyoqXG4gKiBsb2NhbGXsl5Ag65Sw6528IOyggeygiO2VnCDsu6zrn7wg6rCS7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIERC7JeQIG5hbWUsIG5hbWVfa28sIG5hbWVfZW7sspjrn7wgbG9jYWxpemVkIGNvbHVtbuydtCDsnojsnYQg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGtvLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGpw7J28IOuVjCk6IGNvbHVtbl9qcCDihpIgY29sdW1uIOKGkiBjb2x1bW5fa28g4oaSIGNvbHVtbl9lblxuICog7Jqw7ISg7Iic7JyEICjsp4Dsm5Ag66Gc7LyA7J287J2AIGtvL2pwL2Vu7J206rOgLCDshJzruYTsiqTsnZgg6riw67O4IOuhnOy8gOydvOydgCBlbiwg7IKs7Jqp7J6Q7J2YIOuhnOy8gOydvOydgCBrb+ydvCDrlYwpOiBjb2x1bW5fa28g4oaSIGNvbHVtbiDihpIgY29sdW1uX2VuIOKGkiBjb2x1bW5fanBcbiAqXG4gKiBAZXhhbXBsZVxuICogbG9jYWxpemVkQ29sdW1uKHRhZywgXCJuYW1lXCIpXG4gKi9cbnR5cGUgTG9jYWxpemVkQ29sdW1uU2NhbGFyVmFsdWUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgYmlnaW50O1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5WYWx1ZSA9IHN0cmluZyB8IHN0cmluZ1tdO1xudHlwZSBOZXN0ZWRMb2NhbGl6ZWRDb2x1bW5WYWx1ZUZyb208Vj4gPSBWIGV4dGVuZHMgc3RyaW5nXG4gID8gc3RyaW5nXG4gIDogViBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgPyBzdHJpbmdbXVxuICAgIDogbmV2ZXI7XG50eXBlIExvY2FsaXplZENvbHVtblZhbHVlRnJvbTxWPiA9IFYgZXh0ZW5kcyBzdHJpbmdcbiAgPyBzdHJpbmdcbiAgOiBWIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW11cbiAgICA/IHN0cmluZ1tdXG4gICAgOiBWIGV4dGVuZHMgbnVtYmVyIHwgYm9vbGVhbiB8IGJpZ2ludFxuICAgICAgPyBzdHJpbmdcbiAgICAgIDogViBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPCh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0sIGluZmVyIExWPj5cbiAgICAgICAgPyBOZXN0ZWRMb2NhbGl6ZWRDb2x1bW5WYWx1ZUZyb208TFY+XG4gICAgICAgIDogbmV2ZXI7XG50eXBlIExvY2FsaXplZENvbHVtbkNhbmRpZGF0ZTxULCBLIGV4dGVuZHMgc3RyaW5nPiA9XG4gIHwgKEsgZXh0ZW5kcyBrZXlvZiBUID8gVFtLXSA6IG5ldmVyKVxuICB8IHtcbiAgICAgIFtMIGluICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl1dOiBgJHtLfV8ke0x9YCBleHRlbmRzIGtleW9mIFRcbiAgICAgICAgPyBUW2Ake0t9XyR7TH1gXVxuICAgICAgICA6IG5ldmVyO1xuICAgIH1bKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXV07XG50eXBlIExvY2FsaXplZENvbHVtblJldHVybjxULCBLIGV4dGVuZHMgc3RyaW5nPiA9XG4gIHwgTG9jYWxpemVkQ29sdW1uVmFsdWVGcm9tPExvY2FsaXplZENvbHVtbkNhbmRpZGF0ZTxULCBLPj5cbiAgfCB1bmRlZmluZWQ7XG50eXBlIExvY2FsZVZhbHVlTWFwID0gUGFydGlhbDxSZWNvcmQ8KHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSwgdW5rbm93bj4+O1xuXG5mdW5jdGlvbiBpc0xvY2FsaXplZENvbHVtblZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgTG9jYWxpemVkQ29sdW1uVmFsdWUge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeSgoaXRlbSkgPT4gdHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpKVxuICApO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsaXplZENvbHVtblNjYWxhclZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgTG9jYWxpemVkQ29sdW1uU2NhbGFyVmFsdWUge1xuICByZXR1cm4gW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwiYm9vbGVhblwiLCBcImJpZ2ludFwiXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5TG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHwgXCJcIiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBcIlwiO1xufVxuXG5mdW5jdGlvbiBnZXROZXN0ZWRMb2NhbGVWYWx1ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIEsgZXh0ZW5kcyBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+PihcbiAgcm93OiBULFxuICBjb2x1bW46IEssXG4gIGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSxcbik6IHVua25vd24ge1xuICBjb25zdCBjb2x1bW5WYWx1ZSA9IHJvd1tjb2x1bW5dO1xuICBpZiAoY29sdW1uVmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIGNvbHVtblZhbHVlICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoY29sdW1uVmFsdWUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiAoY29sdW1uVmFsdWUgYXMgTG9jYWxlVmFsdWVNYXApW2xvY2FsZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZWRDb2x1bW48XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgSyBleHRlbmRzIExvY2FsaXplZEJhc2VDb2x1bW48VD4sXG4+KHJvdzogVCwgY29sdW1uOiBLKTogTG9jYWxpemVkQ29sdW1uUmV0dXJuPFQsIEs+IHtcbiAgY29uc3QgY3VycmVudExvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgY29uc3QgbG9jYWxlID0gU1VQUE9SVEVEX0xPQ0FMRVMuaW5jbHVkZXMoY3VycmVudExvY2FsZSkgPyBjdXJyZW50TG9jYWxlIDogREVGQVVMVF9MT0NBTEU7XG4gIGNvbnN0IG90aGVyTG9jYWxlcyA9IFNVUFBPUlRFRF9MT0NBTEVTLmZpbHRlcihcbiAgICAobDogc3RyaW5nKSA9PiBsICE9PSBsb2NhbGUgJiYgbCAhPT0gREVGQVVMVF9MT0NBTEUsXG4gICk7XG4gIGNvbnN0IGxvY2FsaXplZEtleSA9IChjb2x1bW46IEssIGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSkgPT5cbiAgICBgJHtjb2x1bW59XyR7bG9jYWxlfWA7XG4gIGNvbnN0IHZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiByb3dbbG9jYWxpemVkS2V5KGNvbHVtbiwgbG9jYWxlKV0sIHNvdXJjZTogXCJkaXJlY3RcIiB9LFxuICAgIHsgdmFsdWU6IGdldE5lc3RlZExvY2FsZVZhbHVlKHJvdywgY29sdW1uLCBsb2NhbGUpLCBzb3VyY2U6IFwibmVzdGVkXCIgfSxcbiAgICB7IHZhbHVlOiByb3dbY29sdW1uXSwgc291cmNlOiBcImRpcmVjdFwiIH0sXG4gICAgeyB2YWx1ZTogcm93W2xvY2FsaXplZEtleShjb2x1bW4sIERFRkFVTFRfTE9DQUxFKV0sIHNvdXJjZTogXCJkaXJlY3RcIiB9LFxuICAgIHsgdmFsdWU6IGdldE5lc3RlZExvY2FsZVZhbHVlKHJvdywgY29sdW1uLCBERUZBVUxUX0xPQ0FMRSksIHNvdXJjZTogXCJuZXN0ZWRcIiB9LFxuICAgIC4uLm90aGVyTG9jYWxlcy5mbGF0TWFwKChsKSA9PiBbXG4gICAgICB7IHZhbHVlOiByb3dbbG9jYWxpemVkS2V5KGNvbHVtbiwgbCldLCBzb3VyY2U6IFwiZGlyZWN0XCIgfSxcbiAgICAgIHsgdmFsdWU6IGdldE5lc3RlZExvY2FsZVZhbHVlKHJvdywgY29sdW1uLCBsKSwgc291cmNlOiBcIm5lc3RlZFwiIH0sXG4gICAgXSksXG4gIF07XG5cbiAgZm9yIChjb25zdCB7IHZhbHVlLCBzb3VyY2UgfSBvZiB2YWx1ZXMpIHtcbiAgICBpZiAoIWlzRW1wdHlMb2NhbGl6ZWRDb2x1bW5WYWx1ZSh2YWx1ZSkgJiYgaXNMb2NhbGl6ZWRDb2x1bW5WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZSBhcyBMb2NhbGl6ZWRDb2x1bW5SZXR1cm48VCwgSz47XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHNvdXJjZSA9PT0gXCJkaXJlY3RcIiAmJlxuICAgICAgIWlzRW1wdHlMb2NhbGl6ZWRDb2x1bW5WYWx1ZSh2YWx1ZSkgJiZcbiAgICAgIGlzTG9jYWxpemVkQ29sdW1uU2NhbGFyVmFsdWUodmFsdWUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKSBhcyBMb2NhbGl6ZWRDb2x1bW5SZXR1cm48VCwgSz47XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnVt7J2YIGxvY2FsaXplZCBsYWJlbHPrpbwgUHJveHnroZwg67CY7ZmY7ZWp64uI64ukLlxuICogU2VsZWN0IOy7tO2PrOuEjO2KuCDrk7Hsl5DshJwgRW51bUxhYmVsW2tleV0g64yA7IugIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QuZW51bUxhYmVscyhcIlRhZ09yZGVyQnlcIilba2V5XSAgLy8g4oaSIO2YhOyerCBsb2NhbGXsnZgg652867KoXG4gKi9cblNELmVudW1MYWJlbHMgPSAoZW51bU5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4sIHtcbiAgICBnZXQoXywga2V5OiBzdHJpbmcgfCBzeW1ib2wpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpY3RLZXkgPSBgZW51bS4ke2VudW1OYW1lfS4ke2tleX1gIGFzIERpY3RLZXk7XG4gICAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGRpY3RLZXksIGdldEN1cnJlbnRMb2NhbGUoKSk7XG4gICAgfSxcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQU9BLE1BQU0saUJBQWlCO0FBQ3ZCLE1BQU0sb0JBQW9CLENBQUMsTUFBTSxJQUFJO0FBQ3JDLFNBQVMsbUJBQXVEO0NBQzlELElBQUk7RUFFRixPQURZLE9BQU8sV0FDWCxDQUFBLENBQUksVUFBaUQ7Q0FDL0QsUUFBUTtFQUNOLE9BQU87Q0FDVDtBQUNGO0FBTUEsTUFBTSxXQUFXO0NBRWYsMEJBQTBCO0NBQzFCLDRCQUE0QjtDQUM1Qiw0QkFBNEI7Q0FDNUIsb0NBQW9DO0NBR3BDLHlCQUF5QjtDQUN6QixpQ0FBaUM7Q0FHakMsMEJBQTBCO0NBQzFCLDZCQUE2QjtDQUM3Qiw0QkFBNEI7Q0FHNUIsbUNBQW1DO0NBQ25DLHFDQUFxQztDQUNyQyx1Q0FBdUM7Q0FDdkMsc0NBQXNDO0NBR3RDLDRCQUE0QjtDQUM1Qix5QkFBeUI7Q0FDekIsZ0NBQWdDO0NBQ2hDLGlDQUFpQztDQUNqQyxrQ0FBa0MsYUFDaEMsTUFBTSxTQUFTO0NBQ2pCLHdCQUF3QjtDQUN4Qix1QkFBdUI7Q0FDdkIsNkJBQTZCO0NBQzdCLDBCQUEwQjtDQUcxQixtQ0FBbUM7Q0FDbkMsb0NBQW9DO0NBQ3BDLGtDQUFrQztDQUNsQyxzQ0FBc0M7Q0FDdEMscUNBQXFDO0NBQ3JDLG9DQUFvQztDQUdwQyx3QkFBd0I7Q0FDeEIsd0JBQXdCO0NBQ3hCLDZCQUE2QixVQUFrQixJQUFJLE1BQU07Q0FDekQsNEJBQTRCO0NBQzVCLG9DQUFv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
@@ -0,0 +1,24 @@
1
+ //#region src/migrations/20260808194708_create__settings.ts
2
+ async function up(knex) {
3
+ await knex.schema.createTable("settings", (table) => {
4
+ table.increments().primary();
5
+ table.timestamp("created_at", {
6
+ useTz: true,
7
+ precision: 3
8
+ }).notNullable().defaultTo(knex.raw("CURRENT_TIMESTAMP"));
9
+ table.string("key", 100).notNullable();
10
+ table.text("value").notNullable();
11
+ table.timestamp("updated_at", {
12
+ useTz: true,
13
+ precision: 3
14
+ }).nullable();
15
+ });
16
+ await knex.raw(`CREATE UNIQUE INDEX settings_key_unique ON settings USING btree(key);`);
17
+ }
18
+ async function down(knex) {
19
+ return knex.schema.dropTable("settings");
20
+ }
21
+ //#endregion
22
+ export { down, up };
23
+
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyNjA4MDgxOTQ3MDhfY3JlYXRlX19zZXR0aW5ncy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9ucy8yMDI2MDgwODE5NDcwOF9jcmVhdGVfX3NldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cChrbmV4OiBLbmV4KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGtuZXguc2NoZW1hLmNyZWF0ZVRhYmxlKFwic2V0dGluZ3NcIiwgKHRhYmxlKSA9PiB7XG4gICAgdGFibGUuaW5jcmVtZW50cygpLnByaW1hcnkoKTtcbiAgICB0YWJsZVxuICAgICAgLnRpbWVzdGFtcChcImNyZWF0ZWRfYXRcIiwgeyB1c2VUejogdHJ1ZSwgcHJlY2lzaW9uOiAzIH0pXG4gICAgICAubm90TnVsbGFibGUoKVxuICAgICAgLmRlZmF1bHRUbyhrbmV4LnJhdyhcIkNVUlJFTlRfVElNRVNUQU1QXCIpKTtcbiAgICB0YWJsZS5zdHJpbmcoXCJrZXlcIiwgMTAwKS5ub3ROdWxsYWJsZSgpO1xuICAgIHRhYmxlLnRleHQoXCJ2YWx1ZVwiKS5ub3ROdWxsYWJsZSgpO1xuICAgIHRhYmxlLnRpbWVzdGFtcChcInVwZGF0ZWRfYXRcIiwgeyB1c2VUejogdHJ1ZSwgcHJlY2lzaW9uOiAzIH0pLm51bGxhYmxlKCk7XG4gIH0pO1xuICBhd2FpdCBrbmV4LnJhdyhgQ1JFQVRFIFVOSVFVRSBJTkRFWCBzZXR0aW5nc19rZXlfdW5pcXVlIE9OIHNldHRpbmdzIFVTSU5HIGJ0cmVlKGtleSk7YCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3duKGtuZXg6IEtuZXgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIGtuZXguc2NoZW1hLmRyb3BUYWJsZShcInNldHRpbmdzXCIpO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBRUEsZUFBc0IsR0FBRyxNQUEyQjtDQUNsRCxNQUFNLEtBQUssT0FBTyxZQUFZLGFBQWEsVUFBVTtFQUNuRCxNQUFNLFdBQVcsQ0FBQyxDQUFDLFFBQVE7RUFDM0IsTUFDRyxVQUFVLGNBQWM7R0FBRSxPQUFPO0dBQU0sV0FBVztFQUFFLENBQUMsQ0FBQyxDQUN0RCxZQUFZLENBQUMsQ0FDYixVQUFVLEtBQUssSUFBSSxtQkFBbUIsQ0FBQztFQUMxQyxNQUFNLE9BQU8sT0FBTyxHQUFHLENBQUMsQ0FBQyxZQUFZO0VBQ3JDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxZQUFZO0VBQ2hDLE1BQU0sVUFBVSxjQUFjO0dBQUUsT0FBTztHQUFNLFdBQVc7RUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO0NBQ3hFLENBQUM7Q0FDRCxNQUFNLEtBQUssSUFBSSx1RUFBdUU7QUFDeEY7QUFFQSxlQUFzQixLQUFLLE1BQTJCO0NBQ3BELE9BQU8sS0FBSyxPQUFPLFVBQVUsVUFBVTtBQUN6QyJ9
@@ -1,6 +1,7 @@
1
1
  import { monitLogSink } from "./application/monit/log-buffer.js";
2
+ import { loadSettings, setSettingChangeHandler } from "./application/setting/setting.store.js";
2
3
  import { QgridDispatcher } from "./application/qgrid/qgrid.dispatcher.js";
3
- import { startExpiredTokenReminder, stopExpiredTokenReminder } from "./application/qgrid/expired-token-reminder.js";
4
+ import { rescheduleExpiredTokenReminder, startExpiredTokenReminder, stopExpiredTokenReminder } from "./application/qgrid/expired-token-reminder.js";
4
5
  import { QgridFrame } from "./application/qgrid/qgrid.frame.js";
5
6
  import { TokenSubscriber } from "./application/qgrid/token-subscriber.js";
6
7
  import { ensureTokensTrigger } from "./application/qgrid/token-trigger-setup.js";
@@ -133,6 +134,10 @@ var sonamu_config_default = defineConfig({
133
134
  lifecycle: {
134
135
  onStart: async () => {
135
136
  const log = getLogger(["qgrid", "startup"]);
137
+ await loadSettings();
138
+ setSettingChangeHandler((key) => {
139
+ if (key === "slack.expiryReminderMinutes") rescheduleExpiredTokenReminder();
140
+ });
136
141
  let triggerReady = true;
137
142
  try {
138
143
  await ensureTokensTrigger(connConfig);
@@ -173,6 +178,7 @@ var sonamu_config_default = defineConfig({
173
178
  onShutdown: async () => {
174
179
  const log = getLogger(["qgrid", "startup"]);
175
180
  stopExpiredTokenReminder();
181
+ setSettingChangeHandler(null);
176
182
  if (QgridDispatcher.openaiDispatcher) await QgridDispatcher.openaiDispatcher.stop();
177
183
  if (QgridDispatcher.anthropicDispatcher) await QgridDispatcher.anthropicDispatcher.stop();
178
184
  if (QgridDispatcher.subscriber) await QgridDispatcher.subscriber.stop();
@@ -187,4 +193,4 @@ var sonamu_config_default = defineConfig({
187
193
  //#endregion
188
194
  export { sonamu_config_default as default };
189
195
 
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmNvbmZpZy5qcyIsIm5hbWVzIjpbImNhY2hlRHJpdmVycyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zb25hbXUuY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGdldENvbnNvbGVTaW5rIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgeyBDYWNoZVByZXNldHMsIGRlZmluZUNvbmZpZyB9IGZyb20gXCJzb25hbXVcIjtcbmltcG9ydCB7IGRyaXZlcnMgYXMgY2FjaGVEcml2ZXJzLCBzdG9yZSB9IGZyb20gXCJzb25hbXUvY2FjaGVcIjtcblxuaW1wb3J0IHsgbW9uaXRMb2dTaW5rIH0gZnJvbSBcIi4vYXBwbGljYXRpb24vbW9uaXQvbG9nLWJ1ZmZlclwiO1xuaW1wb3J0IHtcbiAgc3RhcnRFeHBpcmVkVG9rZW5SZW1pbmRlcixcbiAgc3RvcEV4cGlyZWRUb2tlblJlbWluZGVyLFxufSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9xZ3JpZC9leHBpcmVkLXRva2VuLXJlbWluZGVyXCI7XG5pbXBvcnQgeyBRZ3JpZERpc3BhdGNoZXIgfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC5kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBRZ3JpZEZyYW1lIH0gZnJvbSBcIi4vYXBwbGljYXRpb24vcWdyaWQvcWdyaWQuZnJhbWVcIjtcbmltcG9ydCB7IFRva2VuU3Vic2NyaWJlciB9IGZyb20gXCIuL2FwcGxpY2F0aW9uL3FncmlkL3Rva2VuLXN1YnNjcmliZXJcIjtcbmltcG9ydCB7IGVuc3VyZVRva2Vuc1RyaWdnZXIgfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9xZ3JpZC90b2tlbi10cmlnZ2VyLXNldHVwXCI7XG5pbXBvcnQgeyBoYW5kbGVTZXJ2ZXJFcnJvciB9IGZyb20gXCIuL3NlcnZlci1lcnJvci1oYW5kbGVyXCI7XG5pbXBvcnQgeyBBbnRocm9waWNEaXNwYXRjaGVyIH0gZnJvbSBcIi4vdXRpbHMvcHJvdmlkZXJzL2FudGhyb3BpYy9hbnRocm9waWMtZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgT3BlbkFJRGlzcGF0Y2hlciB9IGZyb20gXCIuL3V0aWxzL3Byb3ZpZGVycy9vcGVuYWkvb3BlbmFpLWRpc3BhdGNoZXJcIjtcblxuY29uc3QgaG9zdCA9IHByb2Nlc3MuZW52LkhPU1QgPz8gXCJsb2NhbGhvc3RcIjtcbmNvbnN0IHBvcnQgPSBOdW1iZXIocHJvY2Vzcy5lbnYuUE9SVCA/PyA0NDkwMCk7XG5cbmNvbnN0IGNvbm5Db25maWcgPSB7XG4gIGhvc3Q6IHByb2Nlc3MuZW52LlNPTkFNVV9EQl9IT1NUID8/IFwibG9jYWxob3N0XCIsXG4gIHBvcnQ6IE51bWJlcihwcm9jZXNzLmVudi5TT05BTVVfREJfUE9SVCA/PyA1NDMyKSxcbiAgdXNlcjogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX1VTRVIgPz8gXCJwb3N0Z3Jlc1wiLFxuICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX1BBU1NXT1JEID8/IFwicG9zdGdyZXNcIixcbiAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LlNPTkFNVV9EQl9OQU1FID8/IFwicWdyaWRcIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIHByb2plY3ROYW1lOiBwcm9jZXNzLmVudi5QUk9KRUNUX05BTUUgPz8gXCJRZ3JpZFwiLFxuICBkYXRhYmFzZToge1xuICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgIC4uLmNvbm5Db25maWcsXG4gICAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICAgICAga2VlcEFsaXZlSW5pdGlhbERlbGF5TWlsbGlzOiAxMDAwMCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgYXBpOiB7XG4gICAgZGlyOiBcImFwaVwiLFxuICAgIHRpbWV6b25lOiBcIkFzaWEvU2VvdWxcIixcbiAgICByb3V0ZToge1xuICAgICAgcHJlZml4OiBcIi9hcGlcIixcbiAgICB9LFxuICB9LFxuICBpMThuOiB7XG4gICAgZGVmYXVsdExvY2FsZTogXCJrb1wiLFxuICAgIHN1cHBvcnRlZExvY2FsZXM6IFtcImtvXCIsIFwiZW5cIl0sXG4gIH0sXG4gIHN5bmM6IHtcbiAgICB0YXJnZXRzOiBbXCJ3ZWJcIl0sXG4gIH0sXG4gIHRlc3Q6IHtcbiAgICBwYXJhbGxlbDogdHJ1ZSxcbiAgICBtYXhXb3JrZXJzOiA0LFxuICAgIGRldlJ1bm5lcjogeyBlbmFibGVkOiB0cnVlIH0sXG4gIH0sXG4gIGxvZ2dpbmc6IHtcbiAgICBzaW5rczoge1xuICAgICAgY29uc29sZTogZ2V0Q29uc29sZVNpbmsoe1xuICAgICAgICBmb3JtYXR0ZXI6IGdldFByZXR0eUZvcm1hdHRlcih7XG4gICAgICAgICAgdGltZXN0YW1wOiBcInRpbWVcIixcbiAgICAgICAgICBjYXRlZ29yeVdpZHRoOiAyMCxcbiAgICAgICAgICBjYXRlZ29yeVRydW5jYXRlOiBcIm1pZGRsZVwiLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICAgLy8gTW9uaXQg7YOt7JqpIGluLW1lbW9yeSByaW5nIGJ1ZmZlci4g7Y+s66e37J2AIHNpbmsg67OEIOKAlCDsvZjshpQg7Lac66Cl7J2AIOq3uOuMgOuhnOuLpC5cbiAgICAgIG1vbml0OiBtb25pdExvZ1NpbmssXG4gICAgfSxcbiAgICBsb2dnZXJzOiBbXG4gICAgICAvLyBxZ3JpZCDroZzqt7ggKOyalOyyrSDrtoTrsLAsIG9hdXRoL3VzYWdlIEFQSSlcbiAgICAgIHsgY2F0ZWdvcnk6IFtcInFncmlkXCJdLCBzaW5rczogW1wiY29uc29sZVwiLCBcIm1vbml0XCJdLCBsb3dlc3RMZXZlbDogXCJpbmZvXCIgfSxcbiAgICAgIC8vIHNvbmFtdSDroZzqt7jripQgd2FybmluZyDsnbTsg4Hrp4xcbiAgICAgIHsgY2F0ZWdvcnk6IFtcInNvbmFtdVwiXSwgc2lua3M6IFtcImNvbnNvbGVcIiwgXCJtb25pdFwiXSwgbG93ZXN0TGV2ZWw6IFwid2FybmluZ1wiIH0sXG4gICAgICAvLyBmYXN0aWZ5IOuhnOq3uCDssKjri6hcbiAgICAgIHsgY2F0ZWdvcnk6IFtcImZhc3RpZnlcIl0sIHNpbmtzOiBbXSwgbG93ZXN0TGV2ZWw6IFwiZmF0YWxcIiB9LFxuICAgIF0sXG4gIH0sXG4gIHNlcnZlcjoge1xuICAgIGxpc3RlbjogeyBwb3J0LCBob3N0IH0sXG4gICAgZmFzdGlmeToge1xuICAgICAgYm9keUxpbWl0OiAxMCAqIDEwMjQgKiAxMDI0LFxuICAgIH0sXG4gICAgcGx1Z2luczoge1xuICAgICAgZm9ybWJvZHk6IHRydWUsXG4gICAgICBxczogdHJ1ZSxcbiAgICAgIHNzZTogdHJ1ZSxcbiAgICAgIG11bHRpcGFydDogeyBsaW1pdHM6IHsgZmlsZVNpemU6IDEwMjQgKiAxMDI0ICogMzAgfSB9LFxuICAgICAgc3RhdGljOiB7XG4gICAgICAgIHJvb3Q6IHBhdGguam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi8uLi9cIiwgXCJwdWJsaWNcIiksXG4gICAgICAgIHByZWZpeDogXCIvYXBpL3B1YmxpY1wiLFxuICAgICAgfSxcbiAgICAgIGN1c3RvbTogKHNlcnZlcikgPT4ge1xuICAgICAgICAvLyBPQXV0aCDsvZzrsLEg4oCUIEFudGhyb3BpY+ydtCAvY2FsbGJhY2vsnLzroZwg66as64uk7J2066CJ7Yq4XG4gICAgICAgIHNlcnZlci5nZXQoXCIvY2FsbGJhY2tcIiwgYXN5bmMgKHJlcXVlc3QsIHJlcGx5KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBjb2RlLCBzdGF0ZSB9ID0gcmVxdWVzdC5xdWVyeSBhcyB7IGNvZGU/OiBzdHJpbmc7IHN0YXRlPzogc3RyaW5nIH07XG4gICAgICAgICAgaWYgKCFjb2RlIHx8ICFzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KFwiLz9vYXV0aD1lcnJvciZyZWFzb249bWlzc2luZ19wYXJhbXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gUWdyaWRGcmFtZS5oYW5kbGVPQXV0aENhbGxiYWNrKGNvZGUsIHN0YXRlLCByZXBseSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KFxuICAgICAgICAgICAgICBgLz9vYXV0aD1lcnJvciZyZWFzb249JHtlbmNvZGVVUklDb21wb25lbnQoKGUgYXMgRXJyb3IpLm1lc3NhZ2UpfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gT3BlbkFJIE9BdXRoIOuKlCBjb2RleCBhcHAtc2VydmVyIOqwgCDsnpDssrQgY2FsbGJhY2sg7ISc67KE66W8IOyYrOumvFxuICAgICAgICAvLyBoYW5kbGVPcGVuQUlDYWxsYmFjayDrtojtlYTsmpQg4oCUIG9hdXRoQ29tcGxldGVPcGVuQUkgQVBJIOuhnCDsmYTro4wg7ZmV7J24XG4gICAgICB9LFxuICAgIH0sXG4gICAgYXBpQ29uZmlnOiB7XG4gICAgICBjb250ZXh0UHJvdmlkZXI6IChkZWZhdWx0Q29udGV4dCwgcmVxdWVzdCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRlZmF1bHRDb250ZXh0LFxuICAgICAgICAgIGlwOiByZXF1ZXN0LmlwLFxuICAgICAgICAgIGJvZHk6IHJlcXVlc3QuYm9keSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBndWFyZEhhbmRsZXI6ICgpID0+IHt9LFxuICAgICAgY2FjaGVDb250cm9sSGFuZGxlcjogKHJlcSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlcS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImFzc2V0c1wiOlxuICAgICAgICAgICAgLy8gSGFzaCDtj6ztlajrkJwg7YyM7J28OiDsmIHqtawg7LqQ7IucXG4gICAgICAgICAgICBpZiAocmVxLnBhdGgubWF0Y2goLy1bYS1mMC05XStcXC4vKSkge1xuICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLmltbXV0YWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMubG9uZ0xpdmVkO1xuXG4gICAgICAgICAgY2FzZSBcImFwaVwiOlxuICAgICAgICAgICAgLy8gR0VUIOyalOyyreunjCDsupDsi7Eg6rOg66CkXG4gICAgICAgICAgICBpZiAocmVxLm1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgICAgICAgICAvLyDtirnsoJUg6rK966Gc64qUIOynp+ydgCDsupDsi5xcbiAgICAgICAgICAgICAgaWYgKHJlcS5wYXRoLnN0YXJ0c1dpdGgoXCIvYXBpL3N0YXRpYy1kYXRhXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5zaG9ydExpdmVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXEucGF0aC5zdGFydHNXaXRoKFwiL2FwaS90ZXJtc1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMubWVkaXVtTGl2ZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOq4sOuzuDog7LqQ7IucIOyXhuydjFxuICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5ub0NhY2hlO1xuXG4gICAgICAgICAgY2FzZSBcInNzclwiOlxuICAgICAgICAgICAgLy8gU1NSIO2OmOydtOyngDogMTDstIgg7LqQ7IucXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNzcjtcblxuICAgICAgICAgIGNhc2UgXCJjc3JcIjpcbiAgICAgICAgICAgIC8vIENTUiBmYWxsYmFjayAoaW5kZXguaHRtbCk6IDHrtoQg7LqQ7IucXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNob3J0TGl2ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5ub0NhY2hlO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGNhY2hlOiB7XG4gICAgICBkZWZhdWx0OiBcIm1haW5cIixcbiAgICAgIHN0b3Jlczoge1xuICAgICAgICBtYWluOiBzdG9yZSgpLnVzZUwxTGF5ZXIoY2FjaGVEcml2ZXJzLm1lbW9yeSh7IG1heFNpemU6IFwiNTBtYlwiIH0pKSxcbiAgICAgIH0sXG4gICAgICB0dGw6IFwiNW1cIixcbiAgICAgIHByZWZpeDogXCJcIixcbiAgICB9LFxuICAgIGxpZmVjeWNsZToge1xuICAgICAgb25TdGFydDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2cgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJzdGFydHVwXCJdKTtcblxuICAgICAgICBsZXQgdHJpZ2dlclJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBlbnN1cmVUb2tlbnNUcmlnZ2VyKGNvbm5Db25maWcpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdHJpZ2dlclJlYWR5ID0gZmFsc2U7XG4gICAgICAgICAgbG9nLndhcm4oYHRyaWdnZXIgc2V0dXAgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlciA9IG5ldyBUb2tlblN1YnNjcmliZXIoY29ubkNvbmZpZywgUWdyaWREaXNwYXRjaGVyKTtcbiAgICAgICAgUWdyaWREaXNwYXRjaGVyLnN1YnNjcmliZXIgPSBzdWJzY3JpYmVyO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ZWQgPSBhd2FpdCBzdWJzY3JpYmVyLnN0YXJ0KCk7XG5cbiAgICAgICAgLy8g6riw64+ZIOyDge2DnOulvCDrgqjquLTri6Qg4oCUIEhUVFAg64qUIOydtOuvuCDsl7TroKQg7J6I7Ja07IScLCDspIDruYQg7KCEIOyalOyyreydtCBcIuyeoOyLnCDtm4Qg65CY64qU7KeAXCJcbiAgICAgICAgLy8gXCLsnqzsi5zrj4TtlbTrj4Qg7JWIIOuQmOuKlOyngFwi66W8IOq1rOu2hO2VtCDsnZHri7XtlbTslbwg7ZWc64ukKDUwMyB2cyA1MDApLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG9wZW5haURpc3BhdGNoZXIgPSBuZXcgT3BlbkFJRGlzcGF0Y2hlcigpO1xuICAgICAgICAgIGF3YWl0IG9wZW5haURpc3BhdGNoZXIuc3RhcnQoKTtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlciA9IG9wZW5haURpc3BhdGNoZXI7XG4gICAgICAgICAgUWdyaWREaXNwYXRjaGVyLnN0YXJ0dXBTdGF0ZS5vcGVuYWkgPSBcInJlYWR5XCI7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIuc3RhcnR1cFN0YXRlLm9wZW5haSA9IFwiZmFpbGVkXCI7XG4gICAgICAgICAgbG9nLndhcm4oYG9wZW5haSBkaXNwYXRjaGVyIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYW50aHJvcGljRGlzcGF0Y2hlciA9IG5ldyBBbnRocm9waWNEaXNwYXRjaGVyKCk7XG4gICAgICAgICAgYXdhaXQgYW50aHJvcGljRGlzcGF0Y2hlci5zdGFydCgpO1xuICAgICAgICAgIFFncmlkRGlzcGF0Y2hlci5hbnRocm9waWNEaXNwYXRjaGVyID0gYW50aHJvcGljRGlzcGF0Y2hlcjtcbiAgICAgICAgICBRZ3JpZERpc3BhdGNoZXIuc3RhcnR1cFN0YXRlLmFudGhyb3BpYyA9IFwicmVhZHlcIjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIFFncmlkRGlzcGF0Y2hlci5zdGFydHVwU3RhdGUuYW50aHJvcGljID0gXCJmYWlsZWRcIjtcbiAgICAgICAgICBsb2cud2FybihgYW50aHJvcGljIGRpc3BhdGNoZXIgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRFeHBpcmVkVG9rZW5SZW1pbmRlcigpO1xuXG4gICAgICAgIGNvbnN0IGFudGhyb3BpY0NvdW50ID0gUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXI/LnRva2VuQ291bnQgPz8gMDtcbiAgICAgICAgY29uc3Qgb3BlbmFpUmVhZHkgPSBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcj8ucmVhZHlXb3JrZXJDb3VudCA/PyAwO1xuICAgICAgICBjb25zdCBvcGVuYWlUb3RhbCA9IFFncmlkRGlzcGF0Y2hlci5vcGVuYWlEaXNwYXRjaGVyPy53b3JrZXJDb3VudCA/PyAwO1xuXG4gICAgICAgIGxvZy5pbmZvKGBsaXN0ZW5pbmcgb24gaHR0cDovLyR7aG9zdH06JHtwb3J0fWApO1xuICAgICAgICBsb2cuaW5mbyhgYW50aHJvcGljOiAke2FudGhyb3BpY0NvdW50fSB0b2tlbnMgcmVhZHlgKTtcbiAgICAgICAgbG9nLmluZm8oYG9wZW5haTogJHtvcGVuYWlSZWFkeX0vJHtvcGVuYWlUb3RhbH0gdG9rZW5zIHJlYWR5YCk7XG4gICAgICAgIGxvZy5pbmZvKFxuICAgICAgICAgIGBzdWJzY3JpYmVyOiAke3N0YXJ0ZWQgPyBcIkxJU1RFTiBhY3RpdmVcIiA6IFwiZGVncmFkZWRcIn0ke3RyaWdnZXJSZWFkeSA/IFwiXCIgOiBcIiwgdHJpZ2dlciBmYWlsZWRcIn1gLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIG9uU2h1dGRvd246IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbG9nID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwic3RhcnR1cFwiXSk7XG4gICAgICAgIHN0b3BFeHBpcmVkVG9rZW5SZW1pbmRlcigpO1xuICAgICAgICBpZiAoUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXIpIHtcbiAgICAgICAgICBhd2FpdCBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlci5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFFncmlkRGlzcGF0Y2hlci5hbnRocm9waWNEaXNwYXRjaGVyKSB7XG4gICAgICAgICAgYXdhaXQgUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChRZ3JpZERpc3BhdGNoZXIuc3Vic2NyaWJlcikge1xuICAgICAgICAgIGF3YWl0IFFncmlkRGlzcGF0Y2hlci5zdWJzY3JpYmVyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBsb2cuaW5mbyhcImdyYWNlZnVsIHNodXRkb3duXCIpO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3I6IChlcnJvciwgX3JlcXVlc3QsIHJlcGx5KSA9PiB7XG4gICAgICAgIGhhbmRsZVNlcnZlckVycm9yKGVycm9yLCByZXBseSk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLE1BQU0sT0FBTyxRQUFRLElBQUksUUFBUTtBQUNqQyxNQUFNLE9BQU8sT0FBTyxRQUFRLElBQUksUUFBUSxLQUFLO0FBRTdDLE1BQU0sYUFBYTtDQUNqQixNQUFNLFFBQVEsSUFBSSxrQkFBa0I7Q0FDcEMsTUFBTSxPQUFPLFFBQVEsSUFBSSxrQkFBa0IsSUFBSTtDQUMvQyxNQUFNLFFBQVEsSUFBSSxrQkFBa0I7Q0FDcEMsVUFBVSxRQUFRLElBQUksc0JBQXNCO0NBQzVDLFVBQVUsUUFBUSxJQUFJLGtCQUFrQjtBQUMxQztBQUVBLElBQUEsd0JBQWUsYUFBYTtDQUMxQixhQUFhLFFBQVEsSUFBSSxnQkFBZ0I7Q0FDekMsVUFBVSxFQUNSLGdCQUFnQixFQUNkLFlBQVk7RUFDVixHQUFHO0VBQ0gsV0FBVztFQUNYLDZCQUE2QjtDQUMvQixFQUNGLEVBQ0Y7Q0FD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
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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
@@ -1,3 +1,5 @@
1
+ import { SETTING_DEFS } from "../../../application/setting/setting.schema.js";
2
+ import { getSetting } from "../../../application/setting/setting.store.js";
1
3
  //#region src/utils/providers/openai/openai-worker-pool-config.ts
2
4
  const MAX_OPENAI_WORKERS_PER_TOKEN = 20;
3
5
  const DEFAULT_OPENAI_MIN_WORKERS_PER_TOKEN = 1;
@@ -9,12 +11,25 @@ function boundedInteger(value, fallback, min, max) {
9
11
  if (!Number.isFinite(parsed)) return fallback;
10
12
  return Math.max(min, Math.min(Math.floor(parsed), max));
11
13
  }
12
- function boundedNumber(value, fallback, min) {
14
+ function boundedNumber(value, fallback, min, max) {
13
15
  const parsed = Number(value);
14
16
  if (!Number.isFinite(parsed)) return fallback;
15
- return Math.max(min, parsed);
17
+ return Math.max(min, Math.min(parsed, max));
16
18
  }
17
- function resolveOpenAIWorkerPoolConfig(env = process.env) {
19
+ /**
20
+ * 설정 저장소(DB) 를 먼저 보고 없으면 env 로 떨어지는 조회 객체.
21
+ *
22
+ * 기존 파싱 로직이 `env[KEY]` 형태를 전제하므로, 소스만 바꿔 끼우고 검증·기본값 처리는
23
+ * 그대로 둔다. `get` 접근만 지원하므로 `in`이나 `Object.keys()`로 조회하지 않는다. 테스트는
24
+ * `env` 인자에 순수한 맵을 넘겨 저장소를 우회한다.
25
+ */
26
+ function settingsBackedEnv() {
27
+ return new Proxy({}, { get: (_target, prop) => {
28
+ const def = SETTING_DEFS.find((d) => d.envKey === prop);
29
+ return def ? getSetting(def.key, def.envKey) : process.env[prop];
30
+ } });
31
+ }
32
+ function resolveOpenAIWorkerPoolConfig(env = settingsBackedEnv()) {
18
33
  const autoscale = env.QGRID_OPENAI_AUTOSCALE !== "false" && env.QGRID_OPENAI_AUTOSCALE !== "0";
19
34
  const minWorkersPerToken = boundedInteger(env.QGRID_OPENAI_MIN_WORKERS_PER_TOKEN, DEFAULT_OPENAI_MIN_WORKERS_PER_TOKEN, 1, 20);
20
35
  return {
@@ -23,8 +38,8 @@ function resolveOpenAIWorkerPoolConfig(env = process.env) {
23
38
  maxWorkersPerToken: autoscale ? Math.max(minWorkersPerToken, boundedInteger(env.QGRID_OPENAI_MAX_WORKERS_PER_TOKEN, DEFAULT_OPENAI_MAX_WORKERS_PER_TOKEN, 1, 20)) : minWorkersPerToken,
24
39
  scaleIntervalMs: boundedInteger(env.QGRID_OPENAI_SCALE_INTERVAL_MS, 5e3, 250, 3e5),
25
40
  scaleDownIdleMs: boundedInteger(env.QGRID_OPENAI_SCALE_DOWN_IDLE_MS, 10 * 6e4, 1e3, 1440 * 6e4),
26
- maxEstimatedRssGiB: boundedNumber(env.QGRID_OPENAI_MAX_ESTIMATED_RSS_GIB, 16, 1),
27
- minHostAvailableGiB: boundedNumber(env.QGRID_OPENAI_MIN_HOST_AVAILABLE_GIB, 20, 0)
41
+ maxEstimatedRssGiB: boundedNumber(env.QGRID_OPENAI_MAX_ESTIMATED_RSS_GIB, 16, 1, 32),
42
+ minHostAvailableGiB: boundedNumber(env.QGRID_OPENAI_MIN_HOST_AVAILABLE_GIB, 20, 0, 64)
28
43
  };
29
44
  }
30
45
  function estimateOpenAIWorkerRssGiB(totalWorkers) {
@@ -33,4 +48,4 @@ function estimateOpenAIWorkerRssGiB(totalWorkers) {
33
48
  //#endregion
34
49
  export { MAX_OPENAI_WORKERS_PER_TOKEN, OPENAI_WORKER_BASE_RSS_GIB, OPENAI_WORKER_RSS_GIB, estimateOpenAIWorkerRssGiB, resolveOpenAIWorkerPoolConfig };
35
50
 
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLXdvcmtlci1wb29sLWNvbmZpZy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL29wZW5haS9vcGVuYWktd29ya2VyLXBvb2wtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBNQVhfT1BFTkFJX1dPUktFUlNfUEVSX1RPS0VOID0gMjA7XG5jb25zdCBERUZBVUxUX09QRU5BSV9NSU5fV09SS0VSU19QRVJfVE9LRU4gPSAxO1xuY29uc3QgREVGQVVMVF9PUEVOQUlfTUFYX1dPUktFUlNfUEVSX1RPS0VOID0gMztcblxuZXhwb3J0IGNvbnN0IE9QRU5BSV9XT1JLRVJfQkFTRV9SU1NfR0lCID0gMC43MTtcbmV4cG9ydCBjb25zdCBPUEVOQUlfV09SS0VSX1JTU19HSUIgPSAwLjE1NztcblxuZXhwb3J0IHR5cGUgT3BlbkFJV29ya2VyUG9vbENvbmZpZyA9IHtcbiAgYXV0b3NjYWxlOiBib29sZWFuO1xuICBtaW5Xb3JrZXJzUGVyVG9rZW46IG51bWJlcjtcbiAgbWF4V29ya2Vyc1BlclRva2VuOiBudW1iZXI7XG4gIHNjYWxlSW50ZXJ2YWxNczogbnVtYmVyO1xuICBzY2FsZURvd25JZGxlTXM6IG51bWJlcjtcbiAgbWF4RXN0aW1hdGVkUnNzR2lCOiBudW1iZXI7XG4gIG1pbkhvc3RBdmFpbGFibGVHaUI6IG51bWJlcjtcbn07XG5cbmZ1bmN0aW9uIGJvdW5kZWRJbnRlZ2VyKFxuICB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBmYWxsYmFjazogbnVtYmVyLFxuICBtaW46IG51bWJlcixcbiAgbWF4OiBudW1iZXIsXG4pOiBudW1iZXIge1xuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShwYXJzZWQpKSByZXR1cm4gZmFsbGJhY2s7XG4gIHJldHVybiBNYXRoLm1heChtaW4sIE1hdGgubWluKE1hdGguZmxvb3IocGFyc2VkKSwgbWF4KSk7XG59XG5cbmZ1bmN0aW9uIGJvdW5kZWROdW1iZXIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlciwgbWluOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShwYXJzZWQpKSByZXR1cm4gZmFsbGJhY2s7XG4gIHJldHVybiBNYXRoLm1heChtaW4sIHBhcnNlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3BlbkFJV29ya2VyUG9vbENvbmZpZyhcbiAgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+ID0gcHJvY2Vzcy5lbnYsXG4pOiBPcGVuQUlXb3JrZXJQb29sQ29uZmlnIHtcbiAgY29uc3QgYXV0b3NjYWxlID0gZW52LlFHUklEX09QRU5BSV9BVVRPU0NBTEUgIT09IFwiZmFsc2VcIiAmJiBlbnYuUUdSSURfT1BFTkFJX0FVVE9TQ0FMRSAhPT0gXCIwXCI7XG4gIGNvbnN0IG1pbldvcmtlcnNQZXJUb2tlbiA9IGJvdW5kZWRJbnRlZ2VyKFxuICAgIGVudi5RR1JJRF9PUEVOQUlfTUlOX1dPUktFUlNfUEVSX1RPS0VOLFxuICAgIERFRkFVTFRfT1BFTkFJX01JTl9XT1JLRVJTX1BFUl9UT0tFTixcbiAgICAxLFxuICAgIE1BWF9PUEVOQUlfV09SS0VSU19QRVJfVE9LRU4sXG4gICk7XG4gIHJldHVybiB7XG4gICAgYXV0b3NjYWxlLFxuICAgIG1pbldvcmtlcnNQZXJUb2tlbixcbiAgICAvLyBhdXRvc2NhbGUg7J20IOq6vOyngOuptCBtYXgg64qUIG1pbiDsnLzroZwg6rOg7KCV65CY66+A66GcIGVudiDtjIzsi7Eg7J6Q7LK06rCAIGF1dG9zY2FsZSDrtoTquLAg7JWI7JeQ66eMIOyeiOuLpC5cbiAgICBtYXhXb3JrZXJzUGVyVG9rZW46IGF1dG9zY2FsZVxuICAgICAgPyBNYXRoLm1heChcbiAgICAgICAgICBtaW5Xb3JrZXJzUGVyVG9rZW4sXG4gICAgICAgICAgYm91bmRlZEludGVnZXIoXG4gICAgICAgICAgICBlbnYuUUdSSURfT1BFTkFJX01BWF9XT1JLRVJTX1BFUl9UT0tFTixcbiAgICAgICAgICAgIERFRkFVTFRfT1BFTkFJX01BWF9XT1JLRVJTX1BFUl9UT0tFTixcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICBNQVhfT1BFTkFJX1dPUktFUlNfUEVSX1RPS0VOLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIDogbWluV29ya2Vyc1BlclRva2VuLFxuICAgIHNjYWxlSW50ZXJ2YWxNczogYm91bmRlZEludGVnZXIoZW52LlFHUklEX09QRU5BSV9TQ0FMRV9JTlRFUlZBTF9NUywgNV8wMDAsIDI1MCwgMzAwXzAwMCksXG4gICAgc2NhbGVEb3duSWRsZU1zOiBib3VuZGVkSW50ZWdlcihcbiAgICAgIGVudi5RR1JJRF9PUEVOQUlfU0NBTEVfRE9XTl9JRExFX01TLFxuICAgICAgMTAgKiA2MF8wMDAsXG4gICAgICAxXzAwMCxcbiAgICAgIDI0ICogNjAgKiA2MF8wMDAsXG4gICAgKSxcbiAgICBtYXhFc3RpbWF0ZWRSc3NHaUI6IGJvdW5kZWROdW1iZXIoZW52LlFHUklEX09QRU5BSV9NQVhfRVNUSU1BVEVEX1JTU19HSUIsIDE2LCAxKSxcbiAgICBtaW5Ib3N0QXZhaWxhYmxlR2lCOiBib3VuZGVkTnVtYmVyKGVudi5RR1JJRF9PUEVOQUlfTUlOX0hPU1RfQVZBSUxBQkxFX0dJQiwgMjAsIDApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGVPcGVuQUlXb3JrZXJSc3NHaUIodG90YWxXb3JrZXJzOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gT1BFTkFJX1dPUktFUl9CQVNFX1JTU19HSUIgKyBPUEVOQUlfV09SS0VSX1JTU19HSUIgKiB0b3RhbFdvcmtlcnM7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFhLCtCQUErQjtBQUM1QyxNQUFNLHVDQUF1QztBQUM3QyxNQUFNLHVDQUF1QztBQUU3QyxNQUFhLDZCQUE2QjtBQUMxQyxNQUFhLHdCQUF3QjtBQVlyQyxTQUFTLGVBQ1AsT0FDQSxVQUNBLEtBQ0EsS0FDUTtDQUNSLE1BQU0sU0FBUyxPQUFPLEtBQUs7Q0FDM0IsSUFBSSxDQUFDLE9BQU8sU0FBUyxNQUFNLEdBQUcsT0FBTztDQUNyQyxPQUFPLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUN4RDtBQUVBLFNBQVMsY0FBYyxPQUEyQixVQUFrQixLQUFxQjtDQUN2RixNQUFNLFNBQVMsT0FBTyxLQUFLO0NBQzNCLElBQUksQ0FBQyxPQUFPLFNBQVMsTUFBTSxHQUFHLE9BQU87Q0FDckMsT0FBTyxLQUFLLElBQUksS0FBSyxNQUFNO0FBQzdCO0FBRUEsU0FBZ0IsOEJBQ2QsTUFBMEMsUUFBUSxLQUMxQjtDQUN4QixNQUFNLFlBQVksSUFBSSwyQkFBMkIsV0FBVyxJQUFJLDJCQUEyQjtDQUMzRixNQUFNLHFCQUFxQixlQUN6QixJQUFJLG9DQUNKLHNDQUNBLEdBQUEsRUFFRjtDQUNBLE9BQU87RUFDTDtFQUNBO0VBRUEsb0JBQW9CLFlBQ2hCLEtBQUssSUFDSCxvQkFDQSxlQUNFLElBQUksb0NBQ0osc0NBQ0EsR0FBQSxFQUVGLENBQ0YsSUFDQTtFQUNKLGlCQUFpQixlQUFlLElBQUksZ0NBQWdDLEtBQU8sS0FBSyxHQUFPO0VBQ3ZGLGlCQUFpQixlQUNmLElBQUksaUNBQ0osS0FBSyxLQUNMLEtBQ0EsT0FBVSxHQUNaO0VBQ0Esb0JBQW9CLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxDQUFDO0VBQy9FLHFCQUFxQixjQUFjLElBQUkscUNBQXFDLElBQUksQ0FBQztDQUNuRjtBQUNGO0FBRUEsU0FBZ0IsMkJBQTJCLGNBQThCO0NBQ3ZFLE9BQU8sNkJBQTZCLHdCQUF3QjtBQUM5RCJ9
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLXdvcmtlci1wb29sLWNvbmZpZy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL29wZW5haS9vcGVuYWktd29ya2VyLXBvb2wtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1BWF9PUEVOQUlfRVNUSU1BVEVEX1JTU19HSUIsXG4gIE1BWF9PUEVOQUlfTUlOX0hPU1RfQVZBSUxBQkxFX0dJQixcbiAgU0VUVElOR19ERUZTLFxufSBmcm9tIFwiLi4vLi4vLi4vYXBwbGljYXRpb24vc2V0dGluZy9zZXR0aW5nLnNjaGVtYVwiO1xuaW1wb3J0IHsgZ2V0U2V0dGluZyB9IGZyb20gXCIuLi8uLi8uLi9hcHBsaWNhdGlvbi9zZXR0aW5nL3NldHRpbmcuc3RvcmVcIjtcblxuZXhwb3J0IGNvbnN0IE1BWF9PUEVOQUlfV09SS0VSU19QRVJfVE9LRU4gPSAyMDtcbmNvbnN0IERFRkFVTFRfT1BFTkFJX01JTl9XT1JLRVJTX1BFUl9UT0tFTiA9IDE7XG5jb25zdCBERUZBVUxUX09QRU5BSV9NQVhfV09SS0VSU19QRVJfVE9LRU4gPSAzO1xuXG5leHBvcnQgY29uc3QgT1BFTkFJX1dPUktFUl9CQVNFX1JTU19HSUIgPSAwLjcxO1xuZXhwb3J0IGNvbnN0IE9QRU5BSV9XT1JLRVJfUlNTX0dJQiA9IDAuMTU3O1xuXG5leHBvcnQgdHlwZSBPcGVuQUlXb3JrZXJQb29sQ29uZmlnID0ge1xuICBhdXRvc2NhbGU6IGJvb2xlYW47XG4gIG1pbldvcmtlcnNQZXJUb2tlbjogbnVtYmVyO1xuICBtYXhXb3JrZXJzUGVyVG9rZW46IG51bWJlcjtcbiAgc2NhbGVJbnRlcnZhbE1zOiBudW1iZXI7XG4gIHNjYWxlRG93bklkbGVNczogbnVtYmVyO1xuICBtYXhFc3RpbWF0ZWRSc3NHaUI6IG51bWJlcjtcbiAgbWluSG9zdEF2YWlsYWJsZUdpQjogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gYm91bmRlZEludGVnZXIoXG4gIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGZhbGxiYWNrOiBudW1iZXIsXG4gIG1pbjogbnVtYmVyLFxuICBtYXg6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGNvbnN0IHBhcnNlZCA9IE51bWJlcih2YWx1ZSk7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkpIHJldHVybiBmYWxsYmFjaztcbiAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5taW4oTWF0aC5mbG9vcihwYXJzZWQpLCBtYXgpKTtcbn1cblxuZnVuY3Rpb24gYm91bmRlZE51bWJlcihcbiAgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2s6IG51bWJlcixcbiAgbWluOiBudW1iZXIsXG4gIG1heDogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSkgcmV0dXJuIGZhbGxiYWNrO1xuICByZXR1cm4gTWF0aC5tYXgobWluLCBNYXRoLm1pbihwYXJzZWQsIG1heCkpO1xufVxuXG4vKipcbiAqIOyEpOyglSDsoIDsnqXshowoREIpIOulvCDrqLzsoIAg67O06rOgIOyXhuycvOuptCBlbnYg66GcIOuWqOyWtOyngOuKlCDsobDtmowg6rCd7LK0LlxuICpcbiAqIOq4sOyhtCDtjIzsi7Eg66Gc7KeB7J20IGBlbnZbS0VZXWAg7ZiV7YOc66W8IOyghOygnO2VmOuvgOuhnCwg7IaM7Iqk66eMIOuwlOq/lCDrgbzsmrDqs6Ag6rKA7KadwrfquLDrs7jqsJIg7LKY66as64qUXG4gKiDqt7jrjIDroZwg65GU64ukLiBgZ2V0YCDsoJHqt7zrp4wg7KeA7JuQ7ZWY66+A66GcIGBpbmDsnbTrgpggYE9iamVjdC5rZXlzKClg66GcIOyhsO2ajO2VmOyngCDslYrripTri6QuIO2FjOyKpO2KuOuKlFxuICogYGVudmAg7J247J6Q7JeQIOyInOyImO2VnCDrp7XsnYQg64SY6rKoIOyggOyepeyGjOulvCDsmrDtmoztlZzri6QuXG4gKi9cbmZ1bmN0aW9uIHNldHRpbmdzQmFja2VkRW52KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4sIHtcbiAgICBnZXQ6IChfdGFyZ2V0LCBwcm9wOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGRlZiA9IFNFVFRJTkdfREVGUy5maW5kKChkKSA9PiBkLmVudktleSA9PT0gcHJvcCk7XG4gICAgICByZXR1cm4gZGVmID8gZ2V0U2V0dGluZyhkZWYua2V5LCBkZWYuZW52S2V5KSA6IHByb2Nlc3MuZW52W3Byb3BdO1xuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU9wZW5BSVdvcmtlclBvb2xDb25maWcoXG4gIGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IHNldHRpbmdzQmFja2VkRW52KCksXG4pOiBPcGVuQUlXb3JrZXJQb29sQ29uZmlnIHtcbiAgY29uc3QgYXV0b3NjYWxlID0gZW52LlFHUklEX09QRU5BSV9BVVRPU0NBTEUgIT09IFwiZmFsc2VcIiAmJiBlbnYuUUdSSURfT1BFTkFJX0FVVE9TQ0FMRSAhPT0gXCIwXCI7XG4gIGNvbnN0IG1pbldvcmtlcnNQZXJUb2tlbiA9IGJvdW5kZWRJbnRlZ2VyKFxuICAgIGVudi5RR1JJRF9PUEVOQUlfTUlOX1dPUktFUlNfUEVSX1RPS0VOLFxuICAgIERFRkFVTFRfT1BFTkFJX01JTl9XT1JLRVJTX1BFUl9UT0tFTixcbiAgICAxLFxuICAgIE1BWF9PUEVOQUlfV09SS0VSU19QRVJfVE9LRU4sXG4gICk7XG4gIHJldHVybiB7XG4gICAgYXV0b3NjYWxlLFxuICAgIG1pbldvcmtlcnNQZXJUb2tlbixcbiAgICAvLyBhdXRvc2NhbGUg7J20IOq6vOyngOuptCBtYXgg64qUIG1pbiDsnLzroZwg6rOg7KCV65CY66+A66GcIGVudiDtjIzsi7Eg7J6Q7LK06rCAIGF1dG9zY2FsZSDrtoTquLAg7JWI7JeQ66eMIOyeiOuLpC5cbiAgICBtYXhXb3JrZXJzUGVyVG9rZW46IGF1dG9zY2FsZVxuICAgICAgPyBNYXRoLm1heChcbiAgICAgICAgICBtaW5Xb3JrZXJzUGVyVG9rZW4sXG4gICAgICAgICAgYm91bmRlZEludGVnZXIoXG4gICAgICAgICAgICBlbnYuUUdSSURfT1BFTkFJX01BWF9XT1JLRVJTX1BFUl9UT0tFTixcbiAgICAgICAgICAgIERFRkFVTFRfT1BFTkFJX01BWF9XT1JLRVJTX1BFUl9UT0tFTixcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICBNQVhfT1BFTkFJX1dPUktFUlNfUEVSX1RPS0VOLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIDogbWluV29ya2Vyc1BlclRva2VuLFxuICAgIHNjYWxlSW50ZXJ2YWxNczogYm91bmRlZEludGVnZXIoZW52LlFHUklEX09QRU5BSV9TQ0FMRV9JTlRFUlZBTF9NUywgNV8wMDAsIDI1MCwgMzAwXzAwMCksXG4gICAgc2NhbGVEb3duSWRsZU1zOiBib3VuZGVkSW50ZWdlcihcbiAgICAgIGVudi5RR1JJRF9PUEVOQUlfU0NBTEVfRE9XTl9JRExFX01TLFxuICAgICAgMTAgKiA2MF8wMDAsXG4gICAgICAxXzAwMCxcbiAgICAgIDI0ICogNjAgKiA2MF8wMDAsXG4gICAgKSxcbiAgICBtYXhFc3RpbWF0ZWRSc3NHaUI6IGJvdW5kZWROdW1iZXIoXG4gICAgICBlbnYuUUdSSURfT1BFTkFJX01BWF9FU1RJTUFURURfUlNTX0dJQixcbiAgICAgIDE2LFxuICAgICAgMSxcbiAgICAgIE1BWF9PUEVOQUlfRVNUSU1BVEVEX1JTU19HSUIsXG4gICAgKSxcbiAgICBtaW5Ib3N0QXZhaWxhYmxlR2lCOiBib3VuZGVkTnVtYmVyKFxuICAgICAgZW52LlFHUklEX09QRU5BSV9NSU5fSE9TVF9BVkFJTEFCTEVfR0lCLFxuICAgICAgMjAsXG4gICAgICAwLFxuICAgICAgTUFYX09QRU5BSV9NSU5fSE9TVF9BVkFJTEFCTEVfR0lCLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc3RpbWF0ZU9wZW5BSVdvcmtlclJzc0dpQih0b3RhbFdvcmtlcnM6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBPUEVOQUlfV09SS0VSX0JBU0VfUlNTX0dJQiArIE9QRU5BSV9XT1JLRVJfUlNTX0dJQiAqIHRvdGFsV29ya2Vycztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsTUFBYSwrQkFBK0I7QUFDNUMsTUFBTSx1Q0FBdUM7QUFDN0MsTUFBTSx1Q0FBdUM7QUFFN0MsTUFBYSw2QkFBNkI7QUFDMUMsTUFBYSx3QkFBd0I7QUFZckMsU0FBUyxlQUNQLE9BQ0EsVUFDQSxLQUNBLEtBQ1E7Q0FDUixNQUFNLFNBQVMsT0FBTyxLQUFLO0NBQzNCLElBQUksQ0FBQyxPQUFPLFNBQVMsTUFBTSxHQUFHLE9BQU87Q0FDckMsT0FBTyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksS0FBSyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDeEQ7QUFFQSxTQUFTLGNBQ1AsT0FDQSxVQUNBLEtBQ0EsS0FDUTtDQUNSLE1BQU0sU0FBUyxPQUFPLEtBQUs7Q0FDM0IsSUFBSSxDQUFDLE9BQU8sU0FBUyxNQUFNLEdBQUcsT0FBTztDQUNyQyxPQUFPLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQztBQUM1Qzs7Ozs7Ozs7QUFTQSxTQUFTLG9CQUF3RDtDQUMvRCxPQUFPLElBQUksTUFBTSxDQUFDLEdBQXlDLEVBQ3pELE1BQU0sU0FBUyxTQUFpQjtFQUM5QixNQUFNLE1BQU0sYUFBYSxNQUFNLE1BQU0sRUFBRSxXQUFXLElBQUk7RUFDdEQsT0FBTyxNQUFNLFdBQVcsSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLFFBQVEsSUFBSTtDQUM3RCxFQUNGLENBQUM7QUFDSDtBQUVBLFNBQWdCLDhCQUNkLE1BQTBDLGtCQUFrQixHQUNwQztDQUN4QixNQUFNLFlBQVksSUFBSSwyQkFBMkIsV0FBVyxJQUFJLDJCQUEyQjtDQUMzRixNQUFNLHFCQUFxQixlQUN6QixJQUFJLG9DQUNKLHNDQUNBLEdBQUEsRUFFRjtDQUNBLE9BQU87RUFDTDtFQUNBO0VBRUEsb0JBQW9CLFlBQ2hCLEtBQUssSUFDSCxvQkFDQSxlQUNFLElBQUksb0NBQ0osc0NBQ0EsR0FBQSxFQUVGLENBQ0YsSUFDQTtFQUNKLGlCQUFpQixlQUFlLElBQUksZ0NBQWdDLEtBQU8sS0FBSyxHQUFPO0VBQ3ZGLGlCQUFpQixlQUNmLElBQUksaUNBQ0osS0FBSyxLQUNMLEtBQ0EsT0FBVSxHQUNaO0VBQ0Esb0JBQW9CLGNBQ2xCLElBQUksb0NBQ0osSUFDQSxHQUFBLEVBRUY7RUFDQSxxQkFBcUIsY0FDbkIsSUFBSSxxQ0FDSixJQUNBLEdBQUEsRUFFRjtDQUNGO0FBQ0Y7QUFFQSxTQUFnQiwyQkFBMkIsY0FBOEI7Q0FDdkUsT0FBTyw2QkFBNkIsd0JBQXdCO0FBQzlEIn0=