@cartanova/qgrid-cli 2.7.1 → 2.7.2

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 (1212) hide show
  1. package/README.ko.md +3 -2
  2. package/README.md +3 -2
  3. package/bundle/dist/application/monit/monit.frame.js +27 -14
  4. package/bundle/dist/application/monit/monit.types.js +22 -13
  5. package/bundle/dist/application/qgrid/conv-routing.js +21 -11
  6. package/bundle/dist/application/qgrid/oauth.js +1 -1
  7. package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +15 -4
  8. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +18 -9
  9. package/bundle/dist/application/qgrid/qgrid.frame.js +50 -73
  10. package/bundle/dist/application/qgrid/qgrid.types.js +4 -1
  11. package/bundle/dist/application/qgrid/token-subscriber.js +5 -5
  12. package/bundle/dist/application/qgrid/tool-emulation-schema.js +13 -1
  13. package/bundle/dist/application/qgrid/tool-emulation.js +1 -1
  14. package/bundle/dist/application/queries.generated.js +3 -1
  15. package/bundle/dist/application/request-log/json-schema-type-text.js +55 -0
  16. package/bundle/dist/application/request-log/request-log.model.js +85 -3
  17. package/bundle/dist/application/request-log/request-log.types.js +3 -2
  18. package/bundle/dist/application/request-log/zod-code-format.js +71 -0
  19. package/bundle/dist/application/setting/setting.constant.js +2 -62
  20. package/bundle/dist/application/setting/setting.model.js +3 -3
  21. package/bundle/dist/application/setting/setting.store.js +2 -2
  22. package/bundle/dist/application/sonamu.generated.js +11 -4
  23. package/bundle/dist/application/sonamu.generated.sso.js +7 -3
  24. package/bundle/dist/i18n/sd.generated.js +5 -2
  25. package/bundle/dist/migrations/20260814130113_alter_request_logs_add1_alter1.js +15 -0
  26. package/bundle/dist/migrations/20260814131051_alter_request_logs_add1_alter1.js +15 -0
  27. package/bundle/dist/migrations/20260814134846_alter_request_logs_add1_alter1.js +15 -0
  28. package/bundle/dist/migrations/20260814140759_alter_request_logs_alter1.js +13 -0
  29. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +2 -2
  30. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +2 -2
  31. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +2 -2
  32. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +2 -2
  33. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +2 -2
  34. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +2 -2
  35. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +2 -2
  36. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +2 -2
  37. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_3892b4338df694f79f7d384fad23d930}/node_modules/vitest/dist/index.js +1 -1
  38. package/bundle/dist/sonamu.config.js +10 -9
  39. package/bundle/dist/testing/setup-mocks.js +2 -2
  40. package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +14 -2
  41. package/bundle/dist/utils/providers/anthropic/claude-session.js +1 -1
  42. package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +1 -1
  43. package/bundle/dist/utils/providers/common/model-cost.js +1 -1
  44. package/bundle/dist/utils/providers/common/schema-validation.js +1 -1
  45. package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +144 -0
  46. package/bundle/dist/utils/providers/openai/openai-constants.js +4 -2
  47. package/bundle/dist/utils/providers/openai/openai-direct-client.js +327 -0
  48. package/bundle/dist/utils/providers/openai/openai-dispatcher.js +358 -781
  49. package/bundle/dist/utils/providers/openai/openai-oauth.js +84 -0
  50. package/bundle/dist/utils/providers/openai/openai-quota.js +76 -5
  51. package/bundle/dist/utils/providers/openai/openai-refresh.js +3 -3
  52. package/bundle/dist/utils/providers/openai/openai-sse.js +72 -0
  53. package/bundle/dist/utils/providers/openai/openai-transport-config.js +14 -0
  54. package/bundle/src/application/monit/monit.frame.test.ts +14 -17
  55. package/bundle/src/application/monit/monit.frame.ts +23 -12
  56. package/bundle/src/application/monit/monit.types.ts +40 -11
  57. package/bundle/src/application/qgrid/conv-routing.test.ts +67 -0
  58. package/bundle/src/application/qgrid/conv-routing.ts +46 -12
  59. package/bundle/src/application/qgrid/qgrid-oauth-redirect.test.ts +92 -2
  60. package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +3 -0
  61. package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +15 -1
  62. package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +36 -6
  63. package/bundle/src/application/qgrid/qgrid.dispatcher.ts +22 -9
  64. package/bundle/src/application/qgrid/qgrid.frame.ts +55 -94
  65. package/bundle/src/application/qgrid/qgrid.types.ts +11 -4
  66. package/bundle/src/application/qgrid/token-subscriber.ts +4 -4
  67. package/bundle/src/application/qgrid/tool-emulation-schema.ts +1 -1
  68. package/bundle/src/application/qgrid/tool-emulation.test.ts +1 -0
  69. package/bundle/src/application/queries.generated.ts +6 -0
  70. package/bundle/src/application/request-log/json-schema-type-text.test.ts +96 -0
  71. package/bundle/src/application/request-log/json-schema-type-text.ts +83 -0
  72. package/bundle/src/application/request-log/request-log.entity.json +147 -21
  73. package/bundle/src/application/request-log/request-log.model.ts +108 -0
  74. package/bundle/src/application/request-log/request-log.types.ts +2 -0
  75. package/bundle/src/application/request-log/zod-code-format.test.ts +31 -0
  76. package/bundle/src/application/request-log/zod-code-format.ts +73 -0
  77. package/bundle/src/application/setting/setting.constant.test.ts +22 -24
  78. package/bundle/src/application/setting/setting.constant.ts +2 -63
  79. package/bundle/src/application/setting/setting.entity.json +1 -1
  80. package/bundle/src/application/setting/setting.store.ts +1 -1
  81. package/bundle/src/application/sonamu.generated.http +20 -1
  82. package/bundle/src/application/sonamu.generated.sso.ts +4 -0
  83. package/bundle/src/application/sonamu.generated.ts +10 -0
  84. package/bundle/src/i18n/sd.generated.ts +6 -1
  85. package/bundle/src/migrations/20260814130113_alter_request_logs_add1_alter1.ts +15 -0
  86. package/bundle/src/migrations/20260814131051_alter_request_logs_add1_alter1.ts +15 -0
  87. package/bundle/src/migrations/20260814134846_alter_request_logs_add1_alter1.ts +15 -0
  88. package/bundle/src/migrations/20260814140759_alter_request_logs_alter1.ts +13 -0
  89. package/bundle/src/sonamu.config.ts +9 -13
  90. package/bundle/src/utils/providers/anthropic/anthropic-dispatcher.ts +17 -2
  91. package/bundle/src/utils/providers/anthropic/claude-session.ts +1 -3
  92. package/bundle/src/utils/providers/anthropic/stream-json-adapter.test.ts +1 -2
  93. package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +2 -3
  94. package/bundle/src/utils/providers/common/model-cost.ts +4 -9
  95. package/bundle/src/utils/providers/common/provider-dispatcher.ts +10 -8
  96. package/bundle/src/utils/providers/common/provider-types.ts +48 -0
  97. package/bundle/src/utils/providers/common/schema-validation.ts +1 -1
  98. package/bundle/src/utils/providers/openai/openai-backend-protocol.test.ts +106 -0
  99. package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +255 -0
  100. package/bundle/src/utils/providers/openai/openai-constants.ts +2 -0
  101. package/bundle/src/utils/providers/openai/openai-direct-client.test.ts +610 -0
  102. package/bundle/src/utils/providers/openai/openai-direct-client.ts +478 -0
  103. package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +336 -1723
  104. package/bundle/src/utils/providers/openai/openai-dispatcher.ts +458 -1175
  105. package/bundle/src/utils/providers/openai/openai-oauth.test.ts +95 -0
  106. package/bundle/src/utils/providers/openai/openai-oauth.ts +141 -0
  107. package/bundle/src/utils/providers/openai/openai-quota.test.ts +80 -7
  108. package/bundle/src/utils/providers/openai/openai-quota.ts +105 -4
  109. package/bundle/src/utils/providers/openai/openai-refresh.test.ts +120 -0
  110. package/bundle/src/utils/providers/openai/openai-refresh.ts +3 -1
  111. package/bundle/src/utils/providers/openai/openai-sse.test.ts +52 -0
  112. package/bundle/src/utils/providers/openai/openai-sse.ts +79 -0
  113. package/bundle/src/utils/providers/openai/openai-transport-config.ts +17 -0
  114. package/bundle/web-dist/client/assets/index-BldeEvAK.css +1 -0
  115. package/bundle/web-dist/client/assets/index-DkAXPF9q.js +106 -0
  116. package/bundle/web-dist/client/assets/logs-DlI6OojL.js +1 -0
  117. package/bundle/web-dist/client/assets/monit-qap66dhi.js +1 -0
  118. package/bundle/web-dist/client/assets/{routes-J4bnHVfl.js → routes-CV07Pzde.js} +1 -1
  119. package/bundle/web-dist/client/assets/{services.generated-jGypfumC.js → services.generated-CSW8bhCP.js} +4 -4
  120. package/bundle/web-dist/client/assets/settings-CdYub4yo.js +1 -0
  121. package/bundle/web-dist/client/assets/show-DA1L8DVD.js +2 -0
  122. package/bundle/web-dist/client/assets/{tokens-DDrATjGA.js → tokens-Dt3gfkwP.js} +1 -1
  123. package/bundle/web-dist/client/assets/{use-oauth-login-flow-CptleCFM.js → use-oauth-login-flow-Cwi0HtJY.js} +1 -1
  124. package/bundle/web-dist/client/index.html +3 -3
  125. package/bundle/web-dist/server/assets/{lazyRouteComponent-DOc8TV-P.js → lazyRouteComponent-0y-znAfz.js} +2 -2
  126. package/bundle/web-dist/server/assets/{logs-CfF3nmLM.js → logs-CJBbHM3_.js} +35 -5
  127. package/bundle/web-dist/server/assets/{monit-BSaKhh5D.js → monit-8WAsPETB.js} +144 -51
  128. package/bundle/web-dist/server/assets/{plus-DLFUHsfx.js → plus-9das21ju.js} +1 -1
  129. package/bundle/web-dist/server/assets/{react-dom-BotjLnTK.js → react-dom-zmEq8BVp.js} +1 -1
  130. package/bundle/web-dist/server/assets/{routes-CHMxrTT0.js → routes-B6bX3o41.js} +3 -3
  131. package/bundle/web-dist/server/assets/{services.generated-D3Q3FYot.js → services.generated-DyPeBI00.js} +76 -2
  132. package/bundle/web-dist/server/assets/{settings-DOQjV28c.js → settings-D1u5WdpP.js} +2 -3
  133. package/bundle/web-dist/server/assets/{show-Cn_C6Qvl.js → show-Cr7vwR0l.js} +93 -8
  134. package/bundle/web-dist/server/assets/{tokens-c0EN3iCx.js → tokens-BumM0gnH.js} +3 -3
  135. package/bundle/web-dist/server/assets/{use-oauth-login-flow-B68AbMDE.js → use-oauth-login-flow-DmsHGOlx.js} +1 -1
  136. package/bundle/web-dist/server/entry-server.generated.js +12 -12
  137. package/dist/cli.d.ts +10 -1
  138. package/dist/cli.js +1 -6
  139. package/package.json +3 -2
  140. package/skills/qgrid/SKILL.md +5 -5
  141. package/skills/qgrid/references/ai-sdk-provider-contract.md +16 -10
  142. package/skills/qgrid/references/cli-env-and-server-boot.md +6 -13
  143. package/skills/qgrid/references/decision-rationale.md +15 -23
  144. package/skills/qgrid/references/docs-workflow.md +1 -1
  145. package/skills/qgrid/references/openai-codex-runtime.md +39 -156
  146. package/skills/qgrid/references/prompt-cache-and-usage.md +35 -71
  147. package/skills/qgrid/references/provider-runtime-differences.md +17 -17
  148. package/skills/qgrid/references/repo-map.md +2 -2
  149. package/skills/qgrid/references/request-log-run-lifecycle.md +12 -2
  150. package/skills/qgrid/references/sonamu-api-web-flow.md +4 -0
  151. package/skills/qgrid/references/token-auth-quota-lifecycle.md +14 -24
  152. package/skills/qgrid/references/tool-calling-and-multiturn.md +3 -3
  153. package/skills/qgrid/references/verification-and-debugging.md +17 -15
  154. package/bundle/dist/codex-protocol/AgentPath.js +0 -1
  155. package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +0 -1
  156. package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +0 -1
  157. package/bundle/dist/codex-protocol/AuthMode.js +0 -1
  158. package/bundle/dist/codex-protocol/ClientInfo.js +0 -1
  159. package/bundle/dist/codex-protocol/ClientNotification.js +0 -1
  160. package/bundle/dist/codex-protocol/ClientRequest.js +0 -1
  161. package/bundle/dist/codex-protocol/CollaborationMode.js +0 -1
  162. package/bundle/dist/codex-protocol/ContentItem.js +0 -1
  163. package/bundle/dist/codex-protocol/ConversationGitInfo.js +0 -1
  164. package/bundle/dist/codex-protocol/ConversationSummary.js +0 -1
  165. package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +0 -1
  166. package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +0 -1
  167. package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +0 -1
  168. package/bundle/dist/codex-protocol/FileChange.js +0 -1
  169. package/bundle/dist/codex-protocol/ForcedLoginMethod.js +0 -1
  170. package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +0 -1
  171. package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +0 -1
  172. package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +0 -1
  173. package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +0 -1
  174. package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +0 -1
  175. package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +0 -1
  176. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +0 -1
  177. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +0 -1
  178. package/bundle/dist/codex-protocol/GetAuthStatusParams.js +0 -1
  179. package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +0 -1
  180. package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +0 -1
  181. package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +0 -1
  182. package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +0 -1
  183. package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +0 -1
  184. package/bundle/dist/codex-protocol/GitSha.js +0 -1
  185. package/bundle/dist/codex-protocol/ImageDetail.js +0 -1
  186. package/bundle/dist/codex-protocol/InitializeCapabilities.js +0 -1
  187. package/bundle/dist/codex-protocol/InitializeParams.js +0 -1
  188. package/bundle/dist/codex-protocol/InitializeResponse.js +0 -1
  189. package/bundle/dist/codex-protocol/InputModality.js +0 -1
  190. package/bundle/dist/codex-protocol/InternalSessionSource.js +0 -1
  191. package/bundle/dist/codex-protocol/LocalShellAction.js +0 -1
  192. package/bundle/dist/codex-protocol/LocalShellExecAction.js +0 -1
  193. package/bundle/dist/codex-protocol/LocalShellStatus.js +0 -1
  194. package/bundle/dist/codex-protocol/MessagePhase.js +0 -1
  195. package/bundle/dist/codex-protocol/ModeKind.js +0 -1
  196. package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +0 -1
  197. package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +0 -1
  198. package/bundle/dist/codex-protocol/ParsedCommand.js +0 -1
  199. package/bundle/dist/codex-protocol/Personality.js +0 -1
  200. package/bundle/dist/codex-protocol/PlanType.js +0 -1
  201. package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +0 -1
  202. package/bundle/dist/codex-protocol/RealtimeOutputModality.js +0 -1
  203. package/bundle/dist/codex-protocol/RealtimeVoice.js +0 -1
  204. package/bundle/dist/codex-protocol/RealtimeVoicesList.js +0 -1
  205. package/bundle/dist/codex-protocol/ReasoningEffort.js +0 -1
  206. package/bundle/dist/codex-protocol/ReasoningItemContent.js +0 -1
  207. package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +0 -1
  208. package/bundle/dist/codex-protocol/ReasoningSummary.js +0 -1
  209. package/bundle/dist/codex-protocol/RequestId.js +0 -1
  210. package/bundle/dist/codex-protocol/Resource.js +0 -1
  211. package/bundle/dist/codex-protocol/ResourceContent.js +0 -1
  212. package/bundle/dist/codex-protocol/ResourceTemplate.js +0 -1
  213. package/bundle/dist/codex-protocol/ResponseItem.js +0 -1
  214. package/bundle/dist/codex-protocol/ReviewDecision.js +0 -1
  215. package/bundle/dist/codex-protocol/ServerNotification.js +0 -1
  216. package/bundle/dist/codex-protocol/ServerRequest.js +0 -1
  217. package/bundle/dist/codex-protocol/SessionSource.js +0 -1
  218. package/bundle/dist/codex-protocol/Settings.js +0 -1
  219. package/bundle/dist/codex-protocol/SubAgentSource.js +0 -1
  220. package/bundle/dist/codex-protocol/ThreadId.js +0 -1
  221. package/bundle/dist/codex-protocol/ThreadMemoryMode.js +0 -1
  222. package/bundle/dist/codex-protocol/Tool.js +0 -1
  223. package/bundle/dist/codex-protocol/Verbosity.js +0 -1
  224. package/bundle/dist/codex-protocol/WebSearchAction.js +0 -1
  225. package/bundle/dist/codex-protocol/WebSearchContextSize.js +0 -1
  226. package/bundle/dist/codex-protocol/WebSearchLocation.js +0 -1
  227. package/bundle/dist/codex-protocol/WebSearchMode.js +0 -1
  228. package/bundle/dist/codex-protocol/WebSearchToolConfig.js +0 -1
  229. package/bundle/dist/codex-protocol/index.js +0 -2
  230. package/bundle/dist/codex-protocol/serde_json/JsonValue.js +0 -1
  231. package/bundle/dist/codex-protocol/v2/Account.js +0 -1
  232. package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +0 -1
  233. package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +0 -1
  234. package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +0 -1
  235. package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +0 -1
  236. package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +0 -1
  237. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +0 -1
  238. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +0 -1
  239. package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +0 -1
  240. package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +0 -1
  241. package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +0 -1
  242. package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +0 -1
  243. package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +0 -1
  244. package/bundle/dist/codex-protocol/v2/AppBranding.js +0 -1
  245. package/bundle/dist/codex-protocol/v2/AppInfo.js +0 -1
  246. package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +0 -1
  247. package/bundle/dist/codex-protocol/v2/AppMetadata.js +0 -1
  248. package/bundle/dist/codex-protocol/v2/AppReview.js +0 -1
  249. package/bundle/dist/codex-protocol/v2/AppScreenshot.js +0 -1
  250. package/bundle/dist/codex-protocol/v2/AppSummary.js +0 -1
  251. package/bundle/dist/codex-protocol/v2/AppToolApproval.js +0 -1
  252. package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +0 -1
  253. package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +0 -1
  254. package/bundle/dist/codex-protocol/v2/AppsConfig.js +0 -1
  255. package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +0 -1
  256. package/bundle/dist/codex-protocol/v2/AppsListParams.js +0 -1
  257. package/bundle/dist/codex-protocol/v2/AppsListResponse.js +0 -1
  258. package/bundle/dist/codex-protocol/v2/AskForApproval.js +0 -1
  259. package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +0 -1
  260. package/bundle/dist/codex-protocol/v2/ByteRange.js +0 -1
  261. package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +0 -1
  262. package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +0 -1
  263. package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +0 -1
  264. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +0 -1
  265. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +0 -1
  266. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +0 -1
  267. package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +0 -1
  268. package/bundle/dist/codex-protocol/v2/CollabAgentState.js +0 -1
  269. package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +0 -1
  270. package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +0 -1
  271. package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +0 -1
  272. package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +0 -1
  273. package/bundle/dist/codex-protocol/v2/CommandAction.js +0 -1
  274. package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +0 -1
  275. package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +0 -1
  276. package/bundle/dist/codex-protocol/v2/CommandExecParams.js +0 -1
  277. package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +0 -1
  278. package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +0 -1
  279. package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +0 -1
  280. package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +0 -1
  281. package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +0 -1
  282. package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +0 -1
  283. package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +0 -1
  284. package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +0 -1
  285. package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +0 -1
  286. package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +0 -1
  287. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +0 -1
  288. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +0 -1
  289. package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +0 -1
  290. package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +0 -1
  291. package/bundle/dist/codex-protocol/v2/CommandMigration.js +0 -1
  292. package/bundle/dist/codex-protocol/v2/Config.js +0 -1
  293. package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +0 -1
  294. package/bundle/dist/codex-protocol/v2/ConfigEdit.js +0 -1
  295. package/bundle/dist/codex-protocol/v2/ConfigLayer.js +0 -1
  296. package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +0 -1
  297. package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +0 -1
  298. package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +0 -1
  299. package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +0 -1
  300. package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +0 -1
  301. package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +0 -1
  302. package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +0 -1
  303. package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +0 -1
  304. package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +0 -1
  305. package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +0 -1
  306. package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +0 -1
  307. package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +0 -1
  308. package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +0 -1
  309. package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +0 -1
  310. package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +0 -1
  311. package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +0 -1
  312. package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +0 -1
  313. package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +0 -1
  314. package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +0 -1
  315. package/bundle/dist/codex-protocol/v2/ErrorNotification.js +0 -1
  316. package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +0 -1
  317. package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +0 -1
  318. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +0 -1
  319. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +0 -1
  320. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +0 -1
  321. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +0 -1
  322. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +0 -1
  323. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +0 -1
  324. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +0 -1
  325. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +0 -1
  326. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +0 -1
  327. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +0 -1
  328. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +0 -1
  329. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +0 -1
  330. package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +0 -1
  331. package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +0 -1
  332. package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +0 -1
  333. package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +0 -1
  334. package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +0 -1
  335. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +0 -1
  336. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +0 -1
  337. package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +0 -1
  338. package/bundle/dist/codex-protocol/v2/FileSystemPath.js +0 -1
  339. package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +0 -1
  340. package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +0 -1
  341. package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +0 -1
  342. package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +0 -1
  343. package/bundle/dist/codex-protocol/v2/FsCopyParams.js +0 -1
  344. package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +0 -1
  345. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +0 -1
  346. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +0 -1
  347. package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +0 -1
  348. package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +0 -1
  349. package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +0 -1
  350. package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +0 -1
  351. package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +0 -1
  352. package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +0 -1
  353. package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +0 -1
  354. package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +0 -1
  355. package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +0 -1
  356. package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +0 -1
  357. package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +0 -1
  358. package/bundle/dist/codex-protocol/v2/FsWatchParams.js +0 -1
  359. package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +0 -1
  360. package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +0 -1
  361. package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +0 -1
  362. package/bundle/dist/codex-protocol/v2/GetAccountParams.js +0 -1
  363. package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +0 -1
  364. package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +0 -1
  365. package/bundle/dist/codex-protocol/v2/GitInfo.js +0 -1
  366. package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +0 -1
  367. package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +0 -1
  368. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +0 -1
  369. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +0 -1
  370. package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +0 -1
  371. package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +0 -1
  372. package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +0 -1
  373. package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +0 -1
  374. package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +0 -1
  375. package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +0 -1
  376. package/bundle/dist/codex-protocol/v2/HookEventName.js +0 -1
  377. package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +0 -1
  378. package/bundle/dist/codex-protocol/v2/HookHandlerType.js +0 -1
  379. package/bundle/dist/codex-protocol/v2/HookMetadata.js +0 -1
  380. package/bundle/dist/codex-protocol/v2/HookMigration.js +0 -1
  381. package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +0 -1
  382. package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +0 -1
  383. package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +0 -1
  384. package/bundle/dist/codex-protocol/v2/HookRunStatus.js +0 -1
  385. package/bundle/dist/codex-protocol/v2/HookRunSummary.js +0 -1
  386. package/bundle/dist/codex-protocol/v2/HookScope.js +0 -1
  387. package/bundle/dist/codex-protocol/v2/HookSource.js +0 -1
  388. package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +0 -1
  389. package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +0 -1
  390. package/bundle/dist/codex-protocol/v2/HooksListEntry.js +0 -1
  391. package/bundle/dist/codex-protocol/v2/HooksListParams.js +0 -1
  392. package/bundle/dist/codex-protocol/v2/HooksListResponse.js +0 -1
  393. package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +0 -1
  394. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +0 -1
  395. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +0 -1
  396. package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +0 -1
  397. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +0 -1
  398. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +0 -1
  399. package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +0 -1
  400. package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +0 -1
  401. package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +0 -1
  402. package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +0 -1
  403. package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +0 -1
  404. package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +0 -1
  405. package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +0 -1
  406. package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +0 -1
  407. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +0 -1
  408. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +0 -1
  409. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +0 -1
  410. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +0 -1
  411. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +0 -1
  412. package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +0 -1
  413. package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +0 -1
  414. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +0 -1
  415. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +0 -1
  416. package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +0 -1
  417. package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +0 -1
  418. package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +0 -1
  419. package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +0 -1
  420. package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +0 -1
  421. package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +0 -1
  422. package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +0 -1
  423. package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +0 -1
  424. package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +0 -1
  425. package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +0 -1
  426. package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +0 -1
  427. package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +0 -1
  428. package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +0 -1
  429. package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +0 -1
  430. package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +0 -1
  431. package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +0 -1
  432. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +0 -1
  433. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +0 -1
  434. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +0 -1
  435. package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +0 -1
  436. package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +0 -1
  437. package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +0 -1
  438. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +0 -1
  439. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +0 -1
  440. package/bundle/dist/codex-protocol/v2/McpServerMigration.js +0 -1
  441. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +0 -1
  442. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +0 -1
  443. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +0 -1
  444. package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +0 -1
  445. package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +0 -1
  446. package/bundle/dist/codex-protocol/v2/McpServerStatus.js +0 -1
  447. package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +0 -1
  448. package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +0 -1
  449. package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +0 -1
  450. package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +0 -1
  451. package/bundle/dist/codex-protocol/v2/McpToolCallError.js +0 -1
  452. package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +0 -1
  453. package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +0 -1
  454. package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +0 -1
  455. package/bundle/dist/codex-protocol/v2/MemoryCitation.js +0 -1
  456. package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +0 -1
  457. package/bundle/dist/codex-protocol/v2/MergeStrategy.js +0 -1
  458. package/bundle/dist/codex-protocol/v2/MigrationDetails.js +0 -1
  459. package/bundle/dist/codex-protocol/v2/Model.js +0 -1
  460. package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +0 -1
  461. package/bundle/dist/codex-protocol/v2/ModelListParams.js +0 -1
  462. package/bundle/dist/codex-protocol/v2/ModelListResponse.js +0 -1
  463. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +0 -1
  464. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +0 -1
  465. package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +0 -1
  466. package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +0 -1
  467. package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +0 -1
  468. package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +0 -1
  469. package/bundle/dist/codex-protocol/v2/ModelVerification.js +0 -1
  470. package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +0 -1
  471. package/bundle/dist/codex-protocol/v2/NetworkAccess.js +0 -1
  472. package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +0 -1
  473. package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +0 -1
  474. package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +0 -1
  475. package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +0 -1
  476. package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +0 -1
  477. package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +0 -1
  478. package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +0 -1
  479. package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +0 -1
  480. package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +0 -1
  481. package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +0 -1
  482. package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +0 -1
  483. package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +0 -1
  484. package/bundle/dist/codex-protocol/v2/PermissionProfile.js +0 -1
  485. package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +0 -1
  486. package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +0 -1
  487. package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +0 -1
  488. package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +0 -1
  489. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +0 -1
  490. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +0 -1
  491. package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +0 -1
  492. package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +0 -1
  493. package/bundle/dist/codex-protocol/v2/PluginAvailability.js +0 -1
  494. package/bundle/dist/codex-protocol/v2/PluginDetail.js +0 -1
  495. package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +0 -1
  496. package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +0 -1
  497. package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +0 -1
  498. package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +0 -1
  499. package/bundle/dist/codex-protocol/v2/PluginInterface.js +0 -1
  500. package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +0 -1
  501. package/bundle/dist/codex-protocol/v2/PluginListParams.js +0 -1
  502. package/bundle/dist/codex-protocol/v2/PluginListResponse.js +0 -1
  503. package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +0 -1
  504. package/bundle/dist/codex-protocol/v2/PluginReadParams.js +0 -1
  505. package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +0 -1
  506. package/bundle/dist/codex-protocol/v2/PluginShareContext.js +0 -1
  507. package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +0 -1
  508. package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +0 -1
  509. package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +0 -1
  510. package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +0 -1
  511. package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +0 -1
  512. package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +0 -1
  513. package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +0 -1
  514. package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +0 -1
  515. package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +0 -1
  516. package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +0 -1
  517. package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +0 -1
  518. package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +0 -1
  519. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +0 -1
  520. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +0 -1
  521. package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +0 -1
  522. package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +0 -1
  523. package/bundle/dist/codex-protocol/v2/PluginSource.js +0 -1
  524. package/bundle/dist/codex-protocol/v2/PluginSummary.js +0 -1
  525. package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +0 -1
  526. package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +0 -1
  527. package/bundle/dist/codex-protocol/v2/PluginsMigration.js +0 -1
  528. package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +0 -1
  529. package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +0 -1
  530. package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +0 -1
  531. package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +0 -1
  532. package/bundle/dist/codex-protocol/v2/ProfileV2.js +0 -1
  533. package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +0 -1
  534. package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +0 -1
  535. package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +0 -1
  536. package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +0 -1
  537. package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +0 -1
  538. package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +0 -1
  539. package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +0 -1
  540. package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +0 -1
  541. package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +0 -1
  542. package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +0 -1
  543. package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +0 -1
  544. package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +0 -1
  545. package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +0 -1
  546. package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +0 -1
  547. package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +0 -1
  548. package/bundle/dist/codex-protocol/v2/ReviewTarget.js +0 -1
  549. package/bundle/dist/codex-protocol/v2/SandboxMode.js +0 -1
  550. package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +0 -1
  551. package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +0 -1
  552. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +0 -1
  553. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +0 -1
  554. package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +0 -1
  555. package/bundle/dist/codex-protocol/v2/SessionMigration.js +0 -1
  556. package/bundle/dist/codex-protocol/v2/SessionSource.js +0 -1
  557. package/bundle/dist/codex-protocol/v2/SkillDependencies.js +0 -1
  558. package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +0 -1
  559. package/bundle/dist/codex-protocol/v2/SkillInterface.js +0 -1
  560. package/bundle/dist/codex-protocol/v2/SkillMetadata.js +0 -1
  561. package/bundle/dist/codex-protocol/v2/SkillScope.js +0 -1
  562. package/bundle/dist/codex-protocol/v2/SkillSummary.js +0 -1
  563. package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +0 -1
  564. package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +0 -1
  565. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +0 -1
  566. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +0 -1
  567. package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +0 -1
  568. package/bundle/dist/codex-protocol/v2/SkillsListParams.js +0 -1
  569. package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +0 -1
  570. package/bundle/dist/codex-protocol/v2/SortDirection.js +0 -1
  571. package/bundle/dist/codex-protocol/v2/SubagentMigration.js +0 -1
  572. package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +0 -1
  573. package/bundle/dist/codex-protocol/v2/TextElement.js +0 -1
  574. package/bundle/dist/codex-protocol/v2/TextPosition.js +0 -1
  575. package/bundle/dist/codex-protocol/v2/TextRange.js +0 -1
  576. package/bundle/dist/codex-protocol/v2/Thread.js +0 -1
  577. package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +0 -1
  578. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +0 -1
  579. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +0 -1
  580. package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +0 -1
  581. package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +0 -1
  582. package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +0 -1
  583. package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +0 -1
  584. package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +0 -1
  585. package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +0 -1
  586. package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +0 -1
  587. package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +0 -1
  588. package/bundle/dist/codex-protocol/v2/ThreadGoal.js +0 -1
  589. package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +0 -1
  590. package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +0 -1
  591. package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +0 -1
  592. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +0 -1
  593. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +0 -1
  594. package/bundle/dist/codex-protocol/v2/ThreadItem.js +0 -1
  595. package/bundle/dist/codex-protocol/v2/ThreadListParams.js +0 -1
  596. package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +0 -1
  597. package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +0 -1
  598. package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +0 -1
  599. package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +0 -1
  600. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +0 -1
  601. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +0 -1
  602. package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +0 -1
  603. package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +0 -1
  604. package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +0 -1
  605. package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +0 -1
  606. package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +0 -1
  607. package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +0 -1
  608. package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +0 -1
  609. package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +0 -1
  610. package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +0 -1
  611. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +0 -1
  612. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +0 -1
  613. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +0 -1
  614. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +0 -1
  615. package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +0 -1
  616. package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +0 -1
  617. package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +0 -1
  618. package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +0 -1
  619. package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +0 -1
  620. package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +0 -1
  621. package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +0 -1
  622. package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +0 -1
  623. package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +0 -1
  624. package/bundle/dist/codex-protocol/v2/ThreadSource.js +0 -1
  625. package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +0 -1
  626. package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +0 -1
  627. package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +0 -1
  628. package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +0 -1
  629. package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +0 -1
  630. package/bundle/dist/codex-protocol/v2/ThreadStatus.js +0 -1
  631. package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +0 -1
  632. package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +0 -1
  633. package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +0 -1
  634. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +0 -1
  635. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +0 -1
  636. package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +0 -1
  637. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +0 -1
  638. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +0 -1
  639. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +0 -1
  640. package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +0 -1
  641. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +0 -1
  642. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +0 -1
  643. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +0 -1
  644. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +0 -1
  645. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +0 -1
  646. package/bundle/dist/codex-protocol/v2/ToolsV2.js +0 -1
  647. package/bundle/dist/codex-protocol/v2/Turn.js +0 -1
  648. package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +0 -1
  649. package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +0 -1
  650. package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +0 -1
  651. package/bundle/dist/codex-protocol/v2/TurnError.js +0 -1
  652. package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +0 -1
  653. package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +0 -1
  654. package/bundle/dist/codex-protocol/v2/TurnItemsView.js +0 -1
  655. package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +0 -1
  656. package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +0 -1
  657. package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +0 -1
  658. package/bundle/dist/codex-protocol/v2/TurnStartParams.js +0 -1
  659. package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +0 -1
  660. package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +0 -1
  661. package/bundle/dist/codex-protocol/v2/TurnStatus.js +0 -1
  662. package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +0 -1
  663. package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +0 -1
  664. package/bundle/dist/codex-protocol/v2/UserInput.js +0 -1
  665. package/bundle/dist/codex-protocol/v2/WarningNotification.js +0 -1
  666. package/bundle/dist/codex-protocol/v2/WebSearchAction.js +0 -1
  667. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +0 -1
  668. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +0 -1
  669. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +0 -1
  670. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +0 -1
  671. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +0 -1
  672. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +0 -1
  673. package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +0 -1
  674. package/bundle/dist/codex-protocol/v2/WriteStatus.js +0 -1
  675. package/bundle/dist/codex-protocol/v2/index.js +0 -7
  676. package/bundle/dist/utils/providers/openai/codex-rpc.js +0 -153
  677. package/bundle/dist/utils/providers/openai/codex-worker.js +0 -642
  678. package/bundle/dist/utils/providers/openai/openai-worker-pool-config.js +0 -51
  679. package/bundle/src/codex-protocol/AbsolutePathBuf.ts +0 -14
  680. package/bundle/src/codex-protocol/AgentPath.ts +0 -5
  681. package/bundle/src/codex-protocol/ApplyPatchApprovalParams.ts +0 -24
  682. package/bundle/src/codex-protocol/ApplyPatchApprovalResponse.ts +0 -6
  683. package/bundle/src/codex-protocol/AuthMode.ts +0 -8
  684. package/bundle/src/codex-protocol/ClientInfo.ts +0 -5
  685. package/bundle/src/codex-protocol/ClientNotification.ts +0 -5
  686. package/bundle/src/codex-protocol/ClientRequest.ts +0 -176
  687. package/bundle/src/codex-protocol/CollaborationMode.ts +0 -10
  688. package/bundle/src/codex-protocol/ContentItem.ts +0 -9
  689. package/bundle/src/codex-protocol/ConversationGitInfo.ts +0 -9
  690. package/bundle/src/codex-protocol/ConversationSummary.ts +0 -19
  691. package/bundle/src/codex-protocol/ExecCommandApprovalParams.ts +0 -22
  692. package/bundle/src/codex-protocol/ExecCommandApprovalResponse.ts +0 -6
  693. package/bundle/src/codex-protocol/ExecPolicyAmendment.ts +0 -12
  694. package/bundle/src/codex-protocol/FileChange.ts +0 -8
  695. package/bundle/src/codex-protocol/ForcedLoginMethod.ts +0 -5
  696. package/bundle/src/codex-protocol/FunctionCallOutputBody.ts +0 -6
  697. package/bundle/src/codex-protocol/FunctionCallOutputContentItem.ts +0 -12
  698. package/bundle/src/codex-protocol/FuzzyFileSearchMatchType.ts +0 -5
  699. package/bundle/src/codex-protocol/FuzzyFileSearchParams.ts +0 -9
  700. package/bundle/src/codex-protocol/FuzzyFileSearchResponse.ts +0 -6
  701. package/bundle/src/codex-protocol/FuzzyFileSearchResult.ts +0 -16
  702. package/bundle/src/codex-protocol/FuzzyFileSearchSessionCompletedNotification.ts +0 -5
  703. package/bundle/src/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.ts +0 -10
  704. package/bundle/src/codex-protocol/GetAuthStatusParams.ts +0 -5
  705. package/bundle/src/codex-protocol/GetAuthStatusResponse.ts +0 -10
  706. package/bundle/src/codex-protocol/GetConversationSummaryParams.ts +0 -6
  707. package/bundle/src/codex-protocol/GetConversationSummaryResponse.ts +0 -6
  708. package/bundle/src/codex-protocol/GitDiffToRemoteParams.ts +0 -5
  709. package/bundle/src/codex-protocol/GitDiffToRemoteResponse.ts +0 -6
  710. package/bundle/src/codex-protocol/GitSha.ts +0 -5
  711. package/bundle/src/codex-protocol/ImageDetail.ts +0 -5
  712. package/bundle/src/codex-protocol/InitializeCapabilities.ts +0 -18
  713. package/bundle/src/codex-protocol/InitializeParams.ts +0 -10
  714. package/bundle/src/codex-protocol/InitializeResponse.ts +0 -22
  715. package/bundle/src/codex-protocol/InputModality.ts +0 -8
  716. package/bundle/src/codex-protocol/InternalSessionSource.ts +0 -5
  717. package/bundle/src/codex-protocol/LocalShellAction.ts +0 -6
  718. package/bundle/src/codex-protocol/LocalShellExecAction.ts +0 -11
  719. package/bundle/src/codex-protocol/LocalShellStatus.ts +0 -5
  720. package/bundle/src/codex-protocol/MessagePhase.ts +0 -11
  721. package/bundle/src/codex-protocol/ModeKind.ts +0 -8
  722. package/bundle/src/codex-protocol/NetworkPolicyAmendment.ts +0 -6
  723. package/bundle/src/codex-protocol/NetworkPolicyRuleAction.ts +0 -5
  724. package/bundle/src/codex-protocol/ParsedCommand.ts +0 -20
  725. package/bundle/src/codex-protocol/Personality.ts +0 -5
  726. package/bundle/src/codex-protocol/PlanType.ts +0 -17
  727. package/bundle/src/codex-protocol/RealtimeConversationVersion.ts +0 -5
  728. package/bundle/src/codex-protocol/RealtimeOutputModality.ts +0 -5
  729. package/bundle/src/codex-protocol/RealtimeVoice.ts +0 -24
  730. package/bundle/src/codex-protocol/RealtimeVoicesList.ts +0 -11
  731. package/bundle/src/codex-protocol/ReasoningEffort.ts +0 -8
  732. package/bundle/src/codex-protocol/ReasoningItemContent.ts +0 -7
  733. package/bundle/src/codex-protocol/ReasoningItemReasoningSummary.ts +0 -5
  734. package/bundle/src/codex-protocol/ReasoningSummary.ts +0 -10
  735. package/bundle/src/codex-protocol/RequestId.ts +0 -5
  736. package/bundle/src/codex-protocol/Resource.ts +0 -19
  737. package/bundle/src/codex-protocol/ResourceContent.ts +0 -27
  738. package/bundle/src/codex-protocol/ResourceTemplate.ts +0 -16
  739. package/bundle/src/codex-protocol/ResponseItem.ts +0 -63
  740. package/bundle/src/codex-protocol/ReviewDecision.ts +0 -17
  741. package/bundle/src/codex-protocol/ServerNotification.ts +0 -154
  742. package/bundle/src/codex-protocol/ServerRequest.ts +0 -47
  743. package/bundle/src/codex-protocol/SessionSource.ts +0 -15
  744. package/bundle/src/codex-protocol/Settings.ts +0 -13
  745. package/bundle/src/codex-protocol/SubAgentSource.ts +0 -20
  746. package/bundle/src/codex-protocol/ThreadId.ts +0 -5
  747. package/bundle/src/codex-protocol/ThreadMemoryMode.ts +0 -5
  748. package/bundle/src/codex-protocol/Tool.ts +0 -18
  749. package/bundle/src/codex-protocol/Verbosity.ts +0 -9
  750. package/bundle/src/codex-protocol/WebSearchAction.ts +0 -9
  751. package/bundle/src/codex-protocol/WebSearchContextSize.ts +0 -5
  752. package/bundle/src/codex-protocol/WebSearchLocation.ts +0 -10
  753. package/bundle/src/codex-protocol/WebSearchMode.ts +0 -5
  754. package/bundle/src/codex-protocol/WebSearchToolConfig.ts +0 -11
  755. package/bundle/src/codex-protocol/index.ts +0 -79
  756. package/bundle/src/codex-protocol/serde_json/JsonValue.ts +0 -11
  757. package/bundle/src/codex-protocol/v2/Account.ts +0 -9
  758. package/bundle/src/codex-protocol/v2/AccountLoginCompletedNotification.ts +0 -9
  759. package/bundle/src/codex-protocol/v2/AccountRateLimitsUpdatedNotification.ts +0 -6
  760. package/bundle/src/codex-protocol/v2/AccountUpdatedNotification.ts +0 -7
  761. package/bundle/src/codex-protocol/v2/ActivePermissionProfile.ts +0 -22
  762. package/bundle/src/codex-protocol/v2/ActivePermissionProfileModification.ts +0 -9
  763. package/bundle/src/codex-protocol/v2/AddCreditsNudgeCreditType.ts +0 -5
  764. package/bundle/src/codex-protocol/v2/AddCreditsNudgeEmailStatus.ts +0 -5
  765. package/bundle/src/codex-protocol/v2/AdditionalFileSystemPermissions.ts +0 -18
  766. package/bundle/src/codex-protocol/v2/AdditionalNetworkPermissions.ts +0 -5
  767. package/bundle/src/codex-protocol/v2/AdditionalPermissionProfile.ts +0 -13
  768. package/bundle/src/codex-protocol/v2/AgentMessageDeltaNotification.ts +0 -10
  769. package/bundle/src/codex-protocol/v2/AnalyticsConfig.ts +0 -14
  770. package/bundle/src/codex-protocol/v2/AppBranding.ts +0 -15
  771. package/bundle/src/codex-protocol/v2/AppInfo.ts +0 -32
  772. package/bundle/src/codex-protocol/v2/AppListUpdatedNotification.ts +0 -9
  773. package/bundle/src/codex-protocol/v2/AppMetadata.ts +0 -20
  774. package/bundle/src/codex-protocol/v2/AppReview.ts +0 -5
  775. package/bundle/src/codex-protocol/v2/AppScreenshot.ts +0 -5
  776. package/bundle/src/codex-protocol/v2/AppSummary.ts +0 -14
  777. package/bundle/src/codex-protocol/v2/AppToolApproval.ts +0 -5
  778. package/bundle/src/codex-protocol/v2/AppToolsConfig.ts +0 -8
  779. package/bundle/src/codex-protocol/v2/ApprovalsReviewer.ts +0 -12
  780. package/bundle/src/codex-protocol/v2/AppsConfig.ts +0 -17
  781. package/bundle/src/codex-protocol/v2/AppsDefaultConfig.ts +0 -9
  782. package/bundle/src/codex-protocol/v2/AppsListParams.ts +0 -25
  783. package/bundle/src/codex-protocol/v2/AppsListResponse.ts +0 -16
  784. package/bundle/src/codex-protocol/v2/AskForApproval.ts +0 -18
  785. package/bundle/src/codex-protocol/v2/AutoReviewDecisionSource.ts +0 -8
  786. package/bundle/src/codex-protocol/v2/ByteRange.ts +0 -5
  787. package/bundle/src/codex-protocol/v2/CancelLoginAccountParams.ts +0 -5
  788. package/bundle/src/codex-protocol/v2/CancelLoginAccountResponse.ts +0 -6
  789. package/bundle/src/codex-protocol/v2/CancelLoginAccountStatus.ts +0 -5
  790. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshParams.ts +0 -18
  791. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshReason.ts +0 -5
  792. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.ts +0 -9
  793. package/bundle/src/codex-protocol/v2/CodexErrorInfo.ts +0 -27
  794. package/bundle/src/codex-protocol/v2/CollabAgentState.ts +0 -6
  795. package/bundle/src/codex-protocol/v2/CollabAgentStatus.ts +0 -12
  796. package/bundle/src/codex-protocol/v2/CollabAgentTool.ts +0 -5
  797. package/bundle/src/codex-protocol/v2/CollabAgentToolCallStatus.ts +0 -5
  798. package/bundle/src/codex-protocol/v2/CollaborationModeMask.ts +0 -15
  799. package/bundle/src/codex-protocol/v2/CommandAction.ts +0 -10
  800. package/bundle/src/codex-protocol/v2/CommandExecOutputDeltaNotification.ts +0 -31
  801. package/bundle/src/codex-protocol/v2/CommandExecOutputStream.ts +0 -8
  802. package/bundle/src/codex-protocol/v2/CommandExecParams.ts +0 -87
  803. package/bundle/src/codex-protocol/v2/CommandExecResizeParams.ts +0 -19
  804. package/bundle/src/codex-protocol/v2/CommandExecResizeResponse.ts +0 -8
  805. package/bundle/src/codex-protocol/v2/CommandExecResponse.ts +0 -25
  806. package/bundle/src/codex-protocol/v2/CommandExecTerminalSize.ts +0 -17
  807. package/bundle/src/codex-protocol/v2/CommandExecTerminateParams.ts +0 -14
  808. package/bundle/src/codex-protocol/v2/CommandExecTerminateResponse.ts +0 -8
  809. package/bundle/src/codex-protocol/v2/CommandExecWriteParams.ts +0 -23
  810. package/bundle/src/codex-protocol/v2/CommandExecWriteResponse.ts +0 -8
  811. package/bundle/src/codex-protocol/v2/CommandExecutionApprovalDecision.ts +0 -13
  812. package/bundle/src/codex-protocol/v2/CommandExecutionOutputDeltaNotification.ts +0 -10
  813. package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalParams.ts +0 -47
  814. package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalResponse.ts +0 -8
  815. package/bundle/src/codex-protocol/v2/CommandExecutionSource.ts +0 -9
  816. package/bundle/src/codex-protocol/v2/CommandExecutionStatus.ts +0 -5
  817. package/bundle/src/codex-protocol/v2/CommandMigration.ts +0 -5
  818. package/bundle/src/codex-protocol/v2/Config.ts +0 -53
  819. package/bundle/src/codex-protocol/v2/ConfigBatchWriteParams.ts +0 -17
  820. package/bundle/src/codex-protocol/v2/ConfigEdit.ts +0 -7
  821. package/bundle/src/codex-protocol/v2/ConfigLayer.ts +0 -12
  822. package/bundle/src/codex-protocol/v2/ConfigLayerMetadata.ts +0 -6
  823. package/bundle/src/codex-protocol/v2/ConfigLayerSource.ts +0 -27
  824. package/bundle/src/codex-protocol/v2/ConfigReadParams.ts +0 -13
  825. package/bundle/src/codex-protocol/v2/ConfigReadResponse.ts +0 -12
  826. package/bundle/src/codex-protocol/v2/ConfigRequirements.ts +0 -15
  827. package/bundle/src/codex-protocol/v2/ConfigRequirementsReadResponse.ts +0 -11
  828. package/bundle/src/codex-protocol/v2/ConfigValueWriteParams.ts +0 -16
  829. package/bundle/src/codex-protocol/v2/ConfigWarningNotification.ts +0 -23
  830. package/bundle/src/codex-protocol/v2/ConfigWriteResponse.ts +0 -16
  831. package/bundle/src/codex-protocol/v2/ConfiguredHookHandler.ts +0 -14
  832. package/bundle/src/codex-protocol/v2/ConfiguredHookMatcherGroup.ts +0 -9
  833. package/bundle/src/codex-protocol/v2/ContextCompactedNotification.ts +0 -8
  834. package/bundle/src/codex-protocol/v2/CreditsSnapshot.ts +0 -5
  835. package/bundle/src/codex-protocol/v2/DeprecationNoticeNotification.ts +0 -14
  836. package/bundle/src/codex-protocol/v2/DynamicToolCallOutputContentItem.ts +0 -7
  837. package/bundle/src/codex-protocol/v2/DynamicToolCallParams.ts +0 -13
  838. package/bundle/src/codex-protocol/v2/DynamicToolCallResponse.ts +0 -9
  839. package/bundle/src/codex-protocol/v2/DynamicToolCallStatus.ts +0 -5
  840. package/bundle/src/codex-protocol/v2/DynamicToolSpec.ts +0 -12
  841. package/bundle/src/codex-protocol/v2/ErrorNotification.ts +0 -11
  842. package/bundle/src/codex-protocol/v2/ExecPolicyAmendment.ts +0 -5
  843. package/bundle/src/codex-protocol/v2/ExperimentalFeature.ts +0 -38
  844. package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.ts +0 -13
  845. package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +0 -10
  846. package/bundle/src/codex-protocol/v2/ExperimentalFeatureListParams.ts +0 -14
  847. package/bundle/src/codex-protocol/v2/ExperimentalFeatureListResponse.ts +0 -13
  848. package/bundle/src/codex-protocol/v2/ExperimentalFeatureStage.ts +0 -10
  849. package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectParams.ts +0 -14
  850. package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectResponse.ts +0 -6
  851. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.ts +0 -5
  852. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportParams.ts +0 -8
  853. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportResponse.ts +0 -5
  854. package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItem.ts +0 -15
  855. package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItemType.ts +0 -14
  856. package/bundle/src/codex-protocol/v2/FeedbackUploadParams.ts +0 -12
  857. package/bundle/src/codex-protocol/v2/FeedbackUploadResponse.ts +0 -5
  858. package/bundle/src/codex-protocol/v2/FileChangeApprovalDecision.ts +0 -5
  859. package/bundle/src/codex-protocol/v2/FileChangeOutputDeltaNotification.ts +0 -15
  860. package/bundle/src/codex-protocol/v2/FileChangePatchUpdatedNotification.ts +0 -11
  861. package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalParams.ts +0 -22
  862. package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalResponse.ts +0 -6
  863. package/bundle/src/codex-protocol/v2/FileSystemAccessMode.ts +0 -5
  864. package/bundle/src/codex-protocol/v2/FileSystemPath.ts +0 -10
  865. package/bundle/src/codex-protocol/v2/FileSystemSandboxEntry.ts +0 -7
  866. package/bundle/src/codex-protocol/v2/FileSystemSpecialPath.ts +0 -11
  867. package/bundle/src/codex-protocol/v2/FileUpdateChange.ts +0 -6
  868. package/bundle/src/codex-protocol/v2/FsChangedNotification.ts +0 -18
  869. package/bundle/src/codex-protocol/v2/FsCopyParams.ts +0 -22
  870. package/bundle/src/codex-protocol/v2/FsCopyResponse.ts +0 -8
  871. package/bundle/src/codex-protocol/v2/FsCreateDirectoryParams.ts +0 -18
  872. package/bundle/src/codex-protocol/v2/FsCreateDirectoryResponse.ts +0 -8
  873. package/bundle/src/codex-protocol/v2/FsGetMetadataParams.ts +0 -14
  874. package/bundle/src/codex-protocol/v2/FsGetMetadataResponse.ts +0 -29
  875. package/bundle/src/codex-protocol/v2/FsReadDirectoryEntry.ts +0 -21
  876. package/bundle/src/codex-protocol/v2/FsReadDirectoryParams.ts +0 -14
  877. package/bundle/src/codex-protocol/v2/FsReadDirectoryResponse.ts +0 -14
  878. package/bundle/src/codex-protocol/v2/FsReadFileParams.ts +0 -14
  879. package/bundle/src/codex-protocol/v2/FsReadFileResponse.ts +0 -13
  880. package/bundle/src/codex-protocol/v2/FsRemoveParams.ts +0 -22
  881. package/bundle/src/codex-protocol/v2/FsRemoveResponse.ts +0 -8
  882. package/bundle/src/codex-protocol/v2/FsUnwatchParams.ts +0 -13
  883. package/bundle/src/codex-protocol/v2/FsUnwatchResponse.ts +0 -8
  884. package/bundle/src/codex-protocol/v2/FsWatchParams.ts +0 -18
  885. package/bundle/src/codex-protocol/v2/FsWatchResponse.ts +0 -14
  886. package/bundle/src/codex-protocol/v2/FsWriteFileParams.ts +0 -18
  887. package/bundle/src/codex-protocol/v2/FsWriteFileResponse.ts +0 -8
  888. package/bundle/src/codex-protocol/v2/GetAccountParams.ts +0 -14
  889. package/bundle/src/codex-protocol/v2/GetAccountRateLimitsResponse.ts +0 -15
  890. package/bundle/src/codex-protocol/v2/GetAccountResponse.ts +0 -6
  891. package/bundle/src/codex-protocol/v2/GitInfo.ts +0 -5
  892. package/bundle/src/codex-protocol/v2/GrantedPermissionProfile.ts +0 -10
  893. package/bundle/src/codex-protocol/v2/GuardianApprovalReview.ts +0 -18
  894. package/bundle/src/codex-protocol/v2/GuardianApprovalReviewAction.ts +0 -34
  895. package/bundle/src/codex-protocol/v2/GuardianApprovalReviewStatus.ts +0 -13
  896. package/bundle/src/codex-protocol/v2/GuardianCommandSource.ts +0 -5
  897. package/bundle/src/codex-protocol/v2/GuardianRiskLevel.ts +0 -8
  898. package/bundle/src/codex-protocol/v2/GuardianUserAuthorization.ts +0 -8
  899. package/bundle/src/codex-protocol/v2/GuardianWarningNotification.ts +0 -14
  900. package/bundle/src/codex-protocol/v2/HookCompletedNotification.ts +0 -10
  901. package/bundle/src/codex-protocol/v2/HookErrorInfo.ts +0 -5
  902. package/bundle/src/codex-protocol/v2/HookEventName.ts +0 -13
  903. package/bundle/src/codex-protocol/v2/HookExecutionMode.ts +0 -5
  904. package/bundle/src/codex-protocol/v2/HookHandlerType.ts +0 -5
  905. package/bundle/src/codex-protocol/v2/HookMetadata.ts +0 -26
  906. package/bundle/src/codex-protocol/v2/HookMigration.ts +0 -5
  907. package/bundle/src/codex-protocol/v2/HookOutputEntry.ts +0 -6
  908. package/bundle/src/codex-protocol/v2/HookOutputEntryKind.ts +0 -5
  909. package/bundle/src/codex-protocol/v2/HookPromptFragment.ts +0 -5
  910. package/bundle/src/codex-protocol/v2/HookRunStatus.ts +0 -5
  911. package/bundle/src/codex-protocol/v2/HookRunSummary.ts +0 -28
  912. package/bundle/src/codex-protocol/v2/HookScope.ts +0 -5
  913. package/bundle/src/codex-protocol/v2/HookSource.ts +0 -15
  914. package/bundle/src/codex-protocol/v2/HookStartedNotification.ts +0 -10
  915. package/bundle/src/codex-protocol/v2/HookTrustStatus.ts +0 -5
  916. package/bundle/src/codex-protocol/v2/HooksListEntry.ts +0 -12
  917. package/bundle/src/codex-protocol/v2/HooksListParams.ts +0 -10
  918. package/bundle/src/codex-protocol/v2/HooksListResponse.ts +0 -6
  919. package/bundle/src/codex-protocol/v2/ItemCompletedNotification.ts +0 -14
  920. package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +0 -44
  921. package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +0 -38
  922. package/bundle/src/codex-protocol/v2/ItemStartedNotification.ts +0 -14
  923. package/bundle/src/codex-protocol/v2/ListMcpServerStatusParams.ts +0 -20
  924. package/bundle/src/codex-protocol/v2/ListMcpServerStatusResponse.ts +0 -13
  925. package/bundle/src/codex-protocol/v2/LoginAccountParams.ts +0 -27
  926. package/bundle/src/codex-protocol/v2/LoginAccountResponse.ts +0 -27
  927. package/bundle/src/codex-protocol/v2/LogoutAccountResponse.ts +0 -5
  928. package/bundle/src/codex-protocol/v2/ManagedHooksRequirements.ts +0 -17
  929. package/bundle/src/codex-protocol/v2/MarketplaceAddParams.ts +0 -9
  930. package/bundle/src/codex-protocol/v2/MarketplaceAddResponse.ts +0 -10
  931. package/bundle/src/codex-protocol/v2/MarketplaceInterface.ts +0 -5
  932. package/bundle/src/codex-protocol/v2/MarketplaceLoadErrorInfo.ts +0 -6
  933. package/bundle/src/codex-protocol/v2/MarketplaceRemoveParams.ts +0 -5
  934. package/bundle/src/codex-protocol/v2/MarketplaceRemoveResponse.ts +0 -9
  935. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeErrorInfo.ts +0 -5
  936. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeParams.ts +0 -5
  937. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeResponse.ts +0 -11
  938. package/bundle/src/codex-protocol/v2/McpAuthStatus.ts +0 -5
  939. package/bundle/src/codex-protocol/v2/McpElicitationArrayType.ts +0 -5
  940. package/bundle/src/codex-protocol/v2/McpElicitationBooleanSchema.ts +0 -11
  941. package/bundle/src/codex-protocol/v2/McpElicitationBooleanType.ts +0 -5
  942. package/bundle/src/codex-protocol/v2/McpElicitationConstOption.ts +0 -5
  943. package/bundle/src/codex-protocol/v2/McpElicitationEnumSchema.ts +0 -11
  944. package/bundle/src/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +0 -13
  945. package/bundle/src/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.ts +0 -9
  946. package/bundle/src/codex-protocol/v2/McpElicitationNumberSchema.ts +0 -13
  947. package/bundle/src/codex-protocol/v2/McpElicitationNumberType.ts +0 -5
  948. package/bundle/src/codex-protocol/v2/McpElicitationObjectType.ts +0 -5
  949. package/bundle/src/codex-protocol/v2/McpElicitationPrimitiveSchema.ts +0 -13
  950. package/bundle/src/codex-protocol/v2/McpElicitationSchema.ts +0 -18
  951. package/bundle/src/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.ts +0 -9
  952. package/bundle/src/codex-protocol/v2/McpElicitationStringFormat.ts +0 -5
  953. package/bundle/src/codex-protocol/v2/McpElicitationStringSchema.ts +0 -15
  954. package/bundle/src/codex-protocol/v2/McpElicitationStringType.ts +0 -5
  955. package/bundle/src/codex-protocol/v2/McpElicitationTitledEnumItems.ts +0 -6
  956. package/bundle/src/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +0 -15
  957. package/bundle/src/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +0 -13
  958. package/bundle/src/codex-protocol/v2/McpElicitationUntitledEnumItems.ts +0 -9
  959. package/bundle/src/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +0 -15
  960. package/bundle/src/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +0 -12
  961. package/bundle/src/codex-protocol/v2/McpResourceReadParams.ts +0 -5
  962. package/bundle/src/codex-protocol/v2/McpResourceReadResponse.ts +0 -6
  963. package/bundle/src/codex-protocol/v2/McpServerElicitationAction.ts +0 -5
  964. package/bundle/src/codex-protocol/v2/McpServerElicitationRequestParams.ts +0 -27
  965. package/bundle/src/codex-protocol/v2/McpServerElicitationRequestResponse.ts +0 -19
  966. package/bundle/src/codex-protocol/v2/McpServerMigration.ts +0 -5
  967. package/bundle/src/codex-protocol/v2/McpServerOauthLoginCompletedNotification.ts +0 -9
  968. package/bundle/src/codex-protocol/v2/McpServerOauthLoginParams.ts +0 -9
  969. package/bundle/src/codex-protocol/v2/McpServerOauthLoginResponse.ts +0 -5
  970. package/bundle/src/codex-protocol/v2/McpServerRefreshResponse.ts +0 -5
  971. package/bundle/src/codex-protocol/v2/McpServerStartupState.ts +0 -5
  972. package/bundle/src/codex-protocol/v2/McpServerStatus.ts +0 -15
  973. package/bundle/src/codex-protocol/v2/McpServerStatusDetail.ts +0 -5
  974. package/bundle/src/codex-protocol/v2/McpServerStatusUpdatedNotification.ts +0 -10
  975. package/bundle/src/codex-protocol/v2/McpServerToolCallParams.ts +0 -12
  976. package/bundle/src/codex-protocol/v2/McpServerToolCallResponse.ts +0 -11
  977. package/bundle/src/codex-protocol/v2/McpToolCallError.ts +0 -5
  978. package/bundle/src/codex-protocol/v2/McpToolCallProgressNotification.ts +0 -10
  979. package/bundle/src/codex-protocol/v2/McpToolCallResult.ts +0 -10
  980. package/bundle/src/codex-protocol/v2/McpToolCallStatus.ts +0 -5
  981. package/bundle/src/codex-protocol/v2/MemoryCitation.ts +0 -6
  982. package/bundle/src/codex-protocol/v2/MemoryCitationEntry.ts +0 -10
  983. package/bundle/src/codex-protocol/v2/MergeStrategy.ts +0 -5
  984. package/bundle/src/codex-protocol/v2/MigrationDetails.ts +0 -18
  985. package/bundle/src/codex-protocol/v2/Model.ts +0 -30
  986. package/bundle/src/codex-protocol/v2/ModelAvailabilityNux.ts +0 -5
  987. package/bundle/src/codex-protocol/v2/ModelListParams.ts +0 -18
  988. package/bundle/src/codex-protocol/v2/ModelListResponse.ts +0 -13
  989. package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadParams.ts +0 -5
  990. package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.ts +0 -9
  991. package/bundle/src/codex-protocol/v2/ModelRerouteReason.ts +0 -5
  992. package/bundle/src/codex-protocol/v2/ModelReroutedNotification.ts +0 -12
  993. package/bundle/src/codex-protocol/v2/ModelServiceTier.ts +0 -5
  994. package/bundle/src/codex-protocol/v2/ModelUpgradeInfo.ts +0 -10
  995. package/bundle/src/codex-protocol/v2/ModelVerification.ts +0 -5
  996. package/bundle/src/codex-protocol/v2/ModelVerificationNotification.ts +0 -10
  997. package/bundle/src/codex-protocol/v2/NetworkAccess.ts +0 -5
  998. package/bundle/src/codex-protocol/v2/NetworkApprovalContext.ts +0 -6
  999. package/bundle/src/codex-protocol/v2/NetworkApprovalProtocol.ts +0 -5
  1000. package/bundle/src/codex-protocol/v2/NetworkDomainPermission.ts +0 -5
  1001. package/bundle/src/codex-protocol/v2/NetworkPolicyAmendment.ts +0 -6
  1002. package/bundle/src/codex-protocol/v2/NetworkPolicyRuleAction.ts +0 -5
  1003. package/bundle/src/codex-protocol/v2/NetworkRequirements.ts +0 -40
  1004. package/bundle/src/codex-protocol/v2/NetworkUnixSocketPermission.ts +0 -5
  1005. package/bundle/src/codex-protocol/v2/NonSteerableTurnKind.ts +0 -5
  1006. package/bundle/src/codex-protocol/v2/OverriddenMetadata.ts +0 -11
  1007. package/bundle/src/codex-protocol/v2/PatchApplyStatus.ts +0 -5
  1008. package/bundle/src/codex-protocol/v2/PatchChangeKind.ts +0 -8
  1009. package/bundle/src/codex-protocol/v2/PermissionGrantScope.ts +0 -5
  1010. package/bundle/src/codex-protocol/v2/PermissionProfile.ts +0 -14
  1011. package/bundle/src/codex-protocol/v2/PermissionProfileFileSystemPermissions.ts +0 -8
  1012. package/bundle/src/codex-protocol/v2/PermissionProfileModificationParams.ts +0 -9
  1013. package/bundle/src/codex-protocol/v2/PermissionProfileNetworkPermissions.ts +0 -5
  1014. package/bundle/src/codex-protocol/v2/PermissionProfileSelectionParams.ts +0 -10
  1015. package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalParams.ts +0 -18
  1016. package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalResponse.ts +0 -14
  1017. package/bundle/src/codex-protocol/v2/PlanDeltaNotification.ts +0 -14
  1018. package/bundle/src/codex-protocol/v2/PluginAuthPolicy.ts +0 -5
  1019. package/bundle/src/codex-protocol/v2/PluginAvailability.ts +0 -5
  1020. package/bundle/src/codex-protocol/v2/PluginDetail.ts +0 -19
  1021. package/bundle/src/codex-protocol/v2/PluginHookSummary.ts +0 -6
  1022. package/bundle/src/codex-protocol/v2/PluginInstallParams.ts +0 -10
  1023. package/bundle/src/codex-protocol/v2/PluginInstallPolicy.ts +0 -5
  1024. package/bundle/src/codex-protocol/v2/PluginInstallResponse.ts +0 -10
  1025. package/bundle/src/codex-protocol/v2/PluginInterface.ts +0 -46
  1026. package/bundle/src/codex-protocol/v2/PluginListMarketplaceKind.ts +0 -5
  1027. package/bundle/src/codex-protocol/v2/PluginListParams.ts +0 -18
  1028. package/bundle/src/codex-protocol/v2/PluginListResponse.ts +0 -11
  1029. package/bundle/src/codex-protocol/v2/PluginMarketplaceEntry.ts +0 -17
  1030. package/bundle/src/codex-protocol/v2/PluginReadParams.ts +0 -10
  1031. package/bundle/src/codex-protocol/v2/PluginReadResponse.ts +0 -6
  1032. package/bundle/src/codex-protocol/v2/PluginShareContext.ts +0 -12
  1033. package/bundle/src/codex-protocol/v2/PluginShareDeleteParams.ts +0 -5
  1034. package/bundle/src/codex-protocol/v2/PluginShareDeleteResponse.ts +0 -5
  1035. package/bundle/src/codex-protocol/v2/PluginShareDiscoverability.ts +0 -5
  1036. package/bundle/src/codex-protocol/v2/PluginShareListItem.ts +0 -11
  1037. package/bundle/src/codex-protocol/v2/PluginShareListParams.ts +0 -5
  1038. package/bundle/src/codex-protocol/v2/PluginShareListResponse.ts +0 -6
  1039. package/bundle/src/codex-protocol/v2/PluginSharePrincipal.ts +0 -10
  1040. package/bundle/src/codex-protocol/v2/PluginSharePrincipalType.ts +0 -5
  1041. package/bundle/src/codex-protocol/v2/PluginShareSaveParams.ts +0 -13
  1042. package/bundle/src/codex-protocol/v2/PluginShareSaveResponse.ts +0 -5
  1043. package/bundle/src/codex-protocol/v2/PluginShareTarget.ts +0 -6
  1044. package/bundle/src/codex-protocol/v2/PluginShareUpdateDiscoverability.ts +0 -5
  1045. package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsParams.ts +0 -11
  1046. package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsResponse.ts +0 -10
  1047. package/bundle/src/codex-protocol/v2/PluginSkillReadParams.ts +0 -9
  1048. package/bundle/src/codex-protocol/v2/PluginSkillReadResponse.ts +0 -5
  1049. package/bundle/src/codex-protocol/v2/PluginSource.ts +0 -9
  1050. package/bundle/src/codex-protocol/v2/PluginSummary.ts +0 -29
  1051. package/bundle/src/codex-protocol/v2/PluginUninstallParams.ts +0 -5
  1052. package/bundle/src/codex-protocol/v2/PluginUninstallResponse.ts +0 -5
  1053. package/bundle/src/codex-protocol/v2/PluginsMigration.ts +0 -5
  1054. package/bundle/src/codex-protocol/v2/ProcessExitedNotification.ts +0 -43
  1055. package/bundle/src/codex-protocol/v2/ProcessOutputDeltaNotification.ts +0 -27
  1056. package/bundle/src/codex-protocol/v2/ProcessOutputStream.ts +0 -8
  1057. package/bundle/src/codex-protocol/v2/ProcessTerminalSize.ts +0 -17
  1058. package/bundle/src/codex-protocol/v2/ProfileV2.ts +0 -37
  1059. package/bundle/src/codex-protocol/v2/RateLimitReachedType.ts +0 -10
  1060. package/bundle/src/codex-protocol/v2/RateLimitSnapshot.ts +0 -17
  1061. package/bundle/src/codex-protocol/v2/RateLimitWindow.ts +0 -9
  1062. package/bundle/src/codex-protocol/v2/RawResponseItemCompletedNotification.ts +0 -10
  1063. package/bundle/src/codex-protocol/v2/ReasoningEffortOption.ts +0 -6
  1064. package/bundle/src/codex-protocol/v2/ReasoningSummaryPartAddedNotification.ts +0 -10
  1065. package/bundle/src/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.ts +0 -11
  1066. package/bundle/src/codex-protocol/v2/ReasoningTextDeltaNotification.ts +0 -11
  1067. package/bundle/src/codex-protocol/v2/RemoteControlConnectionStatus.ts +0 -5
  1068. package/bundle/src/codex-protocol/v2/RemoteControlStatusChangedNotification.ts +0 -12
  1069. package/bundle/src/codex-protocol/v2/RequestPermissionProfile.ts +0 -10
  1070. package/bundle/src/codex-protocol/v2/ResidencyRequirement.ts +0 -5
  1071. package/bundle/src/codex-protocol/v2/ReviewDelivery.ts +0 -5
  1072. package/bundle/src/codex-protocol/v2/ReviewStartParams.ts +0 -15
  1073. package/bundle/src/codex-protocol/v2/ReviewStartResponse.ts +0 -15
  1074. package/bundle/src/codex-protocol/v2/ReviewTarget.ts +0 -16
  1075. package/bundle/src/codex-protocol/v2/SandboxMode.ts +0 -5
  1076. package/bundle/src/codex-protocol/v2/SandboxPolicy.ts +0 -17
  1077. package/bundle/src/codex-protocol/v2/SandboxWorkspaceWrite.ts +0 -10
  1078. package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailParams.ts +0 -6
  1079. package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.ts +0 -6
  1080. package/bundle/src/codex-protocol/v2/ServerRequestResolvedNotification.ts +0 -6
  1081. package/bundle/src/codex-protocol/v2/SessionMigration.ts +0 -5
  1082. package/bundle/src/codex-protocol/v2/SessionSource.ts +0 -13
  1083. package/bundle/src/codex-protocol/v2/SkillDependencies.ts +0 -6
  1084. package/bundle/src/codex-protocol/v2/SkillErrorInfo.ts +0 -5
  1085. package/bundle/src/codex-protocol/v2/SkillInterface.ts +0 -13
  1086. package/bundle/src/codex-protocol/v2/SkillMetadata.ts +0 -21
  1087. package/bundle/src/codex-protocol/v2/SkillScope.ts +0 -5
  1088. package/bundle/src/codex-protocol/v2/SkillSummary.ts +0 -14
  1089. package/bundle/src/codex-protocol/v2/SkillToolDependency.ts +0 -12
  1090. package/bundle/src/codex-protocol/v2/SkillsChangedNotification.ts +0 -11
  1091. package/bundle/src/codex-protocol/v2/SkillsConfigWriteParams.ts +0 -16
  1092. package/bundle/src/codex-protocol/v2/SkillsConfigWriteResponse.ts +0 -5
  1093. package/bundle/src/codex-protocol/v2/SkillsListEntry.ts +0 -11
  1094. package/bundle/src/codex-protocol/v2/SkillsListParams.ts +0 -14
  1095. package/bundle/src/codex-protocol/v2/SkillsListResponse.ts +0 -6
  1096. package/bundle/src/codex-protocol/v2/SortDirection.ts +0 -5
  1097. package/bundle/src/codex-protocol/v2/SubagentMigration.ts +0 -5
  1098. package/bundle/src/codex-protocol/v2/TerminalInteractionNotification.ts +0 -11
  1099. package/bundle/src/codex-protocol/v2/TextElement.ts +0 -15
  1100. package/bundle/src/codex-protocol/v2/TextPosition.ts +0 -14
  1101. package/bundle/src/codex-protocol/v2/TextRange.ts +0 -6
  1102. package/bundle/src/codex-protocol/v2/Thread.ts +0 -88
  1103. package/bundle/src/codex-protocol/v2/ThreadActiveFlag.ts +0 -5
  1104. package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.ts +0 -12
  1105. package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.ts +0 -5
  1106. package/bundle/src/codex-protocol/v2/ThreadArchiveParams.ts +0 -5
  1107. package/bundle/src/codex-protocol/v2/ThreadArchiveResponse.ts +0 -5
  1108. package/bundle/src/codex-protocol/v2/ThreadArchivedNotification.ts +0 -5
  1109. package/bundle/src/codex-protocol/v2/ThreadClosedNotification.ts +0 -5
  1110. package/bundle/src/codex-protocol/v2/ThreadCompactStartParams.ts +0 -5
  1111. package/bundle/src/codex-protocol/v2/ThreadCompactStartResponse.ts +0 -5
  1112. package/bundle/src/codex-protocol/v2/ThreadForkParams.ts +0 -40
  1113. package/bundle/src/codex-protocol/v2/ThreadForkResponse.ts +0 -30
  1114. package/bundle/src/codex-protocol/v2/ThreadGoal.ts +0 -15
  1115. package/bundle/src/codex-protocol/v2/ThreadGoalClearedNotification.ts +0 -5
  1116. package/bundle/src/codex-protocol/v2/ThreadGoalStatus.ts +0 -5
  1117. package/bundle/src/codex-protocol/v2/ThreadGoalUpdatedNotification.ts +0 -10
  1118. package/bundle/src/codex-protocol/v2/ThreadInjectItemsParams.ts +0 -12
  1119. package/bundle/src/codex-protocol/v2/ThreadInjectItemsResponse.ts +0 -5
  1120. package/bundle/src/codex-protocol/v2/ThreadItem.ts +0 -156
  1121. package/bundle/src/codex-protocol/v2/ThreadListParams.ts +0 -55
  1122. package/bundle/src/codex-protocol/v2/ThreadListResponse.ts +0 -20
  1123. package/bundle/src/codex-protocol/v2/ThreadLoadedListParams.ts +0 -14
  1124. package/bundle/src/codex-protocol/v2/ThreadLoadedListResponse.ts +0 -15
  1125. package/bundle/src/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +0 -21
  1126. package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateParams.ts +0 -14
  1127. package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateResponse.ts +0 -6
  1128. package/bundle/src/codex-protocol/v2/ThreadNameUpdatedNotification.ts +0 -5
  1129. package/bundle/src/codex-protocol/v2/ThreadReadParams.ts +0 -11
  1130. package/bundle/src/codex-protocol/v2/ThreadReadResponse.ts +0 -6
  1131. package/bundle/src/codex-protocol/v2/ThreadRealtimeAudioChunk.ts +0 -14
  1132. package/bundle/src/codex-protocol/v2/ThreadRealtimeClosedNotification.ts +0 -8
  1133. package/bundle/src/codex-protocol/v2/ThreadRealtimeErrorNotification.ts +0 -8
  1134. package/bundle/src/codex-protocol/v2/ThreadRealtimeItemAddedNotification.ts +0 -9
  1135. package/bundle/src/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +0 -12
  1136. package/bundle/src/codex-protocol/v2/ThreadRealtimeSdpNotification.ts +0 -8
  1137. package/bundle/src/codex-protocol/v2/ThreadRealtimeStartTransport.ts +0 -17
  1138. package/bundle/src/codex-protocol/v2/ThreadRealtimeStartedNotification.ts +0 -13
  1139. package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.ts +0 -16
  1140. package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.ts +0 -16
  1141. package/bundle/src/codex-protocol/v2/ThreadResumeParams.ts +0 -39
  1142. package/bundle/src/codex-protocol/v2/ThreadResumeResponse.ts +0 -30
  1143. package/bundle/src/codex-protocol/v2/ThreadRollbackParams.ts +0 -14
  1144. package/bundle/src/codex-protocol/v2/ThreadRollbackResponse.ts +0 -15
  1145. package/bundle/src/codex-protocol/v2/ThreadSetNameParams.ts +0 -5
  1146. package/bundle/src/codex-protocol/v2/ThreadSetNameResponse.ts +0 -5
  1147. package/bundle/src/codex-protocol/v2/ThreadShellCommandParams.ts +0 -14
  1148. package/bundle/src/codex-protocol/v2/ThreadShellCommandResponse.ts +0 -5
  1149. package/bundle/src/codex-protocol/v2/ThreadSortKey.ts +0 -5
  1150. package/bundle/src/codex-protocol/v2/ThreadSource.ts +0 -5
  1151. package/bundle/src/codex-protocol/v2/ThreadSourceKind.ts +0 -15
  1152. package/bundle/src/codex-protocol/v2/ThreadStartParams.ts +0 -33
  1153. package/bundle/src/codex-protocol/v2/ThreadStartResponse.ts +0 -30
  1154. package/bundle/src/codex-protocol/v2/ThreadStartSource.ts +0 -5
  1155. package/bundle/src/codex-protocol/v2/ThreadStartedNotification.ts +0 -6
  1156. package/bundle/src/codex-protocol/v2/ThreadStatus.ts +0 -10
  1157. package/bundle/src/codex-protocol/v2/ThreadStatusChangedNotification.ts +0 -6
  1158. package/bundle/src/codex-protocol/v2/ThreadTokenUsage.ts +0 -10
  1159. package/bundle/src/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.ts +0 -10
  1160. package/bundle/src/codex-protocol/v2/ThreadUnarchiveParams.ts +0 -5
  1161. package/bundle/src/codex-protocol/v2/ThreadUnarchiveResponse.ts +0 -6
  1162. package/bundle/src/codex-protocol/v2/ThreadUnarchivedNotification.ts +0 -5
  1163. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeParams.ts +0 -5
  1164. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeResponse.ts +0 -6
  1165. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeStatus.ts +0 -5
  1166. package/bundle/src/codex-protocol/v2/TokenUsageBreakdown.ts +0 -11
  1167. package/bundle/src/codex-protocol/v2/ToolRequestUserInputAnswer.ts +0 -8
  1168. package/bundle/src/codex-protocol/v2/ToolRequestUserInputOption.ts +0 -8
  1169. package/bundle/src/codex-protocol/v2/ToolRequestUserInputParams.ts +0 -14
  1170. package/bundle/src/codex-protocol/v2/ToolRequestUserInputQuestion.ts +0 -16
  1171. package/bundle/src/codex-protocol/v2/ToolRequestUserInputResponse.ts +0 -11
  1172. package/bundle/src/codex-protocol/v2/ToolsV2.ts +0 -6
  1173. package/bundle/src/codex-protocol/v2/Turn.ts +0 -36
  1174. package/bundle/src/codex-protocol/v2/TurnCompletedNotification.ts +0 -6
  1175. package/bundle/src/codex-protocol/v2/TurnDiffUpdatedNotification.ts +0 -9
  1176. package/bundle/src/codex-protocol/v2/TurnEnvironmentParams.ts +0 -6
  1177. package/bundle/src/codex-protocol/v2/TurnError.ts +0 -10
  1178. package/bundle/src/codex-protocol/v2/TurnInterruptParams.ts +0 -5
  1179. package/bundle/src/codex-protocol/v2/TurnInterruptResponse.ts +0 -5
  1180. package/bundle/src/codex-protocol/v2/TurnItemsView.ts +0 -5
  1181. package/bundle/src/codex-protocol/v2/TurnPlanStep.ts +0 -6
  1182. package/bundle/src/codex-protocol/v2/TurnPlanStepStatus.ts +0 -5
  1183. package/bundle/src/codex-protocol/v2/TurnPlanUpdatedNotification.ts +0 -11
  1184. package/bundle/src/codex-protocol/v2/TurnStartParams.ts +0 -48
  1185. package/bundle/src/codex-protocol/v2/TurnStartResponse.ts +0 -6
  1186. package/bundle/src/codex-protocol/v2/TurnStartedNotification.ts +0 -6
  1187. package/bundle/src/codex-protocol/v2/TurnStatus.ts +0 -5
  1188. package/bundle/src/codex-protocol/v2/TurnSteerParams.ts +0 -13
  1189. package/bundle/src/codex-protocol/v2/TurnSteerResponse.ts +0 -5
  1190. package/bundle/src/codex-protocol/v2/UserInput.ts +0 -18
  1191. package/bundle/src/codex-protocol/v2/WarningNotification.ts +0 -14
  1192. package/bundle/src/codex-protocol/v2/WebSearchAction.ts +0 -9
  1193. package/bundle/src/codex-protocol/v2/WindowsSandboxReadiness.ts +0 -5
  1194. package/bundle/src/codex-protocol/v2/WindowsSandboxReadinessResponse.ts +0 -6
  1195. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.ts +0 -10
  1196. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupMode.ts +0 -5
  1197. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartParams.ts +0 -10
  1198. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartResponse.ts +0 -5
  1199. package/bundle/src/codex-protocol/v2/WindowsWorldWritableWarningNotification.ts +0 -9
  1200. package/bundle/src/codex-protocol/v2/WriteStatus.ts +0 -5
  1201. package/bundle/src/codex-protocol/v2/index.ts +0 -446
  1202. package/bundle/src/utils/providers/openai/codex-rpc.ts +0 -238
  1203. package/bundle/src/utils/providers/openai/codex-worker.test.ts +0 -1006
  1204. package/bundle/src/utils/providers/openai/codex-worker.ts +0 -927
  1205. package/bundle/src/utils/providers/openai/openai-worker-pool-config.ts +0 -112
  1206. package/bundle/web-dist/client/assets/index-C0594sjh.js +0 -106
  1207. package/bundle/web-dist/client/assets/index-CcMEpCgt.css +0 -1
  1208. package/bundle/web-dist/client/assets/logs-BotUcOEB.js +0 -1
  1209. package/bundle/web-dist/client/assets/monit-kk3vnGvu.js +0 -1
  1210. package/bundle/web-dist/client/assets/settings-CAAQSIyg.js +0 -1
  1211. package/bundle/web-dist/client/assets/show-BryNvjUT.js +0 -2
  1212. /package/bundle/dist/{codex-protocol/AbsolutePathBuf.js → utils/providers/common/provider-types.js} +0 -0
@@ -253,4 +253,4 @@ function handleStreamJsonLine(line, onDelta, opts) {
253
253
  //#endregion
254
254
  export { buildStreamJsonInput, handleStreamJsonLine, serializeStreamJsonInput };
255
255
 
256
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWpzb24tYWRhcHRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL2FudGhyb3BpYy9zdHJlYW0tanNvbi1hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2xhdWRlIENMSSBzdHJlYW0tanNvbiBhZGFwdGVyLlxuICpcbiAqIElucHV0OiBxZ3JpZCBoaXN0b3J5L2lucHV0IC0+IENsYXVkZSBKU09OTCBzdGRpbi5cbiAqIE91dHB1dDogQ2xhdWRlIEpTT05MIHN0ZG91dCAtPiBxZ3JpZCBkZWx0YXMgKyBmaW5hbCByZXN1bHQgbWV0YWRhdGEuXG4gKlxuICogUHJldmlvdXMgY29udmVyc2F0aW9uIGl0ZW1zIGFyZSBmbGF0dGVuZWQgaW50byBvbmUgYXNzaXN0YW50IGNvbnRleHQgbGluZS5cbiAqIFRoZSBvbmx5IGV4ZWN1dGFibGUgdXNlciBsaW5lIGlzIHRoZSBjdXJyZW50IGlucHV0LlxuICovXG5cbmltcG9ydCB7IHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL2NvZGV4LXByb3RvY29sL3NlcmRlX2pzb24vSnNvblZhbHVlXCI7XG5pbXBvcnQgeyB0eXBlIFVzZXJJbnB1dCB9IGZyb20gXCIuLi8uLi8uLi9jb2RleC1wcm90b2NvbC92Mi9Vc2VySW5wdXRcIjtcbmltcG9ydCB7XG4gIHR5cGUgTW9kZWxGYWxsYmFjayxcbiAgdHlwZSBQcm92aWRlclRva2VuVXNhZ2VCcmVha2Rvd24sXG59IGZyb20gXCIuLi9jb21tb24vcHJvdmlkZXItZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgc3RyaXBGZW5jZXMgfSBmcm9tIFwiLi9mZW5jZS1zdHJpcFwiO1xuXG4vLyDilIDilIAg7J6F66ClIOyWtOuMke2EsCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLy8gQ2xhdWRlIHN0cmVhbS1qc29uIOyeheugpSDtlZwg7KSEKEpTT05MKS4gRW52ZWxvcGUgZmllbGRzIGFyZSBhZGRlZCBpbiBjbGF1ZGUtc2Vzc2lvbi5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhdWRlU3RyZWFtSnNvbkxpbmUge1xuICB0eXBlOiBcInVzZXJcIiB8IFwiYXNzaXN0YW50XCI7XG4gIG1lc3NhZ2U6IHtcbiAgICByb2xlOiBcInVzZXJcIiB8IFwiYXNzaXN0YW50XCI7XG4gICAgY29udGVudDogQXJyYXk8eyB0eXBlOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH0+O1xuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VySW5wdXRUb1RleHQoaW5wdXQ6IEFycmF5PFVzZXJJbnB1dD4pOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXRcbiAgICAuZmlsdGVyKChpKTogaSBpcyBFeHRyYWN0PFVzZXJJbnB1dCwgeyB0eXBlOiBcInRleHRcIiB9PiA9PiBpLnR5cGUgPT09IFwidGV4dFwiKVxuICAgIC5tYXAoKGkpID0+IGkudGV4dClcbiAgICAuam9pbihcIlxcblwiKTtcbn1cblxuZnVuY3Rpb24gdGV4dEJsb2NrKHRleHQ6IHN0cmluZyk6IEFycmF5PHsgdHlwZTogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9PiB7XG4gIHJldHVybiBbeyB0eXBlOiBcInRleHRcIiwgdGV4dCB9XTtcbn1cblxuLy8gY29kZXggUmVzcG9uc2VJdGVtKGNvbGRIaXN0b3J5IGl0ZW0pIOy1nOyGjCBzaGFwZS5cbi8vIGV4dHJhY3RQcm9tcHRBbmRIaXN0b3J5KGFpLXNkay91dGlscy50cykg6rCAIOunjOuTnOuKlCDtmJXsi506XG4vLyAgIHsgdHlwZTpcIm1lc3NhZ2VcIiwgcm9sZTpcInVzZXJcIiwgY29udGVudDpbe3R5cGU6XCJpbnB1dF90ZXh0XCIsIHRleHR9XSB9XG4vLyAgIHsgdHlwZTpcIm1lc3NhZ2VcIiwgcm9sZTpcImFzc2lzdGFudFwiLCBjb250ZW50Olt7dHlwZTpcIm91dHB1dF90ZXh0XCIsIHRleHR9XSB9XG4vLyAgIHsgdHlwZTpcImZ1bmN0aW9uX2NhbGxcIiwgbmFtZSwgYXJndW1lbnRzLCBjYWxsX2lkIH1cbi8vICAgeyB0eXBlOlwiZnVuY3Rpb25fY2FsbF9vdXRwdXRcIiwgY2FsbF9pZCwgb3V0cHV0IH1cbnR5cGUgUmVzcG9uc2VJdGVtID0geyBba2V5OiBzdHJpbmddOiBKc29uVmFsdWUgfCB1bmRlZmluZWQgfTtcblxuZnVuY3Rpb24gYXNPYmplY3QodjogSnNvblZhbHVlIHwgdW5kZWZpbmVkKTogUmVzcG9uc2VJdGVtIHwgbnVsbCB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHYpID8gKHYgYXMgUmVzcG9uc2VJdGVtKSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlc3BvbnNlSXRlbVRleHQoaXRlbTogUmVzcG9uc2VJdGVtKTogc3RyaW5nIHtcbiAgY29uc3QgY29udGVudCA9IGl0ZW0uY29udGVudDtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSByZXR1cm4gXCJcIjtcbiAgcmV0dXJuIGNvbnRlbnRcbiAgICAubWFwKChjKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSBhc09iamVjdChjKTtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIG9iai50ZXh0ID09PSBcInN0cmluZ1wiID8gb2JqLnRleHQgOiBcIlwiO1xuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuQ29sZEhpc3RvcnkoY29sZEhpc3Rvcnk6IEFycmF5PEpzb25WYWx1ZT4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBmb3IgKGNvbnN0IHJhdyBvZiBjb2xkSGlzdG9yeSkge1xuICAgIGNvbnN0IGl0ZW0gPSBhc09iamVjdChyYXcpO1xuICAgIGlmICghaXRlbSkgY29udGludWU7XG5cbiAgICBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBpdGVtLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpIHtcbiAgICAgIHBhcnRzLnB1c2goYEFzc2lzdGFudDogJHtyZXNwb25zZUl0ZW1UZXh0KGl0ZW0pfWApO1xuICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBpdGVtLnJvbGUgPT09IFwidXNlclwiKSB7XG4gICAgICBwYXJ0cy5wdXNoKGBVc2VyOiAke3Jlc3BvbnNlSXRlbVRleHQoaXRlbSl9YCk7XG4gICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSB7XG4gICAgICBjb25zdCBuYW1lID0gdHlwZW9mIGl0ZW0ubmFtZSA9PT0gXCJzdHJpbmdcIiA/IGl0ZW0ubmFtZSA6IFwiXCI7XG4gICAgICBjb25zdCBhcmdzID1cbiAgICAgICAgdHlwZW9mIGl0ZW0uYXJndW1lbnRzID09PSBcInN0cmluZ1wiID8gaXRlbS5hcmd1bWVudHMgOiBKU09OLnN0cmluZ2lmeShpdGVtLmFyZ3VtZW50cyA/PyB7fSk7XG4gICAgICBwYXJ0cy5wdXNoKGBUb29sIGNhbGw6ICR7bmFtZX0oJHthcmdzfSlgKTtcbiAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsX291dHB1dFwiKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPVxuICAgICAgICB0eXBlb2YgaXRlbS5vdXRwdXQgPT09IFwic3RyaW5nXCIgPyBpdGVtLm91dHB1dCA6IEpTT04uc3RyaW5naWZ5KGl0ZW0ub3V0cHV0ID8/IFwiXCIpO1xuICAgICAgcGFydHMucHVzaChgVG9vbCByZXN1bHQ6ICR7b3V0cHV0fWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGFydHMuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3RyZWFtSnNvbklucHV0KG9wdHM6IHtcbiAgY29sZEhpc3Rvcnk/OiBBcnJheTxKc29uVmFsdWU+O1xuICBpbnB1dDogQXJyYXk8VXNlcklucHV0Pjtcbn0pOiBBcnJheTxDbGF1ZGVTdHJlYW1Kc29uTGluZT4ge1xuICBjb25zdCBsaW5lczogQXJyYXk8Q2xhdWRlU3RyZWFtSnNvbkxpbmU+ID0gW107XG5cbiAgaWYgKG9wdHMuY29sZEhpc3RvcnkgJiYgb3B0cy5jb2xkSGlzdG9yeS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmxhdHRlbmVkID0gZmxhdHRlbkNvbGRIaXN0b3J5KG9wdHMuY29sZEhpc3RvcnkpO1xuICAgIGlmIChmbGF0dGVuZWQpIHtcbiAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICB0eXBlOiBcImFzc2lzdGFudFwiLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgcm9sZTogXCJhc3Npc3RhbnRcIixcbiAgICAgICAgICBjb250ZW50OiB0ZXh0QmxvY2soYFByaW9yIGNvbnZlcnNhdGlvbiBjb250ZXh0OlxcbiR7ZmxhdHRlbmVkfWApLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGluZXMucHVzaCh7XG4gICAgdHlwZTogXCJ1c2VyXCIsXG4gICAgbWVzc2FnZTogeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogdGV4dEJsb2NrKHVzZXJJbnB1dFRvVGV4dChvcHRzLmlucHV0KSkgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplU3RyZWFtSnNvbklucHV0KGxpbmVzOiBBcnJheTxDbGF1ZGVTdHJlYW1Kc29uTGluZT4pOiBzdHJpbmcge1xuICByZXR1cm4gbGluZXMubWFwKChsKSA9PiBKU09OLnN0cmluZ2lmeShsKSkuam9pbihcIlxcblwiKSArIFwiXFxuXCI7XG59XG5cbi8vIOKUgOKUgCDstpzroKUg7Ja064yR7YSwIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy9cbi8vIENsYXVkZSBzdGRvdXQoSlNPTkwp7J2EIHFncmlkIGRlbHRhcyArIGZpbmFsIHJlc3VsdCDroZwg67OA7ZmY7ZWc64ukLlxuXG5pbnRlcmZhY2UgQ2xhdWRlVXNhZ2Uge1xuICBpbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gIG91dHB1dF90b2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vucz86IG51bWJlcjtcbiAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uPzoge1xuICAgIGVwaGVtZXJhbF81bV9pbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gICAgZXBoZW1lcmFsXzFoX2lucHV0X3Rva2Vucz86IG51bWJlcjtcbiAgfTtcbiAgaXRlcmF0aW9ucz86IEFycmF5PHtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIG1vZGVsPzogc3RyaW5nO1xuICB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGF1ZGVTdHJlYW1SZXN1bHQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHVzYWdlOiBQcm92aWRlclRva2VuVXNhZ2VCcmVha2Rvd247XG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgY29zdFVzZDogbnVtYmVyO1xuICAvLyBxdW90YSDshozsp4QoXCJZb3UndmUgaGl0IC4uLlwiKSDqsJDsp4AuIGRpc3BhdGNoZXIg6rCAIFF1b3RhRXJyb3Ig66GcIOuzgO2ZmC5cbiAgcXVvdGFFeGhhdXN0ZWQ6IGJvb2xlYW47XG4gIC8vIHJlc3VsdC5pc19lcnJvciAvIHRlcm1pbmFsIG1vZGVsX2Vycm9yIOuTsS4gZGlzcGF0Y2hlciDqsIAg7JeQ65+s66GcIOuzgO2ZmC5cbiAgaXNFcnJvcjogYm9vbGVhbjtcbiAgLy8g7KeE64uo7JqpOiBDQyByZXN1bHQg65287J247J2YIHN1YnR5cGUoXCJzdWNjZXNzXCIgfCBcImVycm9yX21heF90dXJuc1wiIHwgLi4uKSDqs7wgdGVybWluYWxfcmVhc29uLlxuICAvLyBpc0Vycm9yIO2MkOyglSDsgqzsnKDrpbwg7JeQ65+sIOuplOyLnOyngOyXkCDrk5zrn6zrgrTquLAg7JyE7ZW0IOuztOyhtO2VnOuLpChTT04tNDk1KS5cbiAgc3VidHlwZT86IHN0cmluZztcbiAgdGVybWluYWxSZWFzb24/OiBzdHJpbmc7XG4gIC8vIOyLpOygnCDstZzsooUg7J2R64u17J2EIOunjOuToCDrqqjrjbguIEZhYmxlIHJlZnVzYWwgZmFsbGJhY2sg65WMIHJlcXVlc3RlZCBtb2RlbCDqs7wg64uk66W064ukLlxuICBzZXJ2ZWRNb2RlbD86IHN0cmluZztcbiAgc3RvcFJlYXNvbj86IHN0cmluZztcbiAgcmVmdXNhbD86IHtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBleHBsYW5hdGlvbj86IHN0cmluZztcbiAgfTtcbiAgbW9kZWxGYWxsYmFja3M/OiBBcnJheTxNb2RlbEZhbGxiYWNrPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUge1xuICBzdHJ1Y3R1cmVkT3V0cHV0VGV4dD86IHN0cmluZztcbiAgc2VydmVkTW9kZWw/OiBzdHJpbmc7XG4gIHN0b3BSZWFzb24/OiBzdHJpbmc7XG4gIHJlZnVzYWw/OiB7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG4gIH07XG4gIG1vZGVsRmFsbGJhY2tzPzogQXJyYXk8TW9kZWxGYWxsYmFjaz47XG4gIHJlZnVzYWxXaXRob3V0RmFsbGJhY2s/OiBib29sZWFuO1xufVxuXG4vLyBBbnRocm9waWMgdXNhZ2UgNCDsubTthYzqs6Drpqwg4oaSIFRva2VuVXNhZ2VCcmVha2Rvd24uXG4vLyBBbnRocm9waWMgbmF0aXZlIHVzYWdlIOuKlCBpbnB1dC9jYWNoZV9jcmVhdGlvbi9jYWNoZV9yZWFkIOulvCDshJzroZwg67Cw7YOA7KCB7J24IOy5tO2FjOqzoOumrOuhnCDspIDri6QuXG4vLyDrsJjrqbQgcWdyaWQg64K067aAIO2RnOykgChUb2tlblVzYWdlQnJlYWtkb3duKeqzvCBjb3N0IOqzhOyCsOydgCBpbnB1dFRva2VucyDrpbwgXCLsoITssrQg7J6F66ClXG4vLyAoPSBub24tY2FjaGUgaW5wdXQgKyBjYWNoZSBjcmVhdGlvbiArIGNhY2hlIHJlYWQpXCIg7Jy866GcIOy3qOq4ie2VmOqzoCBjYWNoZWRJbnB1dFRva2Vucy9jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnNcbi8vIOulvCDqt7jspJEg6rCBIOuqq+ycvOuhnCDri6Tsi5wg7ZGc7Iuc7ZWc64ukKE9wZW5BSS9Db2RleCB1c2FnZSDsmYAg6rCZ7J2AIOydmOuvuCkuIOuUsOudvOyEnCDsl6zquLDshJwg7ZWp7LOQIO2RnOykgO2ZlO2VnOuLpC5cbmZ1bmN0aW9uIHRvVXNhZ2VCcmVha2Rvd24odTogQ2xhdWRlVXNhZ2UpOiBQcm92aWRlclRva2VuVXNhZ2VCcmVha2Rvd24ge1xuICBjb25zdCBpbnB1dCA9IHUuaW5wdXRfdG9rZW5zID8/IDA7XG4gIGNvbnN0IGNhY2hlQ3JlYXRlID0gdS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMgPz8gMDtcbiAgY29uc3QgY2FjaGVSZWFkID0gdS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyA/PyAwO1xuICBjb25zdCBvdXRwdXQgPSB1Lm91dHB1dF90b2tlbnMgPz8gMDtcbiAgY29uc3QgdG90YWxJbnB1dCA9IGlucHV0ICsgY2FjaGVDcmVhdGUgKyBjYWNoZVJlYWQ7XG4gIGNvbnN0IGNhY2hlQ3JlYXRlNW0gPSB1LmNhY2hlX2NyZWF0aW9uPy5lcGhlbWVyYWxfNW1faW5wdXRfdG9rZW5zO1xuICBjb25zdCBjYWNoZUNyZWF0ZTFoID0gdS5jYWNoZV9jcmVhdGlvbj8uZXBoZW1lcmFsXzFoX2lucHV0X3Rva2VucztcbiAgcmV0dXJuIHtcbiAgICB0b3RhbFRva2VuczogdG90YWxJbnB1dCArIG91dHB1dCxcbiAgICBpbnB1dFRva2VuczogdG90YWxJbnB1dCxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogY2FjaGVSZWFkLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogY2FjaGVDcmVhdGUsXG4gICAgLi4uKHR5cGVvZiBjYWNoZUNyZWF0ZTVtID09PSBcIm51bWJlclwiID8geyBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogY2FjaGVDcmVhdGU1bSB9IDoge30pLFxuICAgIC4uLih0eXBlb2YgY2FjaGVDcmVhdGUxaCA9PT0gXCJudW1iZXJcIiA/IHsgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg6IGNhY2hlQ3JlYXRlMWggfSA6IHt9KSxcbiAgICBvdXRwdXRUb2tlbnM6IG91dHB1dCxcbiAgICByZWFzb25pbmdPdXRwdXRUb2tlbnM6IDAsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0cnVjdHVyZWRPdXRwdXRUb29sVXNlVGV4dChqOiBSZXNwb25zZUl0ZW0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBtZXNzYWdlID0gYXNPYmplY3Qoai5tZXNzYWdlKTtcbiAgY29uc3QgY29udGVudCA9IG1lc3NhZ2U/LmNvbnRlbnQ7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IHJhdyBvZiBjb250ZW50KSB7XG4gICAgY29uc3QgYmxvY2sgPSBhc09iamVjdChyYXcpO1xuICAgIGlmICghYmxvY2spIGNvbnRpbnVlO1xuICAgIGlmIChcbiAgICAgIGJsb2NrLnR5cGUgPT09IFwidG9vbF91c2VcIiAmJlxuICAgICAgYmxvY2submFtZSA9PT0gXCJTdHJ1Y3R1cmVkT3V0cHV0XCIgJiZcbiAgICAgIGJsb2NrLmlucHV0ICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShibG9jay5pbnB1dCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbEV2ZW50TW9kZWwobW9kZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHdpdGhvdXRQcm92aWRlciA9IG1vZGVsLnN0YXJ0c1dpdGgoXCJhbnRocm9waWMvXCIpID8gbW9kZWwuc2xpY2UoXCJhbnRocm9waWMvXCIubGVuZ3RoKSA6IG1vZGVsO1xuICByZXR1cm4gd2l0aG91dFByb3ZpZGVyLnJlcGxhY2UoL1xcWzFtXFxdJC8sIFwiXCIpO1xufVxuXG5mdW5jdGlvbiBvcHRpb25hbFN0cmluZyh2YWx1ZTogSnNvblZhbHVlIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlY29yZEZhbGxiYWNrKHN0YXRlOiBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBNb2RlbEZhbGxiYWNrKTogdm9pZCB7XG4gIGlmICghc3RhdGUpIHJldHVybjtcbiAgY29uc3Qgbm9ybWFsaXplZDogTW9kZWxGYWxsYmFjayA9IHtcbiAgICAuLi5mYWxsYmFjayxcbiAgICBmcm9tTW9kZWw6IGNhbm9uaWNhbEV2ZW50TW9kZWwoZmFsbGJhY2suZnJvbU1vZGVsKSxcbiAgICB0b01vZGVsOiBjYW5vbmljYWxFdmVudE1vZGVsKGZhbGxiYWNrLnRvTW9kZWwpLFxuICB9O1xuICBjb25zdCBleGlzdGluZyA9IHN0YXRlLm1vZGVsRmFsbGJhY2tzPy5maW5kKFxuICAgIChpdGVtKSA9PlxuICAgICAgaXRlbS50cmlnZ2VyID09PSBub3JtYWxpemVkLnRyaWdnZXIgJiZcbiAgICAgIGl0ZW0uZnJvbU1vZGVsID09PSBub3JtYWxpemVkLmZyb21Nb2RlbCAmJlxuICAgICAgaXRlbS50b01vZGVsID09PSBub3JtYWxpemVkLnRvTW9kZWwsXG4gICk7XG4gIGlmIChleGlzdGluZykge1xuICAgIGV4aXN0aW5nLmNhdGVnb3J5ID8/PSBub3JtYWxpemVkLmNhdGVnb3J5O1xuICAgIGV4aXN0aW5nLmV4cGxhbmF0aW9uID8/PSBub3JtYWxpemVkLmV4cGxhbmF0aW9uO1xuICB9IGVsc2Uge1xuICAgIChzdGF0ZS5tb2RlbEZhbGxiYWNrcyA/Pz0gW10pLnB1c2gobm9ybWFsaXplZCk7XG4gIH1cbiAgc3RhdGUuc2VydmVkTW9kZWwgPSBub3JtYWxpemVkLnRvTW9kZWw7XG4gIHN0YXRlLnJlZnVzYWxXaXRob3V0RmFsbGJhY2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlUm91dGluZ0Zyb21Vc2FnZShcbiAgdXNhZ2U6IFJlc3BvbnNlSXRlbSB8IG51bGwsXG4gIHN0YXRlOiBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUgfCB1bmRlZmluZWQsXG4pOiB2b2lkIHtcbiAgaWYgKCFzdGF0ZSB8fCAhdXNhZ2UgfHwgIUFycmF5LmlzQXJyYXkodXNhZ2UuaXRlcmF0aW9ucykpIHJldHVybjtcblxuICBsZXQgcHJldmlvdXNNb2RlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHJhdyBvZiB1c2FnZS5pdGVyYXRpb25zKSB7XG4gICAgY29uc3QgaXRlcmF0aW9uID0gYXNPYmplY3QocmF3KTtcbiAgICBpZiAoIWl0ZXJhdGlvbikgY29udGludWU7XG4gICAgY29uc3QgbW9kZWwgPSBvcHRpb25hbFN0cmluZyhpdGVyYXRpb24ubW9kZWwpO1xuICAgIGNvbnN0IHR5cGUgPSBvcHRpb25hbFN0cmluZyhpdGVyYXRpb24udHlwZSk7XG4gICAgaWYgKCFtb2RlbCkgY29udGludWU7XG4gICAgY29uc3QgY2Fub25pY2FsTW9kZWwgPSBjYW5vbmljYWxFdmVudE1vZGVsKG1vZGVsKTtcbiAgICBpZiAodHlwZSA9PT0gXCJmYWxsYmFja19tZXNzYWdlXCIgJiYgcHJldmlvdXNNb2RlbCkge1xuICAgICAgcmVjb3JkRmFsbGJhY2soc3RhdGUsIHtcbiAgICAgICAgdHJpZ2dlcjogXCJyZWZ1c2FsXCIsXG4gICAgICAgIGZyb21Nb2RlbDogcHJldmlvdXNNb2RlbCxcbiAgICAgICAgdG9Nb2RlbDogY2Fub25pY2FsTW9kZWwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcHJldmlvdXNNb2RlbCA9IGNhbm9uaWNhbE1vZGVsO1xuICAgIHN0YXRlLnNlcnZlZE1vZGVsID0gY2Fub25pY2FsTW9kZWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlUm91dGluZ0Zyb21NZXNzYWdlKFxuICBtZXNzYWdlOiBSZXNwb25zZUl0ZW0gfCBudWxsLFxuICBzdGF0ZTogQ2xhdWRlU3RyZWFtSnNvblN0YXRlIHwgdW5kZWZpbmVkLFxuKTogdm9pZCB7XG4gIGlmICghc3RhdGUgfHwgIW1lc3NhZ2UpIHJldHVybjtcbiAgY29uc3QgbW9kZWwgPSBvcHRpb25hbFN0cmluZyhtZXNzYWdlLm1vZGVsKTtcbiAgY29uc3QgY2Fub25pY2FsTW9kZWwgPSBtb2RlbCA/IGNhbm9uaWNhbEV2ZW50TW9kZWwobW9kZWwpIDogdW5kZWZpbmVkO1xuICBpZiAoY2Fub25pY2FsTW9kZWwpIHN0YXRlLnNlcnZlZE1vZGVsID0gY2Fub25pY2FsTW9kZWw7XG4gIGNvbnN0IHN0b3BSZWFzb24gPSBvcHRpb25hbFN0cmluZyhtZXNzYWdlLnN0b3BfcmVhc29uKTtcbiAgaWYgKHN0b3BSZWFzb24pIHtcbiAgICBzdGF0ZS5zdG9wUmVhc29uID0gc3RvcFJlYXNvbjtcbiAgICBpZiAoc3RvcFJlYXNvbiA9PT0gXCJyZWZ1c2FsXCIpIHN0YXRlLnJlZnVzYWxXaXRob3V0RmFsbGJhY2sgPSB0cnVlO1xuICAgIGVsc2UgaWYgKHN0YXRlLm1vZGVsRmFsbGJhY2tzPy5zb21lKChmYWxsYmFjaykgPT4gZmFsbGJhY2sudG9Nb2RlbCA9PT0gY2Fub25pY2FsTW9kZWwpKSB7XG4gICAgICBzdGF0ZS5yZWZ1c2FsV2l0aG91dEZhbGxiYWNrID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcERldGFpbHMgPSBhc09iamVjdChtZXNzYWdlLnN0b3BfZGV0YWlscyk7XG4gIGlmIChzdG9wRGV0YWlscz8udHlwZSA9PT0gXCJyZWZ1c2FsXCIgfHwgc3RvcFJlYXNvbiA9PT0gXCJyZWZ1c2FsXCIpIHtcbiAgICBzdGF0ZS5yZWZ1c2FsID0ge1xuICAgICAgY2F0ZWdvcnk6IG9wdGlvbmFsU3RyaW5nKHN0b3BEZXRhaWxzPy5jYXRlZ29yeSksXG4gICAgICBleHBsYW5hdGlvbjogb3B0aW9uYWxTdHJpbmcoc3RvcERldGFpbHM/LmV4cGxhbmF0aW9uKSxcbiAgICB9O1xuICB9XG4gIHVwZGF0ZVJvdXRpbmdGcm9tVXNhZ2UoYXNPYmplY3QobWVzc2FnZS51c2FnZSksIHN0YXRlKTtcbn1cblxuLy8gUHJvY2Vzc2VzIG9uZSBDbGF1ZGUgc3Rkb3V0IEpTT05MIGxpbmUuIFJldHVybnMgZmluYWwgcmVzdWx0IG9uIHJlc3VsdCBldmVudC5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVTdHJlYW1Kc29uTGluZShcbiAgbGluZTogc3RyaW5nLFxuICBvbkRlbHRhOiAodGV4dDogc3RyaW5nKSA9PiB2b2lkLFxuICBvcHRzPzogeyBzdHJ1Y3R1cmVkT3V0cHV0PzogYm9vbGVhbjsgc3RhdGU/OiBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUgfSxcbik6IENsYXVkZVN0cmVhbVJlc3VsdCB8IG51bGwge1xuICBjb25zdCBzdHJ1Y3R1cmVkT3V0cHV0ID0gb3B0cz8uc3RydWN0dXJlZE91dHB1dCA/PyBmYWxzZTtcbiAgY29uc3Qgc3RhdGUgPSBvcHRzPy5zdGF0ZTtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xuICBpZiAoIXRyaW1tZWQpIHJldHVybiBudWxsO1xuXG4gIGxldCBqOiB7IFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCB9O1xuICB0cnkge1xuICAgIGogPSBKU09OLnBhcnNlKHRyaW1tZWQpIGFzIHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIHwgdW5kZWZpbmVkIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGoudHlwZSA9PT0gXCJzdHJlYW1fZXZlbnRcIikge1xuICAgIGNvbnN0IGV2ZW50ID0gYXNPYmplY3Qoai5ldmVudCk7XG4gICAgaWYgKGV2ZW50Py50eXBlID09PSBcIm1lc3NhZ2Vfc3RhcnRcIikge1xuICAgICAgdXBkYXRlUm91dGluZ0Zyb21NZXNzYWdlKGFzT2JqZWN0KGV2ZW50Lm1lc3NhZ2UpLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmIChldmVudD8udHlwZSA9PT0gXCJtZXNzYWdlX2RlbHRhXCIpIHtcbiAgICAgIGNvbnN0IGRlbHRhID0gYXNPYmplY3QoZXZlbnQuZGVsdGEpO1xuICAgICAgY29uc3Qgc3RvcFJlYXNvbiA9IG9wdGlvbmFsU3RyaW5nKGRlbHRhPy5zdG9wX3JlYXNvbik7XG4gICAgICBpZiAoc3RhdGUgJiYgc3RvcFJlYXNvbikge1xuICAgICAgICBzdGF0ZS5zdG9wUmVhc29uID0gc3RvcFJlYXNvbjtcbiAgICAgICAgaWYgKHN0b3BSZWFzb24gPT09IFwicmVmdXNhbFwiKSBzdGF0ZS5yZWZ1c2FsV2l0aG91dEZhbGxiYWNrID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09IFwiY29udGVudF9ibG9ja19kZWx0YVwiKSB7XG4gICAgICBjb25zdCBkZWx0YSA9IGFzT2JqZWN0KGV2ZW50LmRlbHRhKTtcbiAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICBpZiAoc3RydWN0dXJlZE91dHB1dCkge1xuICAgICAgICAgIGlmIChkZWx0YS50eXBlID09PSBcImlucHV0X2pzb25fZGVsdGFcIiAmJiB0eXBlb2YgZGVsdGEucGFydGlhbF9qc29uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBvbkRlbHRhKGRlbHRhLnBhcnRpYWxfanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChkZWx0YS50eXBlID09PSBcInRleHRfZGVsdGFcIiAmJiB0eXBlb2YgZGVsdGEudGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgb25EZWx0YShkZWx0YS50ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoai50eXBlID09PSBcInN5c3RlbVwiKSB7XG4gICAgY29uc3Qgc3VidHlwZSA9IG9wdGlvbmFsU3RyaW5nKGouc3VidHlwZSk7XG4gICAgaWYgKHN1YnR5cGUgPT09IFwibW9kZWxfcmVmdXNhbF9mYWxsYmFja1wiKSB7XG4gICAgICBjb25zdCBmcm9tTW9kZWwgPSBvcHRpb25hbFN0cmluZyhqLm9yaWdpbmFsTW9kZWwpID8/IG9wdGlvbmFsU3RyaW5nKGoub3JpZ2luYWxfbW9kZWwpO1xuICAgICAgY29uc3QgdG9Nb2RlbCA9IG9wdGlvbmFsU3RyaW5nKGouZmFsbGJhY2tNb2RlbCkgPz8gb3B0aW9uYWxTdHJpbmcoai5mYWxsYmFja19tb2RlbCk7XG4gICAgICBpZiAoZnJvbU1vZGVsICYmIHRvTW9kZWwpIHtcbiAgICAgICAgcmVjb3JkRmFsbGJhY2soc3RhdGUsIHtcbiAgICAgICAgICB0cmlnZ2VyOiBcInJlZnVzYWxcIixcbiAgICAgICAgICBmcm9tTW9kZWwsXG4gICAgICAgICAgdG9Nb2RlbCxcbiAgICAgICAgICBjYXRlZ29yeTpcbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpUmVmdXNhbENhdGVnb3J5KSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5hcGlfcmVmdXNhbF9jYXRlZ29yeSkgPz9cbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbENhdGVnb3J5KSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsX2NhdGVnb3J5KSxcbiAgICAgICAgICBleHBsYW5hdGlvbjpcbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpUmVmdXNhbEV4cGxhbmF0aW9uKSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5hcGlfcmVmdXNhbF9leHBsYW5hdGlvbikgPz9cbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbEV4cGxhbmF0aW9uKSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsX2V4cGxhbmF0aW9uKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdWJ0eXBlID09PSBcIm1vZGVsX3JlZnVzYWxfbm9fZmFsbGJhY2tcIiAmJiBzdGF0ZSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxNb2RlbCA9IG9wdGlvbmFsU3RyaW5nKGoub3JpZ2luYWxNb2RlbCkgPz8gb3B0aW9uYWxTdHJpbmcoai5vcmlnaW5hbF9tb2RlbCk7XG4gICAgICBpZiAob3JpZ2luYWxNb2RlbCkgc3RhdGUuc2VydmVkTW9kZWwgPSBjYW5vbmljYWxFdmVudE1vZGVsKG9yaWdpbmFsTW9kZWwpO1xuICAgICAgc3RhdGUuc3RvcFJlYXNvbiA9IFwicmVmdXNhbFwiO1xuICAgICAgc3RhdGUucmVmdXNhbFdpdGhvdXRGYWxsYmFjayA9IHRydWU7XG4gICAgICBzdGF0ZS5yZWZ1c2FsID0ge1xuICAgICAgICBjYXRlZ29yeTpcbiAgICAgICAgICBvcHRpb25hbFN0cmluZyhqLmFwaVJlZnVzYWxDYXRlZ29yeSkgPz9cbiAgICAgICAgICBvcHRpb25hbFN0cmluZyhqLmFwaV9yZWZ1c2FsX2NhdGVnb3J5KSA/P1xuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbENhdGVnb3J5KSA/P1xuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbF9jYXRlZ29yeSksXG4gICAgICAgIGV4cGxhbmF0aW9uOlxuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpUmVmdXNhbEV4cGxhbmF0aW9uKSA/P1xuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpX3JlZnVzYWxfZXhwbGFuYXRpb24pID8/XG4gICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsRXhwbGFuYXRpb24pID8/XG4gICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsX2V4cGxhbmF0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGoudHlwZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuICAgIHVwZGF0ZVJvdXRpbmdGcm9tTWVzc2FnZShhc09iamVjdChqLm1lc3NhZ2UpLCBzdGF0ZSk7XG4gICAgaWYgKHN0cnVjdHVyZWRPdXRwdXQgJiYgc3RhdGUgJiYgc3RhdGUuc3RydWN0dXJlZE91dHB1dFRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGV4dCA9IHN0cnVjdHVyZWRPdXRwdXRUb29sVXNlVGV4dChqKTtcbiAgICAgIGlmICh0ZXh0ICE9PSB1bmRlZmluZWQpIHN0YXRlLnN0cnVjdHVyZWRPdXRwdXRUZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoai50eXBlID09PSBcInJlc3VsdFwiKSB7XG4gICAgY29uc3Qgc3VidHlwZSA9IHR5cGVvZiBqLnN1YnR5cGUgPT09IFwic3RyaW5nXCIgPyBqLnN1YnR5cGUgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGVybWluYWxSZWFzb24gPSB0eXBlb2Ygai50ZXJtaW5hbF9yZWFzb24gPT09IFwic3RyaW5nXCIgPyBqLnRlcm1pbmFsX3JlYXNvbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXN1bHRTdWNjZWVkZWQgPVxuICAgICAgai5pc19lcnJvciAhPT0gdHJ1ZSAmJlxuICAgICAgdGVybWluYWxSZWFzb24gIT09IFwibW9kZWxfZXJyb3JcIiAmJlxuICAgICAgKHN1YnR5cGUgPT09IHVuZGVmaW5lZCB8fCBzdWJ0eXBlID09PSBcInN1Y2Nlc3NcIik7XG4gICAgbGV0IHRleHQ6IHN0cmluZztcbiAgICBjb25zdCBwcmVzZXJ2ZWRTdHJ1Y3R1cmVkT3V0cHV0ID0gc3RydWN0dXJlZE91dHB1dCA/IHN0YXRlPy5zdHJ1Y3R1cmVkT3V0cHV0VGV4dCA6IHVuZGVmaW5lZDtcbiAgICAvLyBDbGF1ZGUgQ29kZeuKlCBTdHJ1Y3R1cmVkT3V0cHV0IOyKpO2CpOuniCDqsoDspp0g7Iuk7YyoIO2bhCDrgrTrtoAg7J6s7Iuc64+E66W8IO2VoCDsiJgg7J6I64ukLiBhc3Npc3RhbnRcbiAgICAvLyDsnbTrsqTtirjsnZgg7LKrIHRvb2wgaW5wdXTsnYAg6rGw7KCI65CcIOyLnOuPhOydvCDsiJgg7J6I7Jy866+A66GcLCDshLHqs7UgcmVzdWx06rCAIOygnOqzte2VnCDstZzsooUg6rKA7Kad6rCS7J2EXG4gICAgLy8g7Jqw7ISg7ZWc64ukLiDssqsg7J6F66ClIOuztOyhtOqwkuydgCBtYXhfdHVybnMvcmV0cnkg7LSI6rO87LKY65+8IOyEseqztSByZXN1bHTqsIAg7JeG64qUIOynhOuLqCDqsr3roZzsmqnsnbTri6QuXG4gICAgaWYgKHN0cnVjdHVyZWRPdXRwdXQgJiYgcmVzdWx0U3VjY2VlZGVkICYmIGouc3RydWN0dXJlZF9vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGouc3RydWN0dXJlZF9vdXRwdXQpO1xuICAgIH0gZWxzZSBpZiAocHJlc2VydmVkU3RydWN0dXJlZE91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0ZXh0ID0gcHJlc2VydmVkU3RydWN0dXJlZE91dHB1dDtcbiAgICB9IGVsc2UgaWYgKGouc3RydWN0dXJlZF9vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGouc3RydWN0dXJlZF9vdXRwdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0ID0gc3RyaXBGZW5jZXModHlwZW9mIGoucmVzdWx0ID09PSBcInN0cmluZ1wiID8gai5yZXN1bHQgOiBcIlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCByYXdVc2FnZSA9IGFzT2JqZWN0KGoudXNhZ2UpID8/IHt9O1xuICAgIHVwZGF0ZVJvdXRpbmdGcm9tVXNhZ2UocmF3VXNhZ2UsIHN0YXRlKTtcbiAgICBjb25zdCByZXN1bHRNb2RlbCA9IG9wdGlvbmFsU3RyaW5nKGoubW9kZWwpO1xuICAgIGlmIChzdGF0ZSAmJiByZXN1bHRNb2RlbCAmJiAhc3RhdGUuc2VydmVkTW9kZWwpIHtcbiAgICAgIHN0YXRlLnNlcnZlZE1vZGVsID0gY2Fub25pY2FsRXZlbnRNb2RlbChyZXN1bHRNb2RlbCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdFN0b3BSZWFzb24gPSBvcHRpb25hbFN0cmluZyhqLnN0b3BfcmVhc29uKTtcbiAgICBpZiAoc3RhdGUgJiYgcmVzdWx0U3RvcFJlYXNvbikge1xuICAgICAgc3RhdGUuc3RvcFJlYXNvbiA9IHJlc3VsdFN0b3BSZWFzb247XG4gICAgICBpZiAocmVzdWx0U3RvcFJlYXNvbiA9PT0gXCJyZWZ1c2FsXCIpIHN0YXRlLnJlZnVzYWxXaXRob3V0RmFsbGJhY2sgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB1c2FnZSA9IHRvVXNhZ2VCcmVha2Rvd24ocmF3VXNhZ2UgYXMgQ2xhdWRlVXNhZ2UpO1xuICAgIGNvbnN0IHF1b3RhRXhoYXVzdGVkID0gdGV4dC5zdGFydHNXaXRoKFwiWW91J3ZlIGhpdFwiKTtcblxuICAgIC8vIFNPTi00OTU6IOu5hOygleyDgSDsooXro4woZXJyb3JfbWF4X3N0cnVjdHVyZWRfb3V0cHV0X3JldHJpZXMg65OxKeuKlCDsoJXsp4HtlZjqsowg7JeQ65+s66GcIOyymOumrO2VnOuLpC5cbiAgICAvLyBDQyBzdHJ1Y3R1cmVkIG91dHB1dCDsnYAgY29uc3RyYWluZWQgZGVjb2Rpbmcg7J20IOyVhOuLiOudvCBcInRvb2wgaW5wdXQg7IOd7ISxIO2bhCDsgqztm4QgQUpWIOqygOymnVwi7J206528XG4gICAgLy8g66qo64247J20IOqwgOuBlCBwbGFjZWhvbGRlcigkUEFSQU1FVEVSX05BTUUpwrfqsbDrtoAoXCJqdXN0IGtpZGRpbmdcIinCt+2VhOuTnCDriITrnb0oYWR2YW5jZSkg6rCZ7J2AIOuwnOyekS9cbiAgICAvLyDrtojsmYTsoIQg7Lac66Cl7J2EIOuCuOuLpC4g7J2066W8IFwi6rGw7J2YIOunnuyVmOycvOuLiCDsgrTrpqzsnpBcIuqzoCDtnZjrpqzrqbQg7YG065287J207Ja47Yq4IOqygOymneyXkOyEnCDquajsp4DqsbDrgpgo7ZWE65OcIOuIhOudvSlcbiAgICAvLyDsk7DroIjquLDqsIAg7IOI7Ja0IOuCmOqwhOuLpCjsi6TsuKEgMTE2NzQvMTE2NzUpLiDslYzroKTsp4QgYmVzdCBwcmFjdGljZShyZWZ1c2FsL2RlZ2VuZXJhdGUgb3V0cHV0IOydgCDsgrTrpqzsp4BcbiAgICAvLyDrp5Dqs6AgZ3JhY2VmdWwgZXJyb3Ip64yA66GcLCBzdWJ0eXBlICE9IHN1Y2Nlc3Mg64qUIOq3uOuMgOuhnCDsl5Drn6zroZwg65GU64ukLiDtgbTrnbzsnbTslrjtirjqsIAg6re4IO2EtOydhCDsi6TtjKjroZxcbiAgICAvLyDri6Tro6jqsowg7ZWc64ukKOyKpO2KuOumvOydtOudvCDsnpDrj5kg7J6s7Iuc64+EIOyXhuydjCDigJQg7Iuc6rCEIDLrsLAg67Cp7KeAKS5cbiAgICBjb25zdCBpc0Vycm9yID1cbiAgICAgIGouaXNfZXJyb3IgPT09IHRydWUgfHxcbiAgICAgIGoudGVybWluYWxfcmVhc29uID09PSBcIm1vZGVsX2Vycm9yXCIgfHxcbiAgICAgIChzdWJ0eXBlICE9PSB1bmRlZmluZWQgJiYgc3VidHlwZSAhPT0gXCJzdWNjZXNzXCIpIHx8XG4gICAgICBzdGF0ZT8ucmVmdXNhbFdpdGhvdXRGYWxsYmFjayA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0LFxuICAgICAgdXNhZ2UsXG4gICAgICBkdXJhdGlvbk1zOiB0eXBlb2Ygai5kdXJhdGlvbl9tcyA9PT0gXCJudW1iZXJcIiA/IGouZHVyYXRpb25fbXMgOiAwLFxuICAgICAgY29zdFVzZDogdHlwZW9mIGoudG90YWxfY29zdF91c2QgPT09IFwibnVtYmVyXCIgPyBqLnRvdGFsX2Nvc3RfdXNkIDogMCxcbiAgICAgIHF1b3RhRXhoYXVzdGVkLFxuICAgICAgaXNFcnJvcixcbiAgICAgIHN1YnR5cGUsXG4gICAgICB0ZXJtaW5hbFJlYXNvbixcbiAgICAgIHNlcnZlZE1vZGVsOiBzdGF0ZT8uc2VydmVkTW9kZWwsXG4gICAgICBzdG9wUmVhc29uOiBzdGF0ZT8uc3RvcFJlYXNvbixcbiAgICAgIHJlZnVzYWw6IHN0YXRlPy5yZWZ1c2FsLFxuICAgICAgbW9kZWxGYWxsYmFja3M6IHN0YXRlPy5tb2RlbEZhbGxiYWNrcyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBNkJBLFNBQVMsZ0JBQWdCLE9BQWlDO0NBQ3hELE9BQU8sTUFDSixRQUFRLE1BQWlELEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FDM0UsS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQ2xCLEtBQUssSUFBSTtBQUNkO0FBRUEsU0FBUyxVQUFVLE1BQXFEO0NBQ3RFLE9BQU8sQ0FBQztFQUFFLE1BQU07RUFBUTtDQUFLLENBQUM7QUFDaEM7QUFVQSxTQUFTLFNBQVMsR0FBK0M7Q0FDL0QsT0FBTyxPQUFPLE1BQU0sWUFBWSxNQUFNLFFBQVEsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFLLElBQXFCO0FBQzFGO0FBRUEsU0FBUyxpQkFBaUIsTUFBNEI7Q0FDcEQsTUFBTSxVQUFVLEtBQUs7Q0FDckIsSUFBSSxDQUFDLE1BQU0sUUFBUSxPQUFPLEdBQUcsT0FBTztDQUNwQyxPQUFPLFFBQ0osS0FBSyxNQUFNO0VBQ1YsTUFBTSxNQUFNLFNBQVMsQ0FBQztFQUN0QixPQUFPLE9BQU8sT0FBTyxJQUFJLFNBQVMsV0FBVyxJQUFJLE9BQU87Q0FDMUQsQ0FBQyxDQUFDLENBQ0QsT0FBTyxPQUFPLENBQUMsQ0FDZixLQUFLLElBQUk7QUFDZDtBQUVBLFNBQVMsbUJBQW1CLGFBQXVDO0NBQ2pFLE1BQU0sUUFBdUIsQ0FBQztDQUM5QixLQUFLLE1BQU0sT0FBTyxhQUFhO0VBQzdCLE1BQU0sT0FBTyxTQUFTLEdBQUc7RUFDekIsSUFBSSxDQUFDLE1BQU07RUFFWCxJQUFJLEtBQUssU0FBUyxhQUFhLEtBQUssU0FBUyxhQUMzQyxNQUFNLEtBQUssY0FBYyxpQkFBaUIsSUFBSSxHQUFHO09BQzVDLElBQUksS0FBSyxTQUFTLGFBQWEsS0FBSyxTQUFTLFFBQ2xELE1BQU0sS0FBSyxTQUFTLGlCQUFpQixJQUFJLEdBQUc7T0FDdkMsSUFBSSxLQUFLLFNBQVMsaUJBQWlCO0dBQ3hDLE1BQU0sT0FBTyxPQUFPLEtBQUssU0FBUyxXQUFXLEtBQUssT0FBTztHQUN6RCxNQUFNLE9BQ0osT0FBTyxLQUFLLGNBQWMsV0FBVyxLQUFLLFlBQVksS0FBSyxVQUFVLEtBQUssYUFBYSxDQUFDLENBQUM7R0FDM0YsTUFBTSxLQUFLLGNBQWMsS0FBSyxHQUFHLEtBQUssRUFBRTtFQUMxQyxPQUFPLElBQUksS0FBSyxTQUFTLHdCQUF3QjtHQUMvQyxNQUFNLFNBQ0osT0FBTyxLQUFLLFdBQVcsV0FBVyxLQUFLLFNBQVMsS0FBSyxVQUFVLEtBQUssVUFBVSxFQUFFO0dBQ2xGLE1BQU0sS0FBSyxnQkFBZ0IsUUFBUTtFQUNyQztDQUNGO0NBQ0EsT0FBTyxNQUFNLEtBQUssSUFBSTtBQUN4QjtBQUVBLFNBQWdCLHFCQUFxQixNQUdMO0NBQzlCLE1BQU0sUUFBcUMsQ0FBQztDQUU1QyxJQUFJLEtBQUssZUFBZSxLQUFLLFlBQVksU0FBUyxHQUFHO0VBQ25ELE1BQU0sWUFBWSxtQkFBbUIsS0FBSyxXQUFXO0VBQ3JELElBQUksV0FDRixNQUFNLEtBQUs7R0FDVCxNQUFNO0dBQ04sU0FBUztJQUNQLE1BQU07SUFDTixTQUFTLFVBQVUsZ0NBQWdDLFdBQVc7R0FDaEU7RUFDRixDQUFDO0NBRUw7Q0FFQSxNQUFNLEtBQUs7RUFDVCxNQUFNO0VBQ04sU0FBUztHQUFFLE1BQU07R0FBUSxTQUFTLFVBQVUsZ0JBQWdCLEtBQUssS0FBSyxDQUFDO0VBQUU7Q0FDM0UsQ0FBQztDQUVELE9BQU87QUFDVDtBQUVBLFNBQWdCLHlCQUF5QixPQUE0QztDQUNuRixPQUFPLE1BQU0sS0FBSyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJO0FBQzFEO0FBNkRBLFNBQVMsaUJBQWlCLEdBQTZDO0NBQ3JFLE1BQU0sUUFBUSxFQUFFLGdCQUFnQjtDQUNoQyxNQUFNLGNBQWMsRUFBRSwrQkFBK0I7Q0FDckQsTUFBTSxZQUFZLEVBQUUsMkJBQTJCO0NBQy9DLE1BQU0sU0FBUyxFQUFFLGlCQUFpQjtDQUNsQyxNQUFNLGFBQWEsUUFBUSxjQUFjO0NBQ3pDLE1BQU0sZ0JBQWdCLEVBQUUsZ0JBQWdCO0NBQ3hDLE1BQU0sZ0JBQWdCLEVBQUUsZ0JBQWdCO0NBQ3hDLE9BQU87RUFDTCxhQUFhLGFBQWE7RUFDMUIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsR0FBSSxPQUFPLGtCQUFrQixXQUFXLEVBQUUsNEJBQTRCLGNBQWMsSUFBSSxDQUFDO0VBQ3pGLEdBQUksT0FBTyxrQkFBa0IsV0FBVyxFQUFFLDRCQUE0QixjQUFjLElBQUksQ0FBQztFQUN6RixjQUFjO0VBQ2QsdUJBQXVCO0NBQ3pCO0FBQ0Y7QUFFQSxTQUFTLDRCQUE0QixHQUFxQztDQUV4RSxNQUFNLFVBRFUsU0FBUyxFQUFFLE9BQ1gsQ0FBQSxFQUFTO0NBQ3pCLElBQUksQ0FBQyxNQUFNLFFBQVEsT0FBTyxHQUFHLE9BQU87Q0FFcEMsS0FBSyxNQUFNLE9BQU8sU0FBUztFQUN6QixNQUFNLFFBQVEsU0FBUyxHQUFHO0VBQzFCLElBQUksQ0FBQyxPQUFPO0VBQ1osSUFDRSxNQUFNLFNBQVMsY0FDZixNQUFNLFNBQVMsc0JBQ2YsTUFBTSxVQUFVLFFBRWhCLE9BQU8sS0FBSyxVQUFVLE1BQU0sS0FBSztDQUVyQztBQUVGO0FBRUEsU0FBUyxvQkFBb0IsT0FBdUI7Q0FFbEQsUUFEd0IsTUFBTSxXQUFXLFlBQVksSUFBSSxNQUFNLE1BQU0sRUFBbUIsSUFBSSxNQUNyRixDQUFnQixRQUFRLFdBQVcsRUFBRTtBQUM5QztBQUVBLFNBQVMsZUFBZSxPQUFrRDtDQUN4RSxPQUFPLE9BQU8sVUFBVSxZQUFZLE1BQU0sU0FBUyxJQUFJLFFBQVE7QUFDakU7QUFFQSxTQUFTLGVBQWUsT0FBMEMsVUFBK0I7Q0FDL0YsSUFBSSxDQUFDLE9BQU87Q0FDWixNQUFNLGFBQTRCO0VBQ2hDLEdBQUc7RUFDSCxXQUFXLG9CQUFvQixTQUFTLFNBQVM7RUFDakQsU0FBUyxvQkFBb0IsU0FBUyxPQUFPO0NBQy9DO0NBQ0EsTUFBTSxXQUFXLE1BQU0sZ0JBQWdCLE1BQ3BDLFNBQ0MsS0FBSyxZQUFZLFdBQVcsV0FDNUIsS0FBSyxjQUFjLFdBQVcsYUFDOUIsS0FBSyxZQUFZLFdBQVcsT0FDaEM7Q0FDQSxJQUFJLFVBQVU7RUFDWixTQUFTLGFBQWEsV0FBVztFQUNqQyxTQUFTLGdCQUFnQixXQUFXO0NBQ3RDLE9BQ0UsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLEVBQUEsQ0FBRyxLQUFLLFVBQVU7Q0FFL0MsTUFBTSxjQUFjLFdBQVc7Q0FDL0IsTUFBTSx5QkFBeUI7QUFDakM7QUFFQSxTQUFTLHVCQUNQLE9BQ0EsT0FDTTtDQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sUUFBUSxNQUFNLFVBQVUsR0FBRztDQUUxRCxJQUFJO0NBQ0osS0FBSyxNQUFNLE9BQU8sTUFBTSxZQUFZO0VBQ2xDLE1BQU0sWUFBWSxTQUFTLEdBQUc7RUFDOUIsSUFBSSxDQUFDLFdBQVc7RUFDaEIsTUFBTSxRQUFRLGVBQWUsVUFBVSxLQUFLO0VBQzVDLE1BQU0sT0FBTyxlQUFlLFVBQVUsSUFBSTtFQUMxQyxJQUFJLENBQUMsT0FBTztFQUNaLE1BQU0saUJBQWlCLG9CQUFvQixLQUFLO0VBQ2hELElBQUksU0FBUyxzQkFBc0IsZUFDakMsZUFBZSxPQUFPO0dBQ3BCLFNBQVM7R0FDVCxXQUFXO0dBQ1gsU0FBUztFQUNYLENBQUM7RUFFSCxnQkFBZ0I7RUFDaEIsTUFBTSxjQUFjO0NBQ3RCO0FBQ0Y7QUFFQSxTQUFTLHlCQUNQLFNBQ0EsT0FDTTtDQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUztDQUN4QixNQUFNLFFBQVEsZUFBZSxRQUFRLEtBQUs7Q0FDMUMsTUFBTSxpQkFBaUIsUUFBUSxvQkFBb0IsS0FBSyxJQUFJO0NBQzVELElBQUksZ0JBQWdCLE1BQU0sY0FBYztDQUN4QyxNQUFNLGFBQWEsZUFBZSxRQUFRLFdBQVc7Q0FDckQsSUFBSSxZQUFZO0VBQ2QsTUFBTSxhQUFhO0VBQ25CLElBQUksZUFBZSxXQUFXLE1BQU0seUJBQXlCO09BQ3hELElBQUksTUFBTSxnQkFBZ0IsTUFBTSxhQUFhLFNBQVMsWUFBWSxjQUFjLEdBQ25GLE1BQU0seUJBQXlCO0NBRW5DO0NBRUEsTUFBTSxjQUFjLFNBQVMsUUFBUSxZQUFZO0NBQ2pELElBQUksYUFBYSxTQUFTLGFBQWEsZUFBZSxXQUNwRCxNQUFNLFVBQVU7RUFDZCxVQUFVLGVBQWUsYUFBYSxRQUFRO0VBQzlDLGFBQWEsZUFBZSxhQUFhLFdBQVc7Q0FDdEQ7Q0FFRix1QkFBdUIsU0FBUyxRQUFRLEtBQUssR0FBRyxLQUFLO0FBQ3ZEO0FBR0EsU0FBZ0IscUJBQ2QsTUFDQSxTQUNBLE1BQzJCO0NBQzNCLE1BQU0sbUJBQW1CLE1BQU0sb0JBQW9CO0NBQ25ELE1BQU0sUUFBUSxNQUFNO0NBQ3BCLE1BQU0sVUFBVSxLQUFLLEtBQUs7Q0FDMUIsSUFBSSxDQUFDLFNBQVMsT0FBTztDQUVyQixJQUFJO0NBQ0osSUFBSTtFQUNGLElBQUksS0FBSyxNQUFNLE9BQU87Q0FDeEIsUUFBUTtFQUNOLE9BQU87Q0FDVDtDQUVBLElBQUksRUFBRSxTQUFTLGdCQUFnQjtFQUM3QixNQUFNLFFBQVEsU0FBUyxFQUFFLEtBQUs7RUFDOUIsSUFBSSxPQUFPLFNBQVMsaUJBQ2xCLHlCQUF5QixTQUFTLE1BQU0sT0FBTyxHQUFHLEtBQUs7T0FDbEQsSUFBSSxPQUFPLFNBQVMsaUJBQWlCO0dBRTFDLE1BQU0sYUFBYSxlQURMLFNBQVMsTUFBTSxLQUNLLENBQUEsRUFBTyxXQUFXO0dBQ3BELElBQUksU0FBUyxZQUFZO0lBQ3ZCLE1BQU0sYUFBYTtJQUNuQixJQUFJLGVBQWUsV0FBVyxNQUFNLHlCQUF5QjtHQUMvRDtFQUNGO0VBQ0EsSUFBSSxTQUFTLE1BQU0sU0FBUyx1QkFBdUI7R0FDakQsTUFBTSxRQUFRLFNBQVMsTUFBTSxLQUFLO0dBQ2xDLElBQUksT0FDRjtRQUFJLGtCQUNGO1NBQUksTUFBTSxTQUFTLHNCQUFzQixPQUFPLE1BQU0saUJBQWlCLFVBQ3JFLFFBQVEsTUFBTSxZQUFZO0lBQzVCLE9BRUEsSUFBSSxNQUFNLFNBQVMsZ0JBQWdCLE9BQU8sTUFBTSxTQUFTLFVBQ3ZELFFBQVEsTUFBTSxJQUFJO0dBRXRCO0VBRUo7RUFDQSxPQUFPO0NBQ1Q7Q0FFQSxJQUFJLEVBQUUsU0FBUyxVQUFVO0VBQ3ZCLE1BQU0sVUFBVSxlQUFlLEVBQUUsT0FBTztFQUN4QyxJQUFJLFlBQVksMEJBQTBCO0dBQ3hDLE1BQU0sWUFBWSxlQUFlLEVBQUUsYUFBYSxLQUFLLGVBQWUsRUFBRSxjQUFjO0dBQ3BGLE1BQU0sVUFBVSxlQUFlLEVBQUUsYUFBYSxLQUFLLGVBQWUsRUFBRSxjQUFjO0dBQ2xGLElBQUksYUFBYSxTQUNmLGVBQWUsT0FBTztJQUNwQixTQUFTO0lBQ1Q7SUFDQTtJQUNBLFVBQ0UsZUFBZSxFQUFFLGtCQUFrQixLQUNuQyxlQUFlLEVBQUUsb0JBQW9CLEtBQ3JDLGVBQWUsRUFBRSxlQUFlLEtBQ2hDLGVBQWUsRUFBRSxnQkFBZ0I7SUFDbkMsYUFDRSxlQUFlLEVBQUUscUJBQXFCLEtBQ3RDLGVBQWUsRUFBRSx1QkFBdUIsS0FDeEMsZUFBZSxFQUFFLGtCQUFrQixLQUNuQyxlQUFlLEVBQUUsbUJBQW1CO0dBQ3hDLENBQUM7RUFFTCxPQUFPLElBQUksWUFBWSwrQkFBK0IsT0FBTztHQUMzRCxNQUFNLGdCQUFnQixlQUFlLEVBQUUsYUFBYSxLQUFLLGVBQWUsRUFBRSxjQUFjO0dBQ3hGLElBQUksZUFBZSxNQUFNLGNBQWMsb0JBQW9CLGFBQWE7R0FDeEUsTUFBTSxhQUFhO0dBQ25CLE1BQU0seUJBQXlCO0dBQy9CLE1BQU0sVUFBVTtJQUNkLFVBQ0UsZUFBZSxFQUFFLGtCQUFrQixLQUNuQyxlQUFlLEVBQUUsb0JBQW9CLEtBQ3JDLGVBQWUsRUFBRSxlQUFlLEtBQ2hDLGVBQWUsRUFBRSxnQkFBZ0I7SUFDbkMsYUFDRSxlQUFlLEVBQUUscUJBQXFCLEtBQ3RDLGVBQWUsRUFBRSx1QkFBdUIsS0FDeEMsZUFBZSxFQUFFLGtCQUFrQixLQUNuQyxlQUFlLEVBQUUsbUJBQW1CO0dBQ3hDO0VBQ0Y7RUFDQSxPQUFPO0NBQ1Q7Q0FFQSxJQUFJLEVBQUUsU0FBUyxhQUFhO0VBQzFCLHlCQUF5QixTQUFTLEVBQUUsT0FBTyxHQUFHLEtBQUs7RUFDbkQsSUFBSSxvQkFBb0IsU0FBUyxNQUFNLHlCQUF5QixRQUFXO0dBQ3pFLE1BQU0sT0FBTyw0QkFBNEIsQ0FBQztHQUMxQyxJQUFJLFNBQVMsUUFBVyxNQUFNLHVCQUF1QjtFQUN2RDtFQUNBLE9BQU87Q0FDVDtDQUVBLElBQUksRUFBRSxTQUFTLFVBQVU7RUFDdkIsTUFBTSxVQUFVLE9BQU8sRUFBRSxZQUFZLFdBQVcsRUFBRSxVQUFVO0VBQzVELE1BQU0saUJBQWlCLE9BQU8sRUFBRSxvQkFBb0IsV0FBVyxFQUFFLGtCQUFrQjtFQUNuRixNQUFNLGtCQUNKLEVBQUUsYUFBYSxRQUNmLG1CQUFtQixrQkFDbEIsWUFBWSxVQUFhLFlBQVk7RUFDeEMsSUFBSTtFQUNKLE1BQU0sNEJBQTRCLG1CQUFtQixPQUFPLHVCQUF1QjtFQUluRixJQUFJLG9CQUFvQixtQkFBbUIsRUFBRSxzQkFBc0IsUUFDakUsT0FBTyxLQUFLLFVBQVUsRUFBRSxpQkFBaUI7T0FDcEMsSUFBSSw4QkFBOEIsUUFDdkMsT0FBTztPQUNGLElBQUksRUFBRSxzQkFBc0IsUUFDakMsT0FBTyxLQUFLLFVBQVUsRUFBRSxpQkFBaUI7T0FFekMsT0FBTyxZQUFZLE9BQU8sRUFBRSxXQUFXLFdBQVcsRUFBRSxTQUFTLEVBQUU7RUFHakUsTUFBTSxXQUFXLFNBQVMsRUFBRSxLQUFLLEtBQUssQ0FBQztFQUN2Qyx1QkFBdUIsVUFBVSxLQUFLO0VBQ3RDLE1BQU0sY0FBYyxlQUFlLEVBQUUsS0FBSztFQUMxQyxJQUFJLFNBQVMsZUFBZSxDQUFDLE1BQU0sYUFDakMsTUFBTSxjQUFjLG9CQUFvQixXQUFXO0VBRXJELE1BQU0sbUJBQW1CLGVBQWUsRUFBRSxXQUFXO0VBQ3JELElBQUksU0FBUyxrQkFBa0I7R0FDN0IsTUFBTSxhQUFhO0dBQ25CLElBQUkscUJBQXFCLFdBQVcsTUFBTSx5QkFBeUI7RUFDckU7RUFDQSxNQUFNLFFBQVEsaUJBQWlCLFFBQXVCO0VBQ3RELE1BQU0saUJBQWlCLEtBQUssV0FBVyxZQUFZO0VBU25ELE1BQU0sVUFDSixFQUFFLGFBQWEsUUFDZixFQUFFLG9CQUFvQixpQkFDckIsWUFBWSxVQUFhLFlBQVksYUFDdEMsT0FBTywyQkFBMkI7RUFFcEMsT0FBTztHQUNMO0dBQ0E7R0FDQSxZQUFZLE9BQU8sRUFBRSxnQkFBZ0IsV0FBVyxFQUFFLGNBQWM7R0FDaEUsU0FBUyxPQUFPLEVBQUUsbUJBQW1CLFdBQVcsRUFBRSxpQkFBaUI7R0FDbkU7R0FDQTtHQUNBO0dBQ0E7R0FDQSxhQUFhLE9BQU87R0FDcEIsWUFBWSxPQUFPO0dBQ25CLFNBQVMsT0FBTztHQUNoQixnQkFBZ0IsT0FBTztFQUN6QjtDQUNGO0NBRUEsT0FBTztBQUNUIn0=
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWpzb24tYWRhcHRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL2FudGhyb3BpYy9zdHJlYW0tanNvbi1hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2xhdWRlIENMSSBzdHJlYW0tanNvbiBhZGFwdGVyLlxuICpcbiAqIElucHV0OiBxZ3JpZCBoaXN0b3J5L2lucHV0IC0+IENsYXVkZSBKU09OTCBzdGRpbi5cbiAqIE91dHB1dDogQ2xhdWRlIEpTT05MIHN0ZG91dCAtPiBxZ3JpZCBkZWx0YXMgKyBmaW5hbCByZXN1bHQgbWV0YWRhdGEuXG4gKlxuICogUHJldmlvdXMgY29udmVyc2F0aW9uIGl0ZW1zIGFyZSBmbGF0dGVuZWQgaW50byBvbmUgYXNzaXN0YW50IGNvbnRleHQgbGluZS5cbiAqIFRoZSBvbmx5IGV4ZWN1dGFibGUgdXNlciBsaW5lIGlzIHRoZSBjdXJyZW50IGlucHV0LlxuICovXG5cbmltcG9ydCB7XG4gIHR5cGUgTW9kZWxGYWxsYmFjayxcbiAgdHlwZSBQcm92aWRlclRva2VuVXNhZ2VCcmVha2Rvd24sXG59IGZyb20gXCIuLi9jb21tb24vcHJvdmlkZXItZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgdHlwZSBKc29uVmFsdWUsIHR5cGUgVXNlcklucHV0IH0gZnJvbSBcIi4uL2NvbW1vbi9wcm92aWRlci10eXBlc1wiO1xuaW1wb3J0IHsgc3RyaXBGZW5jZXMgfSBmcm9tIFwiLi9mZW5jZS1zdHJpcFwiO1xuXG4vLyDilIDilIAg7J6F66ClIOyWtOuMke2EsCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLy8gQ2xhdWRlIHN0cmVhbS1qc29uIOyeheugpSDtlZwg7KSEKEpTT05MKS4gRW52ZWxvcGUgZmllbGRzIGFyZSBhZGRlZCBpbiBjbGF1ZGUtc2Vzc2lvbi5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhdWRlU3RyZWFtSnNvbkxpbmUge1xuICB0eXBlOiBcInVzZXJcIiB8IFwiYXNzaXN0YW50XCI7XG4gIG1lc3NhZ2U6IHtcbiAgICByb2xlOiBcInVzZXJcIiB8IFwiYXNzaXN0YW50XCI7XG4gICAgY29udGVudDogQXJyYXk8eyB0eXBlOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH0+O1xuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VySW5wdXRUb1RleHQoaW5wdXQ6IEFycmF5PFVzZXJJbnB1dD4pOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXRcbiAgICAuZmlsdGVyKChpKTogaSBpcyBFeHRyYWN0PFVzZXJJbnB1dCwgeyB0eXBlOiBcInRleHRcIiB9PiA9PiBpLnR5cGUgPT09IFwidGV4dFwiKVxuICAgIC5tYXAoKGkpID0+IGkudGV4dClcbiAgICAuam9pbihcIlxcblwiKTtcbn1cblxuZnVuY3Rpb24gdGV4dEJsb2NrKHRleHQ6IHN0cmluZyk6IEFycmF5PHsgdHlwZTogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9PiB7XG4gIHJldHVybiBbeyB0eXBlOiBcInRleHRcIiwgdGV4dCB9XTtcbn1cblxuLy8gT3BlbkFJIFJlc3BvbnNlcyBpdGVtKGNvbGRIaXN0b3J5IGl0ZW0pIOy1nOyGjCBzaGFwZS5cbi8vIGV4dHJhY3RQcm9tcHRBbmRIaXN0b3J5KGFpLXNkay91dGlscy50cykg6rCAIOunjOuTnOuKlCDtmJXsi506XG4vLyAgIHsgdHlwZTpcIm1lc3NhZ2VcIiwgcm9sZTpcInVzZXJcIiwgY29udGVudDpbe3R5cGU6XCJpbnB1dF90ZXh0XCIsIHRleHR9XSB9XG4vLyAgIHsgdHlwZTpcIm1lc3NhZ2VcIiwgcm9sZTpcImFzc2lzdGFudFwiLCBjb250ZW50Olt7dHlwZTpcIm91dHB1dF90ZXh0XCIsIHRleHR9XSB9XG4vLyAgIHsgdHlwZTpcImZ1bmN0aW9uX2NhbGxcIiwgbmFtZSwgYXJndW1lbnRzLCBjYWxsX2lkIH1cbi8vICAgeyB0eXBlOlwiZnVuY3Rpb25fY2FsbF9vdXRwdXRcIiwgY2FsbF9pZCwgb3V0cHV0IH1cbnR5cGUgUmVzcG9uc2VJdGVtID0geyBba2V5OiBzdHJpbmddOiBKc29uVmFsdWUgfCB1bmRlZmluZWQgfTtcblxuZnVuY3Rpb24gYXNPYmplY3QodjogSnNvblZhbHVlIHwgdW5kZWZpbmVkKTogUmVzcG9uc2VJdGVtIHwgbnVsbCB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHYpID8gKHYgYXMgUmVzcG9uc2VJdGVtKSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlc3BvbnNlSXRlbVRleHQoaXRlbTogUmVzcG9uc2VJdGVtKTogc3RyaW5nIHtcbiAgY29uc3QgY29udGVudCA9IGl0ZW0uY29udGVudDtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSByZXR1cm4gXCJcIjtcbiAgcmV0dXJuIGNvbnRlbnRcbiAgICAubWFwKChjKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSBhc09iamVjdChjKTtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIG9iai50ZXh0ID09PSBcInN0cmluZ1wiID8gb2JqLnRleHQgOiBcIlwiO1xuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuQ29sZEhpc3RvcnkoY29sZEhpc3Rvcnk6IEFycmF5PEpzb25WYWx1ZT4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBmb3IgKGNvbnN0IHJhdyBvZiBjb2xkSGlzdG9yeSkge1xuICAgIGNvbnN0IGl0ZW0gPSBhc09iamVjdChyYXcpO1xuICAgIGlmICghaXRlbSkgY29udGludWU7XG5cbiAgICBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBpdGVtLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpIHtcbiAgICAgIHBhcnRzLnB1c2goYEFzc2lzdGFudDogJHtyZXNwb25zZUl0ZW1UZXh0KGl0ZW0pfWApO1xuICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBpdGVtLnJvbGUgPT09IFwidXNlclwiKSB7XG4gICAgICBwYXJ0cy5wdXNoKGBVc2VyOiAke3Jlc3BvbnNlSXRlbVRleHQoaXRlbSl9YCk7XG4gICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSB7XG4gICAgICBjb25zdCBuYW1lID0gdHlwZW9mIGl0ZW0ubmFtZSA9PT0gXCJzdHJpbmdcIiA/IGl0ZW0ubmFtZSA6IFwiXCI7XG4gICAgICBjb25zdCBhcmdzID1cbiAgICAgICAgdHlwZW9mIGl0ZW0uYXJndW1lbnRzID09PSBcInN0cmluZ1wiID8gaXRlbS5hcmd1bWVudHMgOiBKU09OLnN0cmluZ2lmeShpdGVtLmFyZ3VtZW50cyA/PyB7fSk7XG4gICAgICBwYXJ0cy5wdXNoKGBUb29sIGNhbGw6ICR7bmFtZX0oJHthcmdzfSlgKTtcbiAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsX291dHB1dFwiKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPVxuICAgICAgICB0eXBlb2YgaXRlbS5vdXRwdXQgPT09IFwic3RyaW5nXCIgPyBpdGVtLm91dHB1dCA6IEpTT04uc3RyaW5naWZ5KGl0ZW0ub3V0cHV0ID8/IFwiXCIpO1xuICAgICAgcGFydHMucHVzaChgVG9vbCByZXN1bHQ6ICR7b3V0cHV0fWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGFydHMuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3RyZWFtSnNvbklucHV0KG9wdHM6IHtcbiAgY29sZEhpc3Rvcnk/OiBBcnJheTxKc29uVmFsdWU+O1xuICBpbnB1dDogQXJyYXk8VXNlcklucHV0Pjtcbn0pOiBBcnJheTxDbGF1ZGVTdHJlYW1Kc29uTGluZT4ge1xuICBjb25zdCBsaW5lczogQXJyYXk8Q2xhdWRlU3RyZWFtSnNvbkxpbmU+ID0gW107XG5cbiAgaWYgKG9wdHMuY29sZEhpc3RvcnkgJiYgb3B0cy5jb2xkSGlzdG9yeS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmxhdHRlbmVkID0gZmxhdHRlbkNvbGRIaXN0b3J5KG9wdHMuY29sZEhpc3RvcnkpO1xuICAgIGlmIChmbGF0dGVuZWQpIHtcbiAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICB0eXBlOiBcImFzc2lzdGFudFwiLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgcm9sZTogXCJhc3Npc3RhbnRcIixcbiAgICAgICAgICBjb250ZW50OiB0ZXh0QmxvY2soYFByaW9yIGNvbnZlcnNhdGlvbiBjb250ZXh0OlxcbiR7ZmxhdHRlbmVkfWApLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGluZXMucHVzaCh7XG4gICAgdHlwZTogXCJ1c2VyXCIsXG4gICAgbWVzc2FnZTogeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogdGV4dEJsb2NrKHVzZXJJbnB1dFRvVGV4dChvcHRzLmlucHV0KSkgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplU3RyZWFtSnNvbklucHV0KGxpbmVzOiBBcnJheTxDbGF1ZGVTdHJlYW1Kc29uTGluZT4pOiBzdHJpbmcge1xuICByZXR1cm4gbGluZXMubWFwKChsKSA9PiBKU09OLnN0cmluZ2lmeShsKSkuam9pbihcIlxcblwiKSArIFwiXFxuXCI7XG59XG5cbi8vIOKUgOKUgCDstpzroKUg7Ja064yR7YSwIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy9cbi8vIENsYXVkZSBzdGRvdXQoSlNPTkwp7J2EIHFncmlkIGRlbHRhcyArIGZpbmFsIHJlc3VsdCDroZwg67OA7ZmY7ZWc64ukLlxuXG5pbnRlcmZhY2UgQ2xhdWRlVXNhZ2Uge1xuICBpbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gIG91dHB1dF90b2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vucz86IG51bWJlcjtcbiAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uPzoge1xuICAgIGVwaGVtZXJhbF81bV9pbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gICAgZXBoZW1lcmFsXzFoX2lucHV0X3Rva2Vucz86IG51bWJlcjtcbiAgfTtcbiAgaXRlcmF0aW9ucz86IEFycmF5PHtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIG1vZGVsPzogc3RyaW5nO1xuICB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGF1ZGVTdHJlYW1SZXN1bHQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHVzYWdlOiBQcm92aWRlclRva2VuVXNhZ2VCcmVha2Rvd247XG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgY29zdFVzZDogbnVtYmVyO1xuICAvLyBxdW90YSDshozsp4QoXCJZb3UndmUgaGl0IC4uLlwiKSDqsJDsp4AuIGRpc3BhdGNoZXIg6rCAIFF1b3RhRXJyb3Ig66GcIOuzgO2ZmC5cbiAgcXVvdGFFeGhhdXN0ZWQ6IGJvb2xlYW47XG4gIC8vIHJlc3VsdC5pc19lcnJvciAvIHRlcm1pbmFsIG1vZGVsX2Vycm9yIOuTsS4gZGlzcGF0Y2hlciDqsIAg7JeQ65+s66GcIOuzgO2ZmC5cbiAgaXNFcnJvcjogYm9vbGVhbjtcbiAgLy8g7KeE64uo7JqpOiBDQyByZXN1bHQg65287J247J2YIHN1YnR5cGUoXCJzdWNjZXNzXCIgfCBcImVycm9yX21heF90dXJuc1wiIHwgLi4uKSDqs7wgdGVybWluYWxfcmVhc29uLlxuICAvLyBpc0Vycm9yIO2MkOyglSDsgqzsnKDrpbwg7JeQ65+sIOuplOyLnOyngOyXkCDrk5zrn6zrgrTquLAg7JyE7ZW0IOuztOyhtO2VnOuLpChTT04tNDk1KS5cbiAgc3VidHlwZT86IHN0cmluZztcbiAgdGVybWluYWxSZWFzb24/OiBzdHJpbmc7XG4gIC8vIOyLpOygnCDstZzsooUg7J2R64u17J2EIOunjOuToCDrqqjrjbguIEZhYmxlIHJlZnVzYWwgZmFsbGJhY2sg65WMIHJlcXVlc3RlZCBtb2RlbCDqs7wg64uk66W064ukLlxuICBzZXJ2ZWRNb2RlbD86IHN0cmluZztcbiAgc3RvcFJlYXNvbj86IHN0cmluZztcbiAgcmVmdXNhbD86IHtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBleHBsYW5hdGlvbj86IHN0cmluZztcbiAgfTtcbiAgbW9kZWxGYWxsYmFja3M/OiBBcnJheTxNb2RlbEZhbGxiYWNrPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUge1xuICBzdHJ1Y3R1cmVkT3V0cHV0VGV4dD86IHN0cmluZztcbiAgc2VydmVkTW9kZWw/OiBzdHJpbmc7XG4gIHN0b3BSZWFzb24/OiBzdHJpbmc7XG4gIHJlZnVzYWw/OiB7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG4gIH07XG4gIG1vZGVsRmFsbGJhY2tzPzogQXJyYXk8TW9kZWxGYWxsYmFjaz47XG4gIHJlZnVzYWxXaXRob3V0RmFsbGJhY2s/OiBib29sZWFuO1xufVxuXG4vLyBBbnRocm9waWMgdXNhZ2UgNCDsubTthYzqs6Drpqwg4oaSIFRva2VuVXNhZ2VCcmVha2Rvd24uXG4vLyBBbnRocm9waWMgbmF0aXZlIHVzYWdlIOuKlCBpbnB1dC9jYWNoZV9jcmVhdGlvbi9jYWNoZV9yZWFkIOulvCDshJzroZwg67Cw7YOA7KCB7J24IOy5tO2FjOqzoOumrOuhnCDspIDri6QuXG4vLyDrsJjrqbQgcWdyaWQg64K067aAIO2RnOykgChUb2tlblVzYWdlQnJlYWtkb3duKeqzvCBjb3N0IOqzhOyCsOydgCBpbnB1dFRva2VucyDrpbwgXCLsoITssrQg7J6F66ClXG4vLyAoPSBub24tY2FjaGUgaW5wdXQgKyBjYWNoZSBjcmVhdGlvbiArIGNhY2hlIHJlYWQpXCIg7Jy866GcIOy3qOq4ie2VmOqzoCBjYWNoZWRJbnB1dFRva2Vucy9jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnNcbi8vIOulvCDqt7jspJEg6rCBIOuqq+ycvOuhnCDri6Tsi5wg7ZGc7Iuc7ZWc64ukKE9wZW5BSS9Db2RleCB1c2FnZSDsmYAg6rCZ7J2AIOydmOuvuCkuIOuUsOudvOyEnCDsl6zquLDshJwg7ZWp7LOQIO2RnOykgO2ZlO2VnOuLpC5cbmZ1bmN0aW9uIHRvVXNhZ2VCcmVha2Rvd24odTogQ2xhdWRlVXNhZ2UpOiBQcm92aWRlclRva2VuVXNhZ2VCcmVha2Rvd24ge1xuICBjb25zdCBpbnB1dCA9IHUuaW5wdXRfdG9rZW5zID8/IDA7XG4gIGNvbnN0IGNhY2hlQ3JlYXRlID0gdS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMgPz8gMDtcbiAgY29uc3QgY2FjaGVSZWFkID0gdS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyA/PyAwO1xuICBjb25zdCBvdXRwdXQgPSB1Lm91dHB1dF90b2tlbnMgPz8gMDtcbiAgY29uc3QgdG90YWxJbnB1dCA9IGlucHV0ICsgY2FjaGVDcmVhdGUgKyBjYWNoZVJlYWQ7XG4gIGNvbnN0IGNhY2hlQ3JlYXRlNW0gPSB1LmNhY2hlX2NyZWF0aW9uPy5lcGhlbWVyYWxfNW1faW5wdXRfdG9rZW5zO1xuICBjb25zdCBjYWNoZUNyZWF0ZTFoID0gdS5jYWNoZV9jcmVhdGlvbj8uZXBoZW1lcmFsXzFoX2lucHV0X3Rva2VucztcbiAgcmV0dXJuIHtcbiAgICB0b3RhbFRva2VuczogdG90YWxJbnB1dCArIG91dHB1dCxcbiAgICBpbnB1dFRva2VuczogdG90YWxJbnB1dCxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogY2FjaGVSZWFkLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogY2FjaGVDcmVhdGUsXG4gICAgLi4uKHR5cGVvZiBjYWNoZUNyZWF0ZTVtID09PSBcIm51bWJlclwiID8geyBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogY2FjaGVDcmVhdGU1bSB9IDoge30pLFxuICAgIC4uLih0eXBlb2YgY2FjaGVDcmVhdGUxaCA9PT0gXCJudW1iZXJcIiA/IHsgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg6IGNhY2hlQ3JlYXRlMWggfSA6IHt9KSxcbiAgICBvdXRwdXRUb2tlbnM6IG91dHB1dCxcbiAgICByZWFzb25pbmdPdXRwdXRUb2tlbnM6IDAsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0cnVjdHVyZWRPdXRwdXRUb29sVXNlVGV4dChqOiBSZXNwb25zZUl0ZW0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBtZXNzYWdlID0gYXNPYmplY3Qoai5tZXNzYWdlKTtcbiAgY29uc3QgY29udGVudCA9IG1lc3NhZ2U/LmNvbnRlbnQ7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IHJhdyBvZiBjb250ZW50KSB7XG4gICAgY29uc3QgYmxvY2sgPSBhc09iamVjdChyYXcpO1xuICAgIGlmICghYmxvY2spIGNvbnRpbnVlO1xuICAgIGlmIChcbiAgICAgIGJsb2NrLnR5cGUgPT09IFwidG9vbF91c2VcIiAmJlxuICAgICAgYmxvY2submFtZSA9PT0gXCJTdHJ1Y3R1cmVkT3V0cHV0XCIgJiZcbiAgICAgIGJsb2NrLmlucHV0ICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShibG9jay5pbnB1dCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbEV2ZW50TW9kZWwobW9kZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHdpdGhvdXRQcm92aWRlciA9IG1vZGVsLnN0YXJ0c1dpdGgoXCJhbnRocm9waWMvXCIpID8gbW9kZWwuc2xpY2UoXCJhbnRocm9waWMvXCIubGVuZ3RoKSA6IG1vZGVsO1xuICByZXR1cm4gd2l0aG91dFByb3ZpZGVyLnJlcGxhY2UoL1xcWzFtXFxdJC8sIFwiXCIpO1xufVxuXG5mdW5jdGlvbiBvcHRpb25hbFN0cmluZyh2YWx1ZTogSnNvblZhbHVlIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlY29yZEZhbGxiYWNrKHN0YXRlOiBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBNb2RlbEZhbGxiYWNrKTogdm9pZCB7XG4gIGlmICghc3RhdGUpIHJldHVybjtcbiAgY29uc3Qgbm9ybWFsaXplZDogTW9kZWxGYWxsYmFjayA9IHtcbiAgICAuLi5mYWxsYmFjayxcbiAgICBmcm9tTW9kZWw6IGNhbm9uaWNhbEV2ZW50TW9kZWwoZmFsbGJhY2suZnJvbU1vZGVsKSxcbiAgICB0b01vZGVsOiBjYW5vbmljYWxFdmVudE1vZGVsKGZhbGxiYWNrLnRvTW9kZWwpLFxuICB9O1xuICBjb25zdCBleGlzdGluZyA9IHN0YXRlLm1vZGVsRmFsbGJhY2tzPy5maW5kKFxuICAgIChpdGVtKSA9PlxuICAgICAgaXRlbS50cmlnZ2VyID09PSBub3JtYWxpemVkLnRyaWdnZXIgJiZcbiAgICAgIGl0ZW0uZnJvbU1vZGVsID09PSBub3JtYWxpemVkLmZyb21Nb2RlbCAmJlxuICAgICAgaXRlbS50b01vZGVsID09PSBub3JtYWxpemVkLnRvTW9kZWwsXG4gICk7XG4gIGlmIChleGlzdGluZykge1xuICAgIGV4aXN0aW5nLmNhdGVnb3J5ID8/PSBub3JtYWxpemVkLmNhdGVnb3J5O1xuICAgIGV4aXN0aW5nLmV4cGxhbmF0aW9uID8/PSBub3JtYWxpemVkLmV4cGxhbmF0aW9uO1xuICB9IGVsc2Uge1xuICAgIChzdGF0ZS5tb2RlbEZhbGxiYWNrcyA/Pz0gW10pLnB1c2gobm9ybWFsaXplZCk7XG4gIH1cbiAgc3RhdGUuc2VydmVkTW9kZWwgPSBub3JtYWxpemVkLnRvTW9kZWw7XG4gIHN0YXRlLnJlZnVzYWxXaXRob3V0RmFsbGJhY2sgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlUm91dGluZ0Zyb21Vc2FnZShcbiAgdXNhZ2U6IFJlc3BvbnNlSXRlbSB8IG51bGwsXG4gIHN0YXRlOiBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUgfCB1bmRlZmluZWQsXG4pOiB2b2lkIHtcbiAgaWYgKCFzdGF0ZSB8fCAhdXNhZ2UgfHwgIUFycmF5LmlzQXJyYXkodXNhZ2UuaXRlcmF0aW9ucykpIHJldHVybjtcblxuICBsZXQgcHJldmlvdXNNb2RlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHJhdyBvZiB1c2FnZS5pdGVyYXRpb25zKSB7XG4gICAgY29uc3QgaXRlcmF0aW9uID0gYXNPYmplY3QocmF3KTtcbiAgICBpZiAoIWl0ZXJhdGlvbikgY29udGludWU7XG4gICAgY29uc3QgbW9kZWwgPSBvcHRpb25hbFN0cmluZyhpdGVyYXRpb24ubW9kZWwpO1xuICAgIGNvbnN0IHR5cGUgPSBvcHRpb25hbFN0cmluZyhpdGVyYXRpb24udHlwZSk7XG4gICAgaWYgKCFtb2RlbCkgY29udGludWU7XG4gICAgY29uc3QgY2Fub25pY2FsTW9kZWwgPSBjYW5vbmljYWxFdmVudE1vZGVsKG1vZGVsKTtcbiAgICBpZiAodHlwZSA9PT0gXCJmYWxsYmFja19tZXNzYWdlXCIgJiYgcHJldmlvdXNNb2RlbCkge1xuICAgICAgcmVjb3JkRmFsbGJhY2soc3RhdGUsIHtcbiAgICAgICAgdHJpZ2dlcjogXCJyZWZ1c2FsXCIsXG4gICAgICAgIGZyb21Nb2RlbDogcHJldmlvdXNNb2RlbCxcbiAgICAgICAgdG9Nb2RlbDogY2Fub25pY2FsTW9kZWwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcHJldmlvdXNNb2RlbCA9IGNhbm9uaWNhbE1vZGVsO1xuICAgIHN0YXRlLnNlcnZlZE1vZGVsID0gY2Fub25pY2FsTW9kZWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlUm91dGluZ0Zyb21NZXNzYWdlKFxuICBtZXNzYWdlOiBSZXNwb25zZUl0ZW0gfCBudWxsLFxuICBzdGF0ZTogQ2xhdWRlU3RyZWFtSnNvblN0YXRlIHwgdW5kZWZpbmVkLFxuKTogdm9pZCB7XG4gIGlmICghc3RhdGUgfHwgIW1lc3NhZ2UpIHJldHVybjtcbiAgY29uc3QgbW9kZWwgPSBvcHRpb25hbFN0cmluZyhtZXNzYWdlLm1vZGVsKTtcbiAgY29uc3QgY2Fub25pY2FsTW9kZWwgPSBtb2RlbCA/IGNhbm9uaWNhbEV2ZW50TW9kZWwobW9kZWwpIDogdW5kZWZpbmVkO1xuICBpZiAoY2Fub25pY2FsTW9kZWwpIHN0YXRlLnNlcnZlZE1vZGVsID0gY2Fub25pY2FsTW9kZWw7XG4gIGNvbnN0IHN0b3BSZWFzb24gPSBvcHRpb25hbFN0cmluZyhtZXNzYWdlLnN0b3BfcmVhc29uKTtcbiAgaWYgKHN0b3BSZWFzb24pIHtcbiAgICBzdGF0ZS5zdG9wUmVhc29uID0gc3RvcFJlYXNvbjtcbiAgICBpZiAoc3RvcFJlYXNvbiA9PT0gXCJyZWZ1c2FsXCIpIHN0YXRlLnJlZnVzYWxXaXRob3V0RmFsbGJhY2sgPSB0cnVlO1xuICAgIGVsc2UgaWYgKHN0YXRlLm1vZGVsRmFsbGJhY2tzPy5zb21lKChmYWxsYmFjaykgPT4gZmFsbGJhY2sudG9Nb2RlbCA9PT0gY2Fub25pY2FsTW9kZWwpKSB7XG4gICAgICBzdGF0ZS5yZWZ1c2FsV2l0aG91dEZhbGxiYWNrID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcERldGFpbHMgPSBhc09iamVjdChtZXNzYWdlLnN0b3BfZGV0YWlscyk7XG4gIGlmIChzdG9wRGV0YWlscz8udHlwZSA9PT0gXCJyZWZ1c2FsXCIgfHwgc3RvcFJlYXNvbiA9PT0gXCJyZWZ1c2FsXCIpIHtcbiAgICBzdGF0ZS5yZWZ1c2FsID0ge1xuICAgICAgY2F0ZWdvcnk6IG9wdGlvbmFsU3RyaW5nKHN0b3BEZXRhaWxzPy5jYXRlZ29yeSksXG4gICAgICBleHBsYW5hdGlvbjogb3B0aW9uYWxTdHJpbmcoc3RvcERldGFpbHM/LmV4cGxhbmF0aW9uKSxcbiAgICB9O1xuICB9XG4gIHVwZGF0ZVJvdXRpbmdGcm9tVXNhZ2UoYXNPYmplY3QobWVzc2FnZS51c2FnZSksIHN0YXRlKTtcbn1cblxuLy8gUHJvY2Vzc2VzIG9uZSBDbGF1ZGUgc3Rkb3V0IEpTT05MIGxpbmUuIFJldHVybnMgZmluYWwgcmVzdWx0IG9uIHJlc3VsdCBldmVudC5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVTdHJlYW1Kc29uTGluZShcbiAgbGluZTogc3RyaW5nLFxuICBvbkRlbHRhOiAodGV4dDogc3RyaW5nKSA9PiB2b2lkLFxuICBvcHRzPzogeyBzdHJ1Y3R1cmVkT3V0cHV0PzogYm9vbGVhbjsgc3RhdGU/OiBDbGF1ZGVTdHJlYW1Kc29uU3RhdGUgfSxcbik6IENsYXVkZVN0cmVhbVJlc3VsdCB8IG51bGwge1xuICBjb25zdCBzdHJ1Y3R1cmVkT3V0cHV0ID0gb3B0cz8uc3RydWN0dXJlZE91dHB1dCA/PyBmYWxzZTtcbiAgY29uc3Qgc3RhdGUgPSBvcHRzPy5zdGF0ZTtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xuICBpZiAoIXRyaW1tZWQpIHJldHVybiBudWxsO1xuXG4gIGxldCBqOiB7IFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCB9O1xuICB0cnkge1xuICAgIGogPSBKU09OLnBhcnNlKHRyaW1tZWQpIGFzIHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIHwgdW5kZWZpbmVkIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGoudHlwZSA9PT0gXCJzdHJlYW1fZXZlbnRcIikge1xuICAgIGNvbnN0IGV2ZW50ID0gYXNPYmplY3Qoai5ldmVudCk7XG4gICAgaWYgKGV2ZW50Py50eXBlID09PSBcIm1lc3NhZ2Vfc3RhcnRcIikge1xuICAgICAgdXBkYXRlUm91dGluZ0Zyb21NZXNzYWdlKGFzT2JqZWN0KGV2ZW50Lm1lc3NhZ2UpLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmIChldmVudD8udHlwZSA9PT0gXCJtZXNzYWdlX2RlbHRhXCIpIHtcbiAgICAgIGNvbnN0IGRlbHRhID0gYXNPYmplY3QoZXZlbnQuZGVsdGEpO1xuICAgICAgY29uc3Qgc3RvcFJlYXNvbiA9IG9wdGlvbmFsU3RyaW5nKGRlbHRhPy5zdG9wX3JlYXNvbik7XG4gICAgICBpZiAoc3RhdGUgJiYgc3RvcFJlYXNvbikge1xuICAgICAgICBzdGF0ZS5zdG9wUmVhc29uID0gc3RvcFJlYXNvbjtcbiAgICAgICAgaWYgKHN0b3BSZWFzb24gPT09IFwicmVmdXNhbFwiKSBzdGF0ZS5yZWZ1c2FsV2l0aG91dEZhbGxiYWNrID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09IFwiY29udGVudF9ibG9ja19kZWx0YVwiKSB7XG4gICAgICBjb25zdCBkZWx0YSA9IGFzT2JqZWN0KGV2ZW50LmRlbHRhKTtcbiAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICBpZiAoc3RydWN0dXJlZE91dHB1dCkge1xuICAgICAgICAgIGlmIChkZWx0YS50eXBlID09PSBcImlucHV0X2pzb25fZGVsdGFcIiAmJiB0eXBlb2YgZGVsdGEucGFydGlhbF9qc29uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBvbkRlbHRhKGRlbHRhLnBhcnRpYWxfanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChkZWx0YS50eXBlID09PSBcInRleHRfZGVsdGFcIiAmJiB0eXBlb2YgZGVsdGEudGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgb25EZWx0YShkZWx0YS50ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoai50eXBlID09PSBcInN5c3RlbVwiKSB7XG4gICAgY29uc3Qgc3VidHlwZSA9IG9wdGlvbmFsU3RyaW5nKGouc3VidHlwZSk7XG4gICAgaWYgKHN1YnR5cGUgPT09IFwibW9kZWxfcmVmdXNhbF9mYWxsYmFja1wiKSB7XG4gICAgICBjb25zdCBmcm9tTW9kZWwgPSBvcHRpb25hbFN0cmluZyhqLm9yaWdpbmFsTW9kZWwpID8/IG9wdGlvbmFsU3RyaW5nKGoub3JpZ2luYWxfbW9kZWwpO1xuICAgICAgY29uc3QgdG9Nb2RlbCA9IG9wdGlvbmFsU3RyaW5nKGouZmFsbGJhY2tNb2RlbCkgPz8gb3B0aW9uYWxTdHJpbmcoai5mYWxsYmFja19tb2RlbCk7XG4gICAgICBpZiAoZnJvbU1vZGVsICYmIHRvTW9kZWwpIHtcbiAgICAgICAgcmVjb3JkRmFsbGJhY2soc3RhdGUsIHtcbiAgICAgICAgICB0cmlnZ2VyOiBcInJlZnVzYWxcIixcbiAgICAgICAgICBmcm9tTW9kZWwsXG4gICAgICAgICAgdG9Nb2RlbCxcbiAgICAgICAgICBjYXRlZ29yeTpcbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpUmVmdXNhbENhdGVnb3J5KSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5hcGlfcmVmdXNhbF9jYXRlZ29yeSkgPz9cbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbENhdGVnb3J5KSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsX2NhdGVnb3J5KSxcbiAgICAgICAgICBleHBsYW5hdGlvbjpcbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpUmVmdXNhbEV4cGxhbmF0aW9uKSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5hcGlfcmVmdXNhbF9leHBsYW5hdGlvbikgPz9cbiAgICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbEV4cGxhbmF0aW9uKSA/P1xuICAgICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsX2V4cGxhbmF0aW9uKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdWJ0eXBlID09PSBcIm1vZGVsX3JlZnVzYWxfbm9fZmFsbGJhY2tcIiAmJiBzdGF0ZSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxNb2RlbCA9IG9wdGlvbmFsU3RyaW5nKGoub3JpZ2luYWxNb2RlbCkgPz8gb3B0aW9uYWxTdHJpbmcoai5vcmlnaW5hbF9tb2RlbCk7XG4gICAgICBpZiAob3JpZ2luYWxNb2RlbCkgc3RhdGUuc2VydmVkTW9kZWwgPSBjYW5vbmljYWxFdmVudE1vZGVsKG9yaWdpbmFsTW9kZWwpO1xuICAgICAgc3RhdGUuc3RvcFJlYXNvbiA9IFwicmVmdXNhbFwiO1xuICAgICAgc3RhdGUucmVmdXNhbFdpdGhvdXRGYWxsYmFjayA9IHRydWU7XG4gICAgICBzdGF0ZS5yZWZ1c2FsID0ge1xuICAgICAgICBjYXRlZ29yeTpcbiAgICAgICAgICBvcHRpb25hbFN0cmluZyhqLmFwaVJlZnVzYWxDYXRlZ29yeSkgPz9cbiAgICAgICAgICBvcHRpb25hbFN0cmluZyhqLmFwaV9yZWZ1c2FsX2NhdGVnb3J5KSA/P1xuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbENhdGVnb3J5KSA/P1xuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGoucmVmdXNhbF9jYXRlZ29yeSksXG4gICAgICAgIGV4cGxhbmF0aW9uOlxuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpUmVmdXNhbEV4cGxhbmF0aW9uKSA/P1xuICAgICAgICAgIG9wdGlvbmFsU3RyaW5nKGouYXBpX3JlZnVzYWxfZXhwbGFuYXRpb24pID8/XG4gICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsRXhwbGFuYXRpb24pID8/XG4gICAgICAgICAgb3B0aW9uYWxTdHJpbmcoai5yZWZ1c2FsX2V4cGxhbmF0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGoudHlwZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuICAgIHVwZGF0ZVJvdXRpbmdGcm9tTWVzc2FnZShhc09iamVjdChqLm1lc3NhZ2UpLCBzdGF0ZSk7XG4gICAgaWYgKHN0cnVjdHVyZWRPdXRwdXQgJiYgc3RhdGUgJiYgc3RhdGUuc3RydWN0dXJlZE91dHB1dFRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGV4dCA9IHN0cnVjdHVyZWRPdXRwdXRUb29sVXNlVGV4dChqKTtcbiAgICAgIGlmICh0ZXh0ICE9PSB1bmRlZmluZWQpIHN0YXRlLnN0cnVjdHVyZWRPdXRwdXRUZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoai50eXBlID09PSBcInJlc3VsdFwiKSB7XG4gICAgY29uc3Qgc3VidHlwZSA9IHR5cGVvZiBqLnN1YnR5cGUgPT09IFwic3RyaW5nXCIgPyBqLnN1YnR5cGUgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGVybWluYWxSZWFzb24gPSB0eXBlb2Ygai50ZXJtaW5hbF9yZWFzb24gPT09IFwic3RyaW5nXCIgPyBqLnRlcm1pbmFsX3JlYXNvbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXN1bHRTdWNjZWVkZWQgPVxuICAgICAgai5pc19lcnJvciAhPT0gdHJ1ZSAmJlxuICAgICAgdGVybWluYWxSZWFzb24gIT09IFwibW9kZWxfZXJyb3JcIiAmJlxuICAgICAgKHN1YnR5cGUgPT09IHVuZGVmaW5lZCB8fCBzdWJ0eXBlID09PSBcInN1Y2Nlc3NcIik7XG4gICAgbGV0IHRleHQ6IHN0cmluZztcbiAgICBjb25zdCBwcmVzZXJ2ZWRTdHJ1Y3R1cmVkT3V0cHV0ID0gc3RydWN0dXJlZE91dHB1dCA/IHN0YXRlPy5zdHJ1Y3R1cmVkT3V0cHV0VGV4dCA6IHVuZGVmaW5lZDtcbiAgICAvLyBDbGF1ZGUgQ29kZeuKlCBTdHJ1Y3R1cmVkT3V0cHV0IOyKpO2CpOuniCDqsoDspp0g7Iuk7YyoIO2bhCDrgrTrtoAg7J6s7Iuc64+E66W8IO2VoCDsiJgg7J6I64ukLiBhc3Npc3RhbnRcbiAgICAvLyDsnbTrsqTtirjsnZgg7LKrIHRvb2wgaW5wdXTsnYAg6rGw7KCI65CcIOyLnOuPhOydvCDsiJgg7J6I7Jy866+A66GcLCDshLHqs7UgcmVzdWx06rCAIOygnOqzte2VnCDstZzsooUg6rKA7Kad6rCS7J2EXG4gICAgLy8g7Jqw7ISg7ZWc64ukLiDssqsg7J6F66ClIOuztOyhtOqwkuydgCBtYXhfdHVybnMvcmV0cnkg7LSI6rO87LKY65+8IOyEseqztSByZXN1bHTqsIAg7JeG64qUIOynhOuLqCDqsr3roZzsmqnsnbTri6QuXG4gICAgaWYgKHN0cnVjdHVyZWRPdXRwdXQgJiYgcmVzdWx0U3VjY2VlZGVkICYmIGouc3RydWN0dXJlZF9vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGouc3RydWN0dXJlZF9vdXRwdXQpO1xuICAgIH0gZWxzZSBpZiAocHJlc2VydmVkU3RydWN0dXJlZE91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0ZXh0ID0gcHJlc2VydmVkU3RydWN0dXJlZE91dHB1dDtcbiAgICB9IGVsc2UgaWYgKGouc3RydWN0dXJlZF9vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGouc3RydWN0dXJlZF9vdXRwdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0ID0gc3RyaXBGZW5jZXModHlwZW9mIGoucmVzdWx0ID09PSBcInN0cmluZ1wiID8gai5yZXN1bHQgOiBcIlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCByYXdVc2FnZSA9IGFzT2JqZWN0KGoudXNhZ2UpID8/IHt9O1xuICAgIHVwZGF0ZVJvdXRpbmdGcm9tVXNhZ2UocmF3VXNhZ2UsIHN0YXRlKTtcbiAgICBjb25zdCByZXN1bHRNb2RlbCA9IG9wdGlvbmFsU3RyaW5nKGoubW9kZWwpO1xuICAgIGlmIChzdGF0ZSAmJiByZXN1bHRNb2RlbCAmJiAhc3RhdGUuc2VydmVkTW9kZWwpIHtcbiAgICAgIHN0YXRlLnNlcnZlZE1vZGVsID0gY2Fub25pY2FsRXZlbnRNb2RlbChyZXN1bHRNb2RlbCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdFN0b3BSZWFzb24gPSBvcHRpb25hbFN0cmluZyhqLnN0b3BfcmVhc29uKTtcbiAgICBpZiAoc3RhdGUgJiYgcmVzdWx0U3RvcFJlYXNvbikge1xuICAgICAgc3RhdGUuc3RvcFJlYXNvbiA9IHJlc3VsdFN0b3BSZWFzb247XG4gICAgICBpZiAocmVzdWx0U3RvcFJlYXNvbiA9PT0gXCJyZWZ1c2FsXCIpIHN0YXRlLnJlZnVzYWxXaXRob3V0RmFsbGJhY2sgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB1c2FnZSA9IHRvVXNhZ2VCcmVha2Rvd24ocmF3VXNhZ2UgYXMgQ2xhdWRlVXNhZ2UpO1xuICAgIGNvbnN0IHF1b3RhRXhoYXVzdGVkID0gdGV4dC5zdGFydHNXaXRoKFwiWW91J3ZlIGhpdFwiKTtcblxuICAgIC8vIFNPTi00OTU6IOu5hOygleyDgSDsooXro4woZXJyb3JfbWF4X3N0cnVjdHVyZWRfb3V0cHV0X3JldHJpZXMg65OxKeuKlCDsoJXsp4HtlZjqsowg7JeQ65+s66GcIOyymOumrO2VnOuLpC5cbiAgICAvLyBDQyBzdHJ1Y3R1cmVkIG91dHB1dCDsnYAgY29uc3RyYWluZWQgZGVjb2Rpbmcg7J20IOyVhOuLiOudvCBcInRvb2wgaW5wdXQg7IOd7ISxIO2bhCDsgqztm4QgQUpWIOqygOymnVwi7J206528XG4gICAgLy8g66qo64247J20IOqwgOuBlCBwbGFjZWhvbGRlcigkUEFSQU1FVEVSX05BTUUpwrfqsbDrtoAoXCJqdXN0IGtpZGRpbmdcIinCt+2VhOuTnCDriITrnb0oYWR2YW5jZSkg6rCZ7J2AIOuwnOyekS9cbiAgICAvLyDrtojsmYTsoIQg7Lac66Cl7J2EIOuCuOuLpC4g7J2066W8IFwi6rGw7J2YIOunnuyVmOycvOuLiCDsgrTrpqzsnpBcIuqzoCDtnZjrpqzrqbQg7YG065287J207Ja47Yq4IOqygOymneyXkOyEnCDquajsp4DqsbDrgpgo7ZWE65OcIOuIhOudvSlcbiAgICAvLyDsk7DroIjquLDqsIAg7IOI7Ja0IOuCmOqwhOuLpCjsi6TsuKEgMTE2NzQvMTE2NzUpLiDslYzroKTsp4QgYmVzdCBwcmFjdGljZShyZWZ1c2FsL2RlZ2VuZXJhdGUgb3V0cHV0IOydgCDsgrTrpqzsp4BcbiAgICAvLyDrp5Dqs6AgZ3JhY2VmdWwgZXJyb3Ip64yA66GcLCBzdWJ0eXBlICE9IHN1Y2Nlc3Mg64qUIOq3uOuMgOuhnCDsl5Drn6zroZwg65GU64ukLiDtgbTrnbzsnbTslrjtirjqsIAg6re4IO2EtOydhCDsi6TtjKjroZxcbiAgICAvLyDri6Tro6jqsowg7ZWc64ukKOyKpO2KuOumvOydtOudvCDsnpDrj5kg7J6s7Iuc64+EIOyXhuydjCDigJQg7Iuc6rCEIDLrsLAg67Cp7KeAKS5cbiAgICBjb25zdCBpc0Vycm9yID1cbiAgICAgIGouaXNfZXJyb3IgPT09IHRydWUgfHxcbiAgICAgIGoudGVybWluYWxfcmVhc29uID09PSBcIm1vZGVsX2Vycm9yXCIgfHxcbiAgICAgIChzdWJ0eXBlICE9PSB1bmRlZmluZWQgJiYgc3VidHlwZSAhPT0gXCJzdWNjZXNzXCIpIHx8XG4gICAgICBzdGF0ZT8ucmVmdXNhbFdpdGhvdXRGYWxsYmFjayA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0LFxuICAgICAgdXNhZ2UsXG4gICAgICBkdXJhdGlvbk1zOiB0eXBlb2Ygai5kdXJhdGlvbl9tcyA9PT0gXCJudW1iZXJcIiA/IGouZHVyYXRpb25fbXMgOiAwLFxuICAgICAgY29zdFVzZDogdHlwZW9mIGoudG90YWxfY29zdF91c2QgPT09IFwibnVtYmVyXCIgPyBqLnRvdGFsX2Nvc3RfdXNkIDogMCxcbiAgICAgIHF1b3RhRXhoYXVzdGVkLFxuICAgICAgaXNFcnJvcixcbiAgICAgIHN1YnR5cGUsXG4gICAgICB0ZXJtaW5hbFJlYXNvbixcbiAgICAgIHNlcnZlZE1vZGVsOiBzdGF0ZT8uc2VydmVkTW9kZWwsXG4gICAgICBzdG9wUmVhc29uOiBzdGF0ZT8uc3RvcFJlYXNvbixcbiAgICAgIHJlZnVzYWw6IHN0YXRlPy5yZWZ1c2FsLFxuICAgICAgbW9kZWxGYWxsYmFja3M6IHN0YXRlPy5tb2RlbEZhbGxiYWNrcyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBNEJBLFNBQVMsZ0JBQWdCLE9BQWlDO0NBQ3hELE9BQU8sTUFDSixRQUFRLE1BQWlELEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FDM0UsS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQ2xCLEtBQUssSUFBSTtBQUNkO0FBRUEsU0FBUyxVQUFVLE1BQXFEO0NBQ3RFLE9BQU8sQ0FBQztFQUFFLE1BQU07RUFBUTtDQUFLLENBQUM7QUFDaEM7QUFVQSxTQUFTLFNBQVMsR0FBK0M7Q0FDL0QsT0FBTyxPQUFPLE1BQU0sWUFBWSxNQUFNLFFBQVEsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFLLElBQXFCO0FBQzFGO0FBRUEsU0FBUyxpQkFBaUIsTUFBNEI7Q0FDcEQsTUFBTSxVQUFVLEtBQUs7Q0FDckIsSUFBSSxDQUFDLE1BQU0sUUFBUSxPQUFPLEdBQUcsT0FBTztDQUNwQyxPQUFPLFFBQ0osS0FBSyxNQUFNO0VBQ1YsTUFBTSxNQUFNLFNBQVMsQ0FBQztFQUN0QixPQUFPLE9BQU8sT0FBTyxJQUFJLFNBQVMsV0FBVyxJQUFJLE9BQU87Q0FDMUQsQ0FBQyxDQUFDLENBQ0QsT0FBTyxPQUFPLENBQUMsQ0FDZixLQUFLLElBQUk7QUFDZDtBQUVBLFNBQVMsbUJBQW1CLGFBQXVDO0NBQ2pFLE1BQU0sUUFBdUIsQ0FBQztDQUM5QixLQUFLLE1BQU0sT0FB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
@@ -120,4 +120,4 @@ function calculateCostUsd(model, usage, atMs = Date.now()) {
120
120
  //#endregion
121
121
  export { calculateCostUsd, getModelCosts };
122
122
 
123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29zdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9tb2RlbC1jb3N0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog66qo642467OEIO2GoO2BsCDqsIDqsqkg7YWM7J2067iUICsgY29zdCDqs4TsgrAuXG4gKlxuICogY2xhdWRlIGNvZGUg7JmAIOuPmeydvCDtjKjthLQ6IO2BtOudvOydtOyWuO2KuOyXkOyEnCDqsIDqsqkg7YWM7J2067iU66GcIOyngeygkSDqs4TsgrAuXG4gKiDqsIDqsqkg64uo7JyEOiBVU0QgcGVyIDFNIHRva2Vucy5cbiAqXG4gKiBPcGVuQUkg66qo6424IOuqqeuhnTogY29kZXggYXBwLXNlcnZlciBtb2RlbC9saXN0IFJQQyDroZwg7Iuk7LihICgyMDI2LTA1LTE4KVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9wbGF0Zm9ybS5vcGVuYWkuY29tL2RvY3MvcHJpY2luZ1xuICogQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9hYm91dC1jbGF1ZGUvcHJpY2luZ1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDb3N0cyB7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICAvKiogVFRMIGJyZWFrZG93biDsnbQg7JeG64qUIHVzYWdlIOyXkCDsoIHsmqntlaAgY2FjaGUgd3JpdGUgZmFsbGJhY2sg64uo6rCALiAqL1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtPzogbnVtYmVyO1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaD86IG51bWJlcjtcbiAgLyoqXG4gICAqIGxvbmctY29udGV4dCDtlaDspp0uIOyghOyytCDsnoXroKUg7Yag7YGwKGlucHV0X3Rva2VucywgY2FjaGVfcmVhZCDtj6ztlagp7J20IHRocmVzaG9sZCDstIjqs7wg7IucXG4gICAqIOy0iOqzvOu2hOunjOydtCDslYTri4jrnbwg7JqU7LKtIOyghOyytChmdWxsIHNlc3Npb24p7JeQIOuwsOycqCDsoIHsmqkuXG4gICAqL1xuICBsb25nQ29udGV4dD86IHtcbiAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICBpbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBjYWNoZWRJbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBvdXRwdXRNdWx0aXBsaWVyOiBudW1iZXI7XG4gIH07XG59XG5cbi8vIOKUgOKUgCBPcGVuQUkg4oCUIGNvZGV4IGFwcC1zZXJ2ZXIg7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwg66qo6424IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy9cbi8vIOqwgOqyqSDstpzsspg6IGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscyAoMjAyNi0wNy0xOCDtmZXsnbgpXG4vLyDsi6Drqqjrjbgg7Lac7Iuc66eI64ukIOuLqOqwgOqwgCDrsJTrgIzrr4DroZwoNS4y4oaSNS404oaSNS41KSDrqqjrjbgg7LaU6rCAIOyLnCDrsJjrk5zsi5wg6rO17IudIO2OmOydtOyngCDsnqztmZXsnbjtlbTslbztlahcblxuLy8gR1BULTUuNOyXkOyEnCDsspjsnYwg64+E7J6F65CcIGxvbmctY29udGV4dCDtlaDspp0gKDUuMi81LjMtY29kZXjripQg7ZW064u5IOyXhuydjCwgNS40LW1pbmkvbmFub+uKlCDqs7Xsi50g7ZGc7JeQ7IScIGxvbmctY29udGV4dCDri6jqsIAg7JeG7J2MKVxuLy8gMjcySyDstIjqs7wg7IucIGlucHV0IDJ4IC8gY2FjaGVkIDJ4IC8gb3V0cHV0IDEuNXgg4oCUIOy0iOqzvOu2hOunjOydtCDslYTri4wg7IS47IWYIOyghOyytOyXkCDsoIHsmqnrkKhcbi8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC01LjUgKFwicHJvbXB0cyB3aXRoID4yNzJLIGlucHV0IHRva2Vuc1wiKVxuY29uc3QgTE9OR19DT05URVhUXzI3Mks6IE5vbk51bGxhYmxlPE1vZGVsQ29zdHNbXCJsb25nQ29udGV4dFwiXT4gPSB7XG4gIHRocmVzaG9sZDogMjcyXzAwMCxcbiAgaW5wdXRNdWx0aXBsaWVyOiAyLFxuICBjYWNoZWRJbnB1dE11bHRpcGxpZXI6IDIsXG4gIG91dHB1dE11bHRpcGxpZXI6IDEuNSxcbn07XG5cbmNvbnN0IE9QRU5BSV9DT1NUUzogUmVjb3JkPHN0cmluZywgTW9kZWxDb3N0cz4gPSB7XG4gIC8vIEdQVC01LjYgU29sLCBUZXJyYSwgTHVuYS4gT3BlbkFJIG5hdGl2ZSBBUEkg64qUIDEuMDVNIGNvbnRleHQgLyAxMjhLIG1heCBvdXRwdXQg7J207KeA66eMLFxuICAvLyBxZ3JpZCDsnZggY29kZXggYXBwLXNlcnZlciDqsr3roZzripQgY29udGV4dF93aW5kb3c9MzcySyAobWF4X2NvbnRleHRfd2luZG93IOuPhCAzNzJLLFxuICAvLyBlZmZlY3RpdmUgOTUlIOKJiCAzNTNLKSDroZwg7KCc7ZWc65Cc64ukIOKAlCBjb2RleCAwLjE0NC4xIG1vZGVsc19jYWNoZSDsi6TsuKEgKDIwMjYtMDctMTApLlxuICAvLyBjYWNoZSB3cml0ZSDripQgdW5jYWNoZWQgaW5wdXQg7J2YIDEuMjV4IOuhnCDqs7zquIjrkJjsp4Drp4wsIGNvZGV4IGFwcC1zZXJ2ZXIgdXNhZ2VcbiAgLy8gKFRva2VuVXNhZ2VCcmVha2Rvd24pIOyXkCBjYWNoZSB3cml0ZSDthqDtgbAg7ZWE65Oc6rCAIOyXhuyWtCDtmITsnqwgT3BlbkFJIOyLpO2WiSDqsr3roZzsnZhcbiAgLy8gY29zdCDqs4TsgrDsl5DshJzripQg7ZWt7IOBIDAg7Jy866GcIOyeoe2ejOuLpCDihpIg6re466eM7YG8IOqzvOyGjOynkeqzhC4g64uo6rCA64qUIOyZuOu2gCBsb2dnZXIvbWFudWFsXG4gIC8vIHVzYWdlIOyeheugpeqzvCDtlqXtm4Qg7ZSE66Gc7Yag7L2cIO2ZleyepeydhCDsnITtlbQg7Jyg7KeA7ZWc64ukLlxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS42LXNvbFxuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuYWkuY29tL2FwaS9kb2NzL21vZGVscy9ncHQtNS42LXRlcnJhXG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC01LjYtbHVuYVxuICBcImdwdC01LjYtc29sXCI6IHtcbiAgICBpbnB1dFRva2VuczogNSxcbiAgICBvdXRwdXRUb2tlbnM6IDMwLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjUsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiA2LjI1LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgXCJncHQtNS42LXRlcnJhXCI6IHtcbiAgICBpbnB1dFRva2VuczogMi41LFxuICAgIG91dHB1dFRva2VuczogMTUsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMjUsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiAzLjEyNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIFwiZ3B0LTUuNi1sdW5hXCI6IHtcbiAgICBpbnB1dFRva2VuczogMSxcbiAgICBvdXRwdXRUb2tlbnM6IDYsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMSxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDEuMjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICAvLyBodHRwczovL29wZW5haS5jb20vaW5kZXgvaW50cm9kdWNpbmctZ3B0LTUtNS8gKDIwMjYtMDQg7Lac7IucKVxuICBcImdwdC01LjVcIjoge1xuICAgIGlucHV0VG9rZW5zOiA1LFxuICAgIG91dHB1dFRva2VuczogMzAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIC8vIGh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbnRyb2R1Y2luZy1ncHQtNS00LyAoMjAyNi0wMyDstpzsi5wpXG4gIFwiZ3B0LTUuNFwiOiB7XG4gICAgaW5wdXRUb2tlbnM6IDIuNSxcbiAgICBvdXRwdXRUb2tlbnM6IDE1LFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiAwLjI1LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgXCJncHQtNS40LW1pbmlcIjogeyBpbnB1dFRva2VuczogMC43NSwgb3V0cHV0VG9rZW5zOiA0LjUsIGNhY2hlZElucHV0VG9rZW5zOiAwLjA3NSB9LFxuICAvLyBncHQtNS4y7JmAIOuPmeydvCDri6jqsIAgKGNhY2hlZCA9IGlucHV07J2YIDEwJSlcbiAgXCJncHQtNS4zLWNvZGV4XCI6IHsgaW5wdXRUb2tlbnM6IDEuNzUsIG91dHB1dFRva2VuczogMTQsIGNhY2hlZElucHV0VG9rZW5zOiAwLjE3NSB9LFxuICAvLyBodHRwczovL29wZW5haS5jb20vaW5kZXgvaW50cm9kdWNpbmctZ3B0LTUtMi8gKGNhY2hlZCBpbnB1dCA5MCUg7ZWg7J24IOuqheyLnClcbiAgXCJncHQtNS4yXCI6IHsgaW5wdXRUb2tlbnM6IDEuNzUsIG91dHB1dFRva2VuczogMTQsIGNhY2hlZElucHV0VG9rZW5zOiAwLjE3NSB9LFxufTtcblxuLy8g4pSA4pSAIEFudGhyb3BpYyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gYW50aHJvcGljQ29zdHMoaW5wdXRUb2tlbnM6IG51bWJlciwgb3V0cHV0VG9rZW5zOiBudW1iZXIpOiBNb2RlbENvc3RzIHtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dFRva2VucyxcbiAgICBvdXRwdXRUb2tlbnMsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IGlucHV0VG9rZW5zIC8gMTAsXG4gICAgLy8gQ2xhdWRlIENvZGUgc3Vic2NyaXB0aW9uIE9BdXRoIOuKlCAxaCBUVEwg7J2EIOyekOuPmSDshKDtg53tlZzri6QuIOq1rOuyhOyghOyymOufvCDsnZHri7Xsl5BcbiAgICAvLyBUVEwgYnJlYWtkb3duIOydtCDsl4bsnYQg65WM66eMIOydtCAxaCDri6jqsIDrpbwgZmFsbGJhY2sg7Jy866GcIOyCrOyaqe2VnOuLpC5cbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IGlucHV0VG9rZW5zICogMixcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogaW5wdXRUb2tlbnMgKiAxLjI1LFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoOiBpbnB1dFRva2VucyAqIDIsXG4gIH07XG59XG5cbmNvbnN0IEFOVEhST1BJQ19DT1NUUzogUmVjb3JkPHN0cmluZywgTW9kZWxDb3N0cz4gPSB7XG4gIFwiY2xhdWRlLWZhYmxlLTVcIjogYW50aHJvcGljQ29zdHMoMTAsIDUwKSxcbiAgc29ubmV0OiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLTMtNS1oYWlrdVwiOiBhbnRocm9waWNDb3N0cygwLjgsIDQpLFxuICBcImNsYXVkZS1oYWlrdS00LTVcIjogYW50aHJvcGljQ29zdHMoMSwgNSksXG4gIFwiY2xhdWRlLTMtNS1zb25uZXRcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS0zLTctc29ubmV0XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtc29ubmV0LTRcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1zb25uZXQtNC01XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtc29ubmV0LTQtNlwiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLXNvbm5ldC00LTdcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1vcHVzLTRcIjogYW50aHJvcGljQ29zdHMoMTUsIDc1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LTFcIjogYW50aHJvcGljQ29zdHMoMTUsIDc1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LTVcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICBcImNsYXVkZS1vcHVzLTQtNlwiOiBhbnRocm9waWNDb3N0cyg1LCAyNSksXG4gIFwiY2xhdWRlLW9wdXMtNC03XCI6IGFudGhyb3BpY0Nvc3RzKDUsIDI1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LThcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICBcImNsYXVkZS1vcHVzLTVcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxufTtcblxuLy8gQW50aHJvcGljIOqzteyLnSBpbnRyb2R1Y3RvcnkgcHJpY2luZzogMjAyNi0wOC0zMeq5jOyngCAkMi8kMTAsIOydtO2bhCAkMy8kMTUuXG4vLyBxZ3JpZCDripQg7JqU7LKtIOyLnOygkOyXkCDqs4TsgrDtlZjrr4DroZwg67Cw7Y+s66W8IOuLpOyLnCDtlZjsp4Ag7JWK7JWE64+EIDIwMjYtMDktMDEgVVRD67aA7YSwIO2RnOykgCDri6jqsIDroZwg7KCE7ZmY7ZWc64ukLlxuY29uc3QgQ0xBVURFX1NPTk5FVF81X0lOVFJPX1BSSUNJTkdfRU5EX01TID0gRGF0ZS5VVEMoMjAyNiwgOCwgMSk7XG5jb25zdCBDTEFVREVfU09OTkVUXzVfSU5UUk9fQ09TVFMgPSBhbnRocm9waWNDb3N0cygyLCAxMCk7XG5jb25zdCBDTEFVREVfU09OTkVUXzVfU1RBTkRBUkRfQ09TVFMgPSBhbnRocm9waWNDb3N0cygzLCAxNSk7XG5cbi8vIGdwdC01LjMtY29kZXgtc3Bhcmsg64qUIHJlc2VhcmNoIHByZXZpZXcg66GcIOqzteyLnSB0b2tlbiDri6jqsIDqsIAg7JWE7KeBIGZpbmFsIOydtCDslYTri4jri6QuXG4vLyDsp4Dsm5Ag7YOA7J6F7J2AIOycoOyngO2VmOuQmCwg6rO17IudIOuLqOqwgOqwgCDqs7XqsJzrkKAg65WM6rmM7KeAIOyVhOuemCBnZW5lcmljIGVzdGltYXRlIOuhnCDqs4TsgrDtlZzri6QuXG4vLyBAc2VlIGh0dHBzOi8vaGVscC5vcGVuYWkuY29tL2VuL2FydGljbGVzLzIwMDAxMTA2LWNvZGV4LXJhdGUtY2FyZFxuY29uc3QgREVGQVVMVF9DT1NUUzogTW9kZWxDb3N0cyA9IHsgaW5wdXRUb2tlbnM6IDMsIG91dHB1dFRva2VuczogMTUsIGNhY2hlZElucHV0VG9rZW5zOiAwLjMgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVsQ29zdHMobW9kZWw6IHN0cmluZywgYXRNcyA9IERhdGUubm93KCkpOiBNb2RlbENvc3RzIHtcbiAgY29uc3Qgbm9ybWFsaXplZE1vZGVsID0gKG1vZGVsLnNwbGl0KFwiL1wiKS5wb3AoKSA/PyBtb2RlbCkucmVwbGFjZSgvXFxbMW1cXF0kL2ksIFwiXCIpO1xuICBpZiAobm9ybWFsaXplZE1vZGVsID09PSBcImNsYXVkZS1zb25uZXQtNVwiKSB7XG4gICAgcmV0dXJuIGF0TXMgPCBDTEFVREVfU09OTkVUXzVfSU5UUk9fUFJJQ0lOR19FTkRfTVNcbiAgICAgID8gQ0xBVURFX1NPTk5FVF81X0lOVFJPX0NPU1RTXG4gICAgICA6IENMQVVERV9TT05ORVRfNV9TVEFOREFSRF9DT1NUUztcbiAgfVxuICByZXR1cm4gT1BFTkFJX0NPU1RTW25vcm1hbGl6ZWRNb2RlbF0gPz8gQU5USFJPUElDX0NPU1RTW25vcm1hbGl6ZWRNb2RlbF0gPz8gREVGQVVMVF9DT1NUUztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUNvc3RVc2QoXG4gIG1vZGVsOiBzdHJpbmcsXG4gIHVzYWdlOiB7XG4gICAgaW5wdXRUb2tlbnM6IG51bWJlcjtcbiAgICBvdXRwdXRUb2tlbnM6IG51bWJlcjtcbiAgICBjYWNoZWRJbnB1dFRva2Vucz86IG51bWJlcjtcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW0/OiBudW1iZXI7XG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg/OiBudW1iZXI7XG4gIH0sXG4gIGF0TXMgPSBEYXRlLm5vdygpLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgY29zdHMgPSBnZXRNb2RlbENvc3RzKG1vZGVsLCBhdE1zKTtcbiAgY29uc3QgY2FjaGVkSW5wdXQgPSB1c2FnZS5jYWNoZWRJbnB1dFRva2VucyA/PyAwO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uSW5wdXQ1bSA9IE1hdGgubWF4KHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtID8/IDAsIDApO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uSW5wdXQxaCA9IE1hdGgubWF4KHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoID8/IDAsIDApO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uSW5wdXQgPSBNYXRoLm1heChcbiAgICB1c2FnZS5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMgPz8gMCxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXQ1bSArIGNhY2hlQ3JlYXRpb25JbnB1dDFoLFxuICApO1xuICBjb25zdCBjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0NW0gPSBNYXRoLm1pbihjYWNoZUNyZWF0aW9uSW5wdXQ1bSwgY2FjaGVDcmVhdGlvbklucHV0KTtcbiAgY29uc3QgY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDFoID0gTWF0aC5taW4oXG4gICAgY2FjaGVDcmVhdGlvbklucHV0MWgsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0IC0gY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDVtLFxuICApO1xuICBjb25zdCB1bmNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQgPVxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dCAtIGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQ1bSAtIGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQxaDtcbiAgY29uc3Qgbm9uQ2FjaGVkSW5wdXQgPSBNYXRoLm1heCh1c2FnZS5pbnB1dFRva2VucyAtIGNhY2hlZElucHV0IC0gY2FjaGVDcmVhdGlvbklucHV0LCAwKTtcblxuICAvLyBsb25nLWNvbnRleHQg7ZWg7KadOiDsoITssrQg7J6F66ClKGlucHV0X3Rva2VucywgY2FjaGUg7Y+s7ZWoKeydtCB0aHJlc2hvbGQg7LSI6rO8IOyLnCDsmpTssq0g7KCE7LK07JeQIOuwsOycqCDsoIHsmqlcbiAgY29uc3QgbGMgPSBjb3N0cy5sb25nQ29udGV4dDtcbiAgY29uc3QgaXNMb25nQ29udGV4dCA9IGxjICE9PSB1bmRlZmluZWQgJiYgdXNhZ2UuaW5wdXRUb2tlbnMgPiBsYy50aHJlc2hvbGQ7XG4gIGNvbnN0IGlucHV0UmF0ZSA9IGNvc3RzLmlucHV0VG9rZW5zICogKGlzTG9uZ0NvbnRleHQgPyBsYy5pbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3QgY2FjaGVkUmF0ZSA9IGNvc3RzLmNhY2hlZElucHV0VG9rZW5zICogKGlzTG9uZ0NvbnRleHQgPyBsYy5jYWNoZWRJbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3QgY2FjaGVDcmVhdGlvbkZhbGxiYWNrUmF0ZSA9XG4gICAgKGNvc3RzLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyA/PyBjb3N0cy5pbnB1dFRva2VucykgKlxuICAgIChpc0xvbmdDb250ZXh0ID8gbGMuaW5wdXRNdWx0aXBsaWVyIDogMSk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb241bVJhdGUgPVxuICAgIChjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bSA/PyBjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMgPz8gY29zdHMuaW5wdXRUb2tlbnMpICpcbiAgICAoaXNMb25nQ29udGV4dCA/IGxjLmlucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uMWhSYXRlID1cbiAgICAoY29zdHMuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWggPz8gY29zdHMuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zID8/IGNvc3RzLmlucHV0VG9rZW5zKSAqXG4gICAgKGlzTG9uZ0NvbnRleHQgPyBsYy5pbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3Qgb3V0cHV0UmF0ZSA9IGNvc3RzLm91dHB1dFRva2VucyAqIChpc0xvbmdDb250ZXh0ID8gbGMub3V0cHV0TXVsdGlwbGllciA6IDEpO1xuXG4gIHJldHVybiAoXG4gICAgKG5vbkNhY2hlZElucHV0IC8gMV8wMDBfMDAwKSAqIGlucHV0UmF0ZSArXG4gICAgKHVzYWdlLm91dHB1dFRva2VucyAvIDFfMDAwXzAwMCkgKiBvdXRwdXRSYXRlICtcbiAgICAoY2FjaGVkSW5wdXQgLyAxXzAwMF8wMDApICogY2FjaGVkUmF0ZSArXG4gICAgKHVuY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dCAvIDFfMDAwXzAwMCkgKiBjYWNoZUNyZWF0aW9uRmFsbGJhY2tSYXRlICtcbiAgICAoY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDVtIC8gMV8wMDBfMDAwKSAqIGNhY2hlQ3JlYXRpb241bVJhdGUgK1xuICAgIChjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0MWggLyAxXzAwMF8wMDApICogY2FjaGVDcmVhdGlvbjFoUmF0ZVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBd0NBLE1BQU0sb0JBQTREO0NBQ2hFLFdBQVc7Q0FDWCxpQkFBaUI7Q0FDakIsdUJBQXVCO0NBQ3ZCLGtCQUFrQjtBQUNwQjtBQUVBLE1BQU0sZUFBMkM7Q0FXL0MsZUFBZTtFQUNiLGFBQWE7RUFDYixjQUFjO0VBQ2QsbUJBQW1CO0VB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
123
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29zdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9tb2RlbC1jb3N0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog66qo642467OEIO2GoO2BsCDqsIDqsqkg7YWM7J2067iUICsgY29zdCDqs4TsgrAuXG4gKlxuICogY2xhdWRlIGNvZGUg7JmAIOuPmeydvCDtjKjthLQ6IO2BtOudvOydtOyWuO2KuOyXkOyEnCDqsIDqsqkg7YWM7J2067iU66GcIOyngeygkSDqs4TsgrAuXG4gKiDqsIDqsqkg64uo7JyEOiBVU0QgcGVyIDFNIHRva2Vucy5cbiAqXG4gKiBPcGVuQUkg66qo6424IOuqqeuhneydgCBPcGVuQUkg66qo6424IOusuOyEnOyZgCDtmITsnqwg7KeA7JuQIOuqqeuhneydhCDquLDspIDsnLzroZwg6rSA66as7ZWc64ukLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9wbGF0Zm9ybS5vcGVuYWkuY29tL2RvY3MvcHJpY2luZ1xuICogQHNlZSBodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vZG9jcy9lbi9hYm91dC1jbGF1ZGUvcHJpY2luZ1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDb3N0cyB7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICAvKiogVFRMIGJyZWFrZG93biDsnbQg7JeG64qUIHVzYWdlIOyXkCDsoIHsmqntlaAgY2FjaGUgd3JpdGUgZmFsbGJhY2sg64uo6rCALiAqL1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtPzogbnVtYmVyO1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaD86IG51bWJlcjtcbiAgLyoqXG4gICAqIGxvbmctY29udGV4dCDtlaDspp0uIOyghOyytCDsnoXroKUg7Yag7YGwKGlucHV0X3Rva2VucywgY2FjaGVfcmVhZCDtj6ztlagp7J20IHRocmVzaG9sZCDstIjqs7wg7IucXG4gICAqIOy0iOqzvOu2hOunjOydtCDslYTri4jrnbwg7JqU7LKtIOyghOyytChmdWxsIHNlc3Npb24p7JeQIOuwsOycqCDsoIHsmqkuXG4gICAqL1xuICBsb25nQ29udGV4dD86IHtcbiAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICBpbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBjYWNoZWRJbnB1dE11bHRpcGxpZXI6IG51bWJlcjtcbiAgICBvdXRwdXRNdWx0aXBsaWVyOiBudW1iZXI7XG4gIH07XG59XG5cbi8vIOKUgOKUgCBPcGVuQUkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vL1xuLy8g6rCA6rKpIOy2nOyymDogaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzICgyMDI2LTA3LTE4IO2ZleyduClcbi8vIOyLoOuqqOuNuCDstpzsi5zrp4jri6Qg64uo6rCA6rCAIOuwlOuAjOuvgOuhnCg1LjLihpI1LjTihpI1LjUpIOuqqOuNuCDstpTqsIAg7IucIOuwmOuTnOyLnCDqs7Xsi50g7Y6Y7J207KeAIOyerO2ZleyduO2VtOyVvO2VqFxuXG4vLyBHUFQtNS407JeQ7IScIOyymOydjCDrj4TsnoXrkJwgbG9uZy1jb250ZXh0IO2VoOymnSAoNS4yLzUuMy1jb2RleOuKlCDtlbTri7kg7JeG7J2MLCA1LjQtbWluaS9uYW5v64qUIOqzteyLnSDtkZzsl5DshJwgbG9uZy1jb250ZXh0IOuLqOqwgCDsl4bsnYwpXG4vLyAyNzJLIOy0iOqzvCDsi5wgaW5wdXQgMnggLyBjYWNoZWQgMnggLyBvdXRwdXQgMS41eCDigJQg7LSI6rO867aE66eM7J20IOyVhOuLjCDshLjshZgg7KCE7LK07JeQIOyggeyaqeuQqFxuLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9tb2RlbHMvZ3B0LTUuNSAoXCJwcm9tcHRzIHdpdGggPjI3MksgaW5wdXQgdG9rZW5zXCIpXG5jb25zdCBMT05HX0NPTlRFWFRfMjcySzogTm9uTnVsbGFibGU8TW9kZWxDb3N0c1tcImxvbmdDb250ZXh0XCJdPiA9IHtcbiAgdGhyZXNob2xkOiAyNzJfMDAwLFxuICBpbnB1dE11bHRpcGxpZXI6IDIsXG4gIGNhY2hlZElucHV0TXVsdGlwbGllcjogMixcbiAgb3V0cHV0TXVsdGlwbGllcjogMS41LFxufTtcblxuY29uc3QgT1BFTkFJX0NPU1RTOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvc3RzPiA9IHtcbiAgLy8gR1BULTUuNiBTb2wsIFRlcnJhLCBMdW5hLiBjYWNoZSB3cml0ZSDri6jqsIDripQg7Jm467aAIGxvZ2dlci9tYW51YWwgdXNhZ2Ug7J6F66Cl7J2EIOychO2VtFxuICAvLyDsnKDsp4DtlZzri6QuIO2YhOyerCBPcGVuQUkg7J2R64u1IHVzYWdlIOyXkCBjYWNoZSB3cml0ZSDthqDtgbAg7ZWE65Oc6rCAIOyXhuycvOuptCDruYTsmqnsnYAgMOycvOuhnCDqs4TsgrDrkJzri6QuXG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC01LjYtc29sXG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5haS5jb20vYXBpL2RvY3MvbW9kZWxzL2dwdC01LjYtdGVycmFcbiAgLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9tb2RlbHMvZ3B0LTUuNi1sdW5hXG4gIFwiZ3B0LTUuNi1zb2xcIjoge1xuICAgIGlucHV0VG9rZW5zOiA1LFxuICAgIG91dHB1dFRva2VuczogMzAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuNSxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDYuMjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICBcImdwdC01LjYtdGVycmFcIjoge1xuICAgIGlucHV0VG9rZW5zOiAyLjUsXG4gICAgb3V0cHV0VG9rZW5zOiAxNSxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC4yNSxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IDMuMTI1LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgXCJncHQtNS42LWx1bmFcIjoge1xuICAgIGlucHV0VG9rZW5zOiAxLFxuICAgIG91dHB1dFRva2VuczogNixcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC4xLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogMS4yNSxcbiAgICBsb25nQ29udGV4dDogTE9OR19DT05URVhUXzI3MkssXG4gIH0sXG4gIC8vIGh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbnRyb2R1Y2luZy1ncHQtNS01LyAoMjAyNi0wNCDstpzsi5wpXG4gIFwiZ3B0LTUuNVwiOiB7XG4gICAgaW5wdXRUb2tlbnM6IDUsXG4gICAgb3V0cHV0VG9rZW5zOiAzMCxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogMC41LFxuICAgIGxvbmdDb250ZXh0OiBMT05HX0NPTlRFWFRfMjcySyxcbiAgfSxcbiAgLy8gaHR0cHM6Ly9vcGVuYWkuY29tL2luZGV4L2ludHJvZHVjaW5nLWdwdC01LTQvICgyMDI2LTAzIOy2nOyLnClcbiAgXCJncHQtNS40XCI6IHtcbiAgICBpbnB1dFRva2VuczogMi41LFxuICAgIG91dHB1dFRva2VuczogMTUsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMjUsXG4gICAgbG9uZ0NvbnRleHQ6IExPTkdfQ09OVEVYVF8yNzJLLFxuICB9LFxuICBcImdwdC01LjQtbWluaVwiOiB7IGlucHV0VG9rZW5zOiAwLjc1LCBvdXRwdXRUb2tlbnM6IDQuNSwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMDc1IH0sXG4gIC8vIGdwdC01LjLsmYAg64+Z7J28IOuLqOqwgCAoY2FjaGVkID0gaW5wdXTsnZggMTAlKVxuICBcImdwdC01LjMtY29kZXhcIjogeyBpbnB1dFRva2VuczogMS43NSwgb3V0cHV0VG9rZW5zOiAxNCwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMTc1IH0sXG4gIC8vIGh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbnRyb2R1Y2luZy1ncHQtNS0yLyAoY2FjaGVkIGlucHV0IDkwJSDtlaDsnbgg66qF7IucKVxuICBcImdwdC01LjJcIjogeyBpbnB1dFRva2VuczogMS43NSwgb3V0cHV0VG9rZW5zOiAxNCwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMTc1IH0sXG59O1xuXG4vLyDilIDilIAgQW50aHJvcGljIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5mdW5jdGlvbiBhbnRocm9waWNDb3N0cyhpbnB1dFRva2VuczogbnVtYmVyLCBvdXRwdXRUb2tlbnM6IG51bWJlcik6IE1vZGVsQ29zdHMge1xuICByZXR1cm4ge1xuICAgIGlucHV0VG9rZW5zLFxuICAgIG91dHB1dFRva2VucyxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogaW5wdXRUb2tlbnMgLyAxMCxcbiAgICAvLyBDbGF1ZGUgQ29kZSBzdWJzY3JpcHRpb24gT0F1dGgg64qUIDFoIFRUTCDsnYQg7J6Q64+ZIOyEoO2Dne2VnOuLpC4g6rWs67KE7KCE7LKY65+8IOydkeuLteyXkFxuICAgIC8vIFRUTCBicmVha2Rvd24g7J20IOyXhuydhCDrlYzrp4wg7J20IDFoIOuLqOqwgOulvCBmYWxsYmFjayDsnLzroZwg7IKs7Jqp7ZWc64ukLlxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogaW5wdXRUb2tlbnMgKiAyLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtOiBpbnB1dFRva2VucyAqIDEuMjUsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg6IGlucHV0VG9rZW5zICogMixcbiAgfTtcbn1cblxuY29uc3QgQU5USFJPUElDX0NPU1RTOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvc3RzPiA9IHtcbiAgXCJjbGF1ZGUtZmFibGUtNVwiOiBhbnRocm9waWNDb3N0cygxMCwgNTApLFxuICBzb25uZXQ6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtMy01LWhhaWt1XCI6IGFudGhyb3BpY0Nvc3RzKDAuOCwgNCksXG4gIFwiY2xhdWRlLWhhaWt1LTQtNVwiOiBhbnRocm9waWNDb3N0cygxLCA1KSxcbiAgXCJjbGF1ZGUtMy01LXNvbm5ldFwiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLTMtNy1zb25uZXRcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1zb25uZXQtNFwiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLXNvbm5ldC00LTVcIjogYW50aHJvcGljQ29zdHMoMywgMTUpLFxuICBcImNsYXVkZS1zb25uZXQtNC02XCI6IGFudGhyb3BpY0Nvc3RzKDMsIDE1KSxcbiAgXCJjbGF1ZGUtc29ubmV0LTQtN1wiOiBhbnRocm9waWNDb3N0cygzLCAxNSksXG4gIFwiY2xhdWRlLW9wdXMtNFwiOiBhbnRocm9waWNDb3N0cygxNSwgNzUpLFxuICBcImNsYXVkZS1vcHVzLTQtMVwiOiBhbnRocm9waWNDb3N0cygxNSwgNzUpLFxuICBcImNsYXVkZS1vcHVzLTQtNVwiOiBhbnRocm9waWNDb3N0cyg1LCAyNSksXG4gIFwiY2xhdWRlLW9wdXMtNC02XCI6IGFudGhyb3BpY0Nvc3RzKDUsIDI1KSxcbiAgXCJjbGF1ZGUtb3B1cy00LTdcIjogYW50aHJvcGljQ29zdHMoNSwgMjUpLFxuICBcImNsYXVkZS1vcHVzLTQtOFwiOiBhbnRocm9waWNDb3N0cyg1LCAyNSksXG4gIFwiY2xhdWRlLW9wdXMtNVwiOiBhbnRocm9waWNDb3N0cyg1LCAyNSksXG59O1xuXG4vLyBBbnRocm9waWMg6rO17IudIGludHJvZHVjdG9yeSBwcmljaW5nOiAyMDI2LTA4LTMx6rmM7KeAICQyLyQxMCwg7J207ZuEICQzLyQxNS5cbi8vIHFncmlkIOuKlCDsmpTssq0g7Iuc7KCQ7JeQIOqzhOyCsO2VmOuvgOuhnCDrsLDtj6zrpbwg64uk7IucIO2VmOyngCDslYrslYTrj4QgMjAyNi0wOS0wMSBVVEPrtoDthLAg7ZGc7KSAIOuLqOqwgOuhnCDsoITtmZjtlZzri6QuXG5jb25zdCBDTEFVREVfU09OTkVUXzVfSU5UUk9fUFJJQ0lOR19FTkRfTVMgPSBEYXRlLlVUQygyMDI2LCA4LCAxKTtcbmNvbnN0IENMQVVERV9TT05ORVRfNV9JTlRST19DT1NUUyA9IGFudGhyb3BpY0Nvc3RzKDIsIDEwKTtcbmNvbnN0IENMQVVERV9TT05ORVRfNV9TVEFOREFSRF9DT1NUUyA9IGFudGhyb3BpY0Nvc3RzKDMsIDE1KTtcblxuLy8gZ3B0LTUuMy1jb2RleC1zcGFyayDripQgcmVzZWFyY2ggcHJldmlldyDroZwg6rO17IudIHRva2VuIOuLqOqwgOqwgCDslYTsp4EgZmluYWwg7J20IOyVhOuLiOuLpC5cbi8vIOyngOybkCDtg4DsnoXsnYAg7Jyg7KeA7ZWY65CYLCDqs7Xsi50g64uo6rCA6rCAIOqzteqwnOuQoCDrlYzquYzsp4Ag7JWE656YIGdlbmVyaWMgZXN0aW1hdGUg66GcIOqzhOyCsO2VnOuLpC5cbi8vIEBzZWUgaHR0cHM6Ly9oZWxwLm9wZW5haS5jb20vZW4vYXJ0aWNsZXMvMjAwMDExMDYtY29kZXgtcmF0ZS1jYXJkXG5jb25zdCBERUZBVUxUX0NPU1RTOiBNb2RlbENvc3RzID0geyBpbnB1dFRva2VuczogMywgb3V0cHV0VG9rZW5zOiAxNSwgY2FjaGVkSW5wdXRUb2tlbnM6IDAuMyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxDb3N0cyhtb2RlbDogc3RyaW5nLCBhdE1zID0gRGF0ZS5ub3coKSk6IE1vZGVsQ29zdHMge1xuICBjb25zdCBub3JtYWxpemVkTW9kZWwgPSAobW9kZWwuc3BsaXQoXCIvXCIpLnBvcCgpID8/IG1vZGVsKS5yZXBsYWNlKC9cXFsxbVxcXSQvaSwgXCJcIik7XG4gIGlmIChub3JtYWxpemVkTW9kZWwgPT09IFwiY2xhdWRlLXNvbm5ldC01XCIpIHtcbiAgICByZXR1cm4gYXRNcyA8IENMQVVERV9TT05ORVRfNV9JTlRST19QUklDSU5HX0VORF9NU1xuICAgICAgPyBDTEFVREVfU09OTkVUXzVfSU5UUk9fQ09TVFNcbiAgICAgIDogQ0xBVURFX1NPTk5FVF81X1NUQU5EQVJEX0NPU1RTO1xuICB9XG4gIHJldHVybiBPUEVOQUlfQ09TVFNbbm9ybWFsaXplZE1vZGVsXSA/PyBBTlRIUk9QSUNfQ09TVFNbbm9ybWFsaXplZE1vZGVsXSA/PyBERUZBVUxUX0NPU1RTO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQ29zdFVzZChcbiAgbW9kZWw6IHN0cmluZyxcbiAgdXNhZ2U6IHtcbiAgICBpbnB1dFRva2VuczogbnVtYmVyO1xuICAgIG91dHB1dFRva2VuczogbnVtYmVyO1xuICAgIGNhY2hlZElucHV0VG9rZW5zPzogbnVtYmVyO1xuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2Vucz86IG51bWJlcjtcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bT86IG51bWJlcjtcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaD86IG51bWJlcjtcbiAgfSxcbiAgYXRNcyA9IERhdGUubm93KCksXG4pOiBudW1iZXIge1xuICBjb25zdCBjb3N0cyA9IGdldE1vZGVsQ29zdHMobW9kZWwsIGF0TXMpO1xuICBjb25zdCBjYWNoZWRJbnB1dCA9IHVzYWdlLmNhY2hlZElucHV0VG9rZW5zID8/IDA7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb25JbnB1dDVtID0gTWF0aC5tYXgodXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW0gPz8gMCwgMCk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb25JbnB1dDFoID0gTWF0aC5tYXgodXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWggPz8gMCwgMCk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb25JbnB1dCA9IE1hdGgubWF4KFxuICAgIHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyA/PyAwLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dDVtICsgY2FjaGVDcmVhdGlvbklucHV0MWgsXG4gICk7XG4gIGNvbnN0IGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQ1bSA9IE1hdGgubWluKGNhY2hlQ3JlYXRpb25JbnB1dDVtLCBjYWNoZUNyZWF0aW9uSW5wdXQpO1xuICBjb25zdCBjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0MWggPSBNYXRoLm1pbihcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXQxaCxcbiAgICBjYWNoZUNyZWF0aW9uSW5wdXQgLSBjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0NW0sXG4gICk7XG4gIGNvbnN0IHVuY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dCA9XG4gICAgY2FjaGVDcmVhdGlvbklucHV0IC0gY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDVtIC0gY2xhc3NpZmllZENhY2hlQ3JlYXRpb25JbnB1dDFoO1xuICBjb25zdCBub25DYWNoZWRJbnB1dCA9IE1hdGgubWF4KHVzYWdlLmlucHV0VG9rZW5zIC0gY2FjaGVkSW5wdXQgLSBjYWNoZUNyZWF0aW9uSW5wdXQsIDApO1xuXG4gIC8vIGxvbmctY29udGV4dCDtlaDspp06IOyghOyytCDsnoXroKUoaW5wdXRfdG9rZW5zLCBjYWNoZSDtj6ztlagp7J20IHRocmVzaG9sZCDstIjqs7wg7IucIOyalOyyrSDsoITssrTsl5Ag67Cw7JyoIOyggeyaqVxuICBjb25zdCBsYyA9IGNvc3RzLmxvbmdDb250ZXh0O1xuICBjb25zdCBpc0xvbmdDb250ZXh0ID0gbGMgIT09IHVuZGVmaW5lZCAmJiB1c2FnZS5pbnB1dFRva2VucyA+IGxjLnRocmVzaG9sZDtcbiAgY29uc3QgaW5wdXRSYXRlID0gY29zdHMuaW5wdXRUb2tlbnMgKiAoaXNMb25nQ29udGV4dCA/IGxjLmlucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBjYWNoZWRSYXRlID0gY29zdHMuY2FjaGVkSW5wdXRUb2tlbnMgKiAoaXNMb25nQ29udGV4dCA/IGxjLmNhY2hlZElucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uRmFsbGJhY2tSYXRlID1cbiAgICAoY29zdHMuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zID8/IGNvc3RzLmlucHV0VG9rZW5zKSAqXG4gICAgKGlzTG9uZ0NvbnRleHQgPyBsYy5pbnB1dE11bHRpcGxpZXIgOiAxKTtcbiAgY29uc3QgY2FjaGVDcmVhdGlvbjVtUmF0ZSA9XG4gICAgKGNvc3RzLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtID8/IGNvc3RzLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyA/PyBjb3N0cy5pbnB1dFRva2VucykgKlxuICAgIChpc0xvbmdDb250ZXh0ID8gbGMuaW5wdXRNdWx0aXBsaWVyIDogMSk7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb24xaFJhdGUgPVxuICAgIChjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaCA/PyBjb3N0cy5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMgPz8gY29zdHMuaW5wdXRUb2tlbnMpICpcbiAgICAoaXNMb25nQ29udGV4dCA/IGxjLmlucHV0TXVsdGlwbGllciA6IDEpO1xuICBjb25zdCBvdXRwdXRSYXRlID0gY29zdHMub3V0cHV0VG9rZW5zICogKGlzTG9uZ0NvbnRleHQgPyBsYy5vdXRwdXRNdWx0aXBsaWVyIDogMSk7XG5cbiAgcmV0dXJuIChcbiAgICAobm9uQ2FjaGVkSW5wdXQgLyAxXzAwMF8wMDApICogaW5wdXRSYXRlICtcbiAgICAodXNhZ2Uub3V0cHV0VG9rZW5zIC8gMV8wMDBfMDAwKSAqIG91dHB1dFJhdGUgK1xuICAgIChjYWNoZWRJbnB1dCAvIDFfMDAwXzAwMCkgKiBjYWNoZWRSYXRlICtcbiAgICAodW5jbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0IC8gMV8wMDBfMDAwKSAqIGNhY2hlQ3JlYXRpb25GYWxsYmFja1JhdGUgK1xuICAgIChjbGFzc2lmaWVkQ2FjaGVDcmVhdGlvbklucHV0NW0gLyAxXzAwMF8wMDApICogY2FjaGVDcmVhdGlvbjVtUmF0ZSArXG4gICAgKGNsYXNzaWZpZWRDYWNoZUNyZWF0aW9uSW5wdXQxaCAvIDFfMDAwXzAwMCkgKiBjYWNoZUNyZWF0aW9uMWhSYXRlXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7QUF3Q0EsTUFBTSxvQkFBNEQ7Q0FDaEUsV0FBVztDQUNYLGlCQUFpQjtDQUNqQix1QkFBdUI7Q0FDdkIsa0JBQWtCO0FBQ3BCO0FBRUEsTUFBTSxlQUEyQztDQU0vQyxlQUFlO0VBQ2IsYUFBYTtFQUNiLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsMEJBQTBCO0VBQzFCLGFBQWE7Q0FDZjtDQUNBLGlCQUFpQjtFQUNmLGFBQWE7RUFDYixjQUFjO0VBQ2QsbUJBQW1CO0VBQ25CLDBCQUEwQjtFQUMxQixhQUFhO0NBQ2Y7Q0FDQSxnQkFBZ0I7RUFDZCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsYUFBYTtDQUNmO0NBRUEsV0FBVztFQUNULGFBQWE7RUFDYixjQUFjO0VBQ2QsbUJBQW1CO0VBQ25CLGFBQWE7Q0FDZjtDQUVBLFdBQVc7RUFDVCxhQUFhO0VBQ2IsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixhQUFhO0NBQ2Y7Q0FDQSxnQkFBZ0I7RUFBRSxhQUFhO0VBQU0sY0FBYztFQUFLLG1CQUFtQjtDQUFNO0NBRWpGLGlCQUFpQjtFQUFF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
@@ -175,4 +175,4 @@ function isRecord(value) {
175
175
  //#endregion
176
176
  export { ANTHROPIC_SCHEMA_ARGV_MAX_UTF8_BYTES, ARGV_SAFE_MAX_UTF8_BYTES, CALLER_SCHEMA_LIMITS, CallerSchemaValidationError, assertAnthropicSchemaArgvSize, parseAndValidateCallerSchemas, serializeAndValidateDispatchSchema };
177
177
 
178
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXZhbGlkYXRpb24uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vc2NoZW1hLXZhbGlkYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIm5vZGU6YnVmZmVyXCI7XG5cbmltcG9ydCB7IHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL2NvZGV4LXByb3RvY29sL3NlcmRlX2pzb24vSnNvblZhbHVlXCI7XG5cbi8qKlxuICogQ2FsbGVyLXByb3ZpZGVkIHNjaGVtYXMgYXJlIHNlcmlhbGl6ZWQsIGNvcGllZCwgYW5kIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZWQgYmVmb3JlIGRpc3BhdGNoLlxuICogS2VlcCB0aGVzZSBsaW1pdHMgY29tZm9ydGFibHkgYWJvdmUgbm9ybWFsIGdlbmVyYXRlZCBzY2hlbWFzIHdoaWxlIGJvdW5kaW5nIHRoYXQgcHJlcHJvY2Vzc2luZ1xuICogd2VsbCBiZWxvdyB0aGUgQVBJJ3MgMTAgTWlCIHJlcXVlc3QtYm9keSBjZWlsaW5nLlxuICovXG5leHBvcnQgY29uc3QgQ0FMTEVSX1NDSEVNQV9MSU1JVFMgPSB7XG4gIG1heFV0ZjhCeXRlczogNTEyICogMTAyNCxcbiAgbWF4Tm9kZXM6IDIwXzAwMCxcbiAgbWF4RGVwdGg6IDEyOCxcbn0gYXMgY29uc3Q7XG5cbi8vIExpbnV4IHBlcm1pdHMgYXQgbW9zdCAxMjggS2lCIChNQVhfQVJHX1NUUkxFTikgZm9yIG9uZSBhcmd2IHZhbHVlLiBxZ3JpZCB1c2VzIGEgNTAlIHNhZmV0eVxuLy8gbWFyZ2luIGZvciBldmVyeSBhcmd2LWRlbGl2ZXJlZCBwYXlsb2FkIOKAlCBDbGF1ZGUgQ29kZSAtLWpzb24tc2NoZW1hIGhlcmUgYW5kIHRoZSBzeXN0ZW0tcHJvbXB0XG4vLyB0cmFuc3BvcnQgKGNsYXVkZS1zZXNzaW9uKSBib3RoIGRlcml2ZSBmcm9tIHRoaXMgc2luZ2xlIGNvbnN0YW50LlxuZXhwb3J0IGNvbnN0IEFSR1ZfU0FGRV9NQVhfVVRGOF9CWVRFUyA9IDY0ICogMTAyNDtcbmV4cG9ydCBjb25zdCBBTlRIUk9QSUNfU0NIRU1BX0FSR1ZfTUFYX1VURjhfQllURVMgPSBBUkdWX1NBRkVfTUFYX1VURjhfQllURVM7XG5cbmV4cG9ydCBjbGFzcyBDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKGBxZ3JpZDogJHttZXNzYWdlfWApO1xuICAgIHRoaXMubmFtZSA9IFwiQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWxsZXJTY2hlbWFzSW5wdXQge1xuICBqc29uU2NoZW1hPzogc3RyaW5nO1xuICB0b29scz86IEFycmF5PHsgbmFtZTogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZzsgaW5wdXRTY2hlbWE6IHVua25vd24gfT47XG59XG5cbmludGVyZmFjZSBDb21wbGV4aXR5U3RhdGUge1xuICB1dGY4Qnl0ZXM6IG51bWJlcjtcbiAgbm9kZXM6IG51bWJlcjtcbiAgc2NoZW1hczogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbmRWYWxpZGF0ZUNhbGxlclNjaGVtYXMoaW5wdXQ6IENhbGxlclNjaGVtYXNJbnB1dCk6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0YXRlOiBDb21wbGV4aXR5U3RhdGUgPSB7XG4gICAgdXRmOEJ5dGVzOiAwLFxuICAgIG5vZGVzOiAwLFxuICAgIHNjaGVtYXM6IDAsXG4gIH07XG4gIGxldCBvdXRwdXRTY2hlbWE6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZDtcblxuICBpZiAoaW5wdXQuanNvblNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYWRkVXRmOEJ5dGVzKEJ1ZmZlci5ieXRlTGVuZ3RoKGlucHV0Lmpzb25TY2hlbWEsIFwidXRmOFwiKSwgXCJqc29uU2NoZW1hXCIsIHN0YXRlKTtcblxuICAgIGxldCBwYXJzZWQ6IHVua25vd247XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoaW5wdXQuanNvblNjaGVtYSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yKFwianNvblNjaGVtYSBtdXN0IGNvbnRhaW4gdmFsaWQgSlNPTlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzUmVjb3JkKHBhcnNlZCkgfHwgcGFyc2VkLnR5cGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3IoJ2pzb25TY2hlbWEgdG9wLWxldmVsIHR5cGUgbXVzdCBiZSBcIm9iamVjdFwiJyk7XG4gICAgfVxuXG4gICAgYWRkQ29tcGxleGl0eShwYXJzZWQsIFwianNvblNjaGVtYVwiLCBzdGF0ZSk7XG4gICAgc3RhdGUuc2NoZW1hcyArPSAxO1xuICAgIG91dHB1dFNjaGVtYSA9IHBhcnNlZCBhcyBKc29uVmFsdWU7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtpbmRleCwgdG9vbF0gb2YgKGlucHV0LnRvb2xzID8/IFtdKS5lbnRyaWVzKCkpIHtcbiAgICBhZGRUb29sTWV0YWRhdGFVdGY4Qnl0ZXModG9vbCwgaW5kZXgsIHN0YXRlKTtcblxuICAgIGNvbnN0IHBhdGggPSBgdG9vbHNbJHtpbmRleH1dLmlucHV0U2NoZW1hYDtcbiAgICBhZGRDb21wbGV4aXR5KHRvb2wuaW5wdXRTY2hlbWEsIHBhdGgsIHN0YXRlLCB0cnVlKTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnlKc29uT3JUaHJvdyh0b29sLmlucHV0U2NoZW1hLCBwYXRoKTtcblxuICAgIC8vIGJ1aWxkVG9vbENhbGxTY2hlbWEgZW1iZWRzIHRoaXMgc2VyaWFsaXphdGlvbiBpbnNpZGUgYW5vdGhlciBKU09OIHN0cmluZy4gQ2hhcmdlIHRoZVxuICAgIC8vIGVzY2FwZWQgb3V0ZXItc3RyaW5nIHJlcHJlc2VudGF0aW9uIGJlZm9yZSB0aGF0IGNvbXBvc2VkIGRlc2NyaXB0aW9uIGlzIG1hdGVyaWFsaXplZC5cbiAgICBhZGRVdGY4Qnl0ZXMoanNvblN0cmluZ0NvbnRlbnRVdGY4Qnl0ZVVwcGVyQm91bmQoc2VyaWFsaXplZCksIHBhdGgsIHN0YXRlKTtcbiAgICBzdGF0ZS5zY2hlbWFzICs9IDE7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0U2NoZW1hO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQW5kVmFsaWRhdGVEaXNwYXRjaFNjaGVtYShcbiAgc2NoZW1hOiB1bmtub3duLFxuICBwcm92aWRlcj86IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChzY2hlbWEgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzZXJpYWxpemVkID0gc3RyaW5naWZ5SnNvbk9yVGhyb3coc2NoZW1hLCBcImRpc3BhdGNoIHNjaGVtYVwiKTtcblxuICBjb25zdCBieXRlTGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgoc2VyaWFsaXplZCwgXCJ1dGY4XCIpO1xuICBpZiAoYnl0ZUxlbmd0aCA+IENBTExFUl9TQ0hFTUFfTElNSVRTLm1heFV0ZjhCeXRlcykge1xuICAgIHRocm93IG5ldyBDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBgZGlzcGF0Y2ggc2NoZW1hIGV4Y2VlZHMgVVRGLTggYnl0ZSBsaW1pdCBvZiAke0NBTExFUl9TQ0hFTUFfTElNSVRTLm1heFV0ZjhCeXRlc31gLFxuICAgICk7XG4gIH1cbiAgaWYgKHByb3ZpZGVyID09PSBcImFudGhyb3BpY1wiKSB7XG4gICAgYXNzZXJ0QW50aHJvcGljU2NoZW1hQXJndlNpemUoc2VyaWFsaXplZCk7XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFudGhyb3BpY1NjaGVtYUFyZ3ZTaXplKGpzb25TY2hlbWE6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoQnVmZmVyLmJ5dGVMZW5ndGgoanNvblNjaGVtYSwgXCJ1dGY4XCIpID4gQU5USFJPUElDX1NDSEVNQV9BUkdWX01BWF9VVEY4X0JZVEVTKSB7XG4gICAgdGhyb3cgbmV3IENhbGxlclNjaGVtYVZhbGlkYXRpb25FcnJvcihcbiAgICAgIGBBbnRocm9waWMgZGlzcGF0Y2ggc2NoZW1hIGV4Y2VlZHMgYXJndiBVVEYtOCBieXRlIGxpbWl0IG9mICR7QU5USFJPUElDX1NDSEVNQV9BUkdWX01BWF9VVEY4X0JZVEVTfWAsXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlKc29uT3JUaHJvdyh2YWx1ZTogdW5rbm93biwgc3ViamVjdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHNlcmlhbGl6ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yKGAke3N1YmplY3R9IG11c3QgYmUgSlNPTi1zZXJpYWxpemFibGVgKTtcbiAgfVxuICBpZiAoc2VyaWFsaXplZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IENhbGxlclNjaGVtYVZhbGlkYXRpb25FcnJvcihgJHtzdWJqZWN0fSBtdXN0IGJlIEpTT04tc2VyaWFsaXphYmxlYCk7XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59XG5cbmZ1bmN0aW9uIGFkZFV0ZjhCeXRlcyhieXRlTGVuZ3RoOiBudW1iZXIsIHBhdGg6IHN0cmluZywgc3RhdGU6IENvbXBsZXhpdHlTdGF0ZSk6IHZvaWQge1xuICBzdGF0ZS51dGY4Qnl0ZXMgKz0gYnl0ZUxlbmd0aDtcbiAgaWYgKHN0YXRlLnV0ZjhCeXRlcyA+IENBTExFUl9TQ0hFTUFfTElNSVRTLm1heFV0ZjhCeXRlcykge1xuICAgIHRocm93TGltaXRFcnJvcihwYXRoLCBcIlVURi04IGJ5dGVcIiwgQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4VXRmOEJ5dGVzLCBzdGF0ZSk7XG4gIH1cbn1cblxuY29uc3QgVE9PTF9ERVNDUklQVElPTl9FTlRSWV9QUkVGSVggPSBcIi0gXCI7XG5jb25zdCBUT09MX0RFU0NSSVBUSU9OX05BTUVfU0VQQVJBVE9SID0gXCI6IFwiO1xuY29uc3QgVE9PTF9ERVNDUklQVElPTl9JTlBVVF9TQ0hFTUFfUFJFRklYID0gXCJcXG4gIGlucHV0U2NoZW1hOiBcIjtcbmNvbnN0IFRPT0xfREVTQ1JJUFRJT05fRU5UUllfU0VQQVJBVE9SID0gXCJcXG5cIjtcblxuZnVuY3Rpb24gYWRkVG9vbE1ldGFkYXRhVXRmOEJ5dGVzKFxuICB0b29sOiBOb25OdWxsYWJsZTxDYWxsZXJTY2hlbWFzSW5wdXRbXCJ0b29sc1wiXT5bbnVtYmVyXSxcbiAgaW5kZXg6IG51bWJlcixcbiAgc3RhdGU6IENvbXBsZXhpdHlTdGF0ZSxcbik6IHZvaWQge1xuICBjb25zdCB0b29sUGF0aCA9IGB0b29sc1ske2luZGV4fV1gO1xuXG4gIC8vIGJ1aWxkVG9vbENhbGxTY2hlbWEgcGxhY2VzIGV2ZXJ5IHRvb2wgbmFtZSBpbiBib3RoIHRoZSBlbnVtIGFuZCB0aGUgaHVtYW4tcmVhZGFibGUgdG9vbFxuICAvLyBkZXNjcmlwdGlvbi4gQ291bnQgYm90aCBlc2NhcGVkIG9jY3VycmVuY2VzLCBwbHVzIHRoZSBlbnVtJ3MgSlNPTiBzdHJpbmcgZGVsaW1pdGVycy5cbiAgY29uc3QgZW5jb2RlZE5hbWVCeXRlcyA9IGpzb25TdHJpbmdDb250ZW50VXRmOEJ5dGVVcHBlckJvdW5kKHRvb2wubmFtZSk7XG4gIGFkZFV0ZjhCeXRlcyhlbmNvZGVkTmFtZUJ5dGVzICogMiArIDIsIGAke3Rvb2xQYXRofS5uYW1lYCwgc3RhdGUpO1xuXG4gIGlmICh0b29sLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBhZGRVdGY4Qnl0ZXMoXG4gICAgICBqc29uU3RyaW5nQ29udGVudFV0ZjhCeXRlVXBwZXJCb3VuZCh0b29sLmRlc2NyaXB0aW9uKSxcbiAgICAgIGAke3Rvb2xQYXRofS5kZXNjcmlwdGlvbmAsXG4gICAgICBzdGF0ZSxcbiAgICApO1xuICB9XG5cbiAgLy8gUGVyLXRvb2wgZnJhbWluZyBhbHNvIGdyb3dzIHdpdGggdGhlIG51bWJlciBvZiB0b29scyBldmVuIHdoZW4gYWxsIGNhbGxlciBzdHJpbmdzIGFyZSBlbXB0eS5cbiAgLy8gSW5jbHVkZSBib3RoIHRoZSB0b29sRGVzY3JpcHRpb25zIGpvaW4gc2VwYXJhdG9yIGFuZCB0aGUgZW51bSBjb21tYSBhZnRlciB0aGUgZmlyc3QgZW50cnkuXG4gIGNvbnN0IGZyYW1pbmdCeXRlcyA9XG4gICAganNvblN0cmluZ0NvbnRlbnRVdGY4Qnl0ZVVwcGVyQm91bmQoVE9PTF9ERVNDUklQVElPTl9FTlRSWV9QUkVGSVgpICtcbiAgICBqc29uU3RyaW5nQ29udGVudFV0ZjhCeXRlVXBwZXJCb3VuZChUT09MX0RFU0NSSVBUSU9OX05BTUVfU0VQQVJBVE9SKSArXG4gICAganNvblN0cmluZ0NvbnRlbnRVdGY4Qnl0ZVVwcGVyQm91bmQoVE9PTF9ERVNDUklQVElPTl9JTlBVVF9TQ0hFTUFfUFJFRklYKSArXG4gICAgKGluZGV4ID09PSAwID8gMCA6IGpzb25TdHJpbmdDb250ZW50VXRmOEJ5dGVVcHBlckJvdW5kKFRPT0xfREVTQ1JJUFRJT05fRU5UUllfU0VQQVJBVE9SKSArIDEpO1xuICBhZGRVdGY4Qnl0ZXMoZnJhbWluZ0J5dGVzLCB0b29sUGF0aCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBjb25zZXJ2YXRpdmUgVVRGLTggYnl0ZSBjb3VudCBmb3IgYSBzdHJpbmcgd2hlbiBpdCBiZWNvbWVzIEpTT04gc3RyaW5nIGNvbnRlbnQsXG4gKiB3aXRob3V0IGFsbG9jYXRpbmcgdGhlIGVzY2FwZWQgcmVwcmVzZW50YXRpb24uIEpTT04uc3RyaW5naWZ5IHVzZXMgc2hvcnQgdHdvLWJ5dGUgZXNjYXBlcyBmb3JcbiAqIGZpdmUgY29udHJvbCBjaGFyYWN0ZXJzOyBjb3VudGluZyBldmVyeSBjb250cm9sIGNoYXJhY3RlciBhcyBhIHNpeC1ieXRlIGBcXHUwMFhYYCBlc2NhcGUga2VlcHNcbiAqIHRoaXMgYW4gdXBwZXIgYm91bmQgd2hpbGUgYXZvaWRpbmcgYSBzZWNvbmQgbGFyZ2UgdGVtcG9yYXJ5IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24ganNvblN0cmluZ0NvbnRlbnRVdGY4Qnl0ZVVwcGVyQm91bmQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gIGxldCBieXRlcyA9IDA7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IGNvZGVVbml0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCk7XG5cbiAgICBpZiAoY29kZVVuaXQgPT09IDB4MjIgfHwgY29kZVVuaXQgPT09IDB4NWMpIHtcbiAgICAgIGJ5dGVzICs9IDI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGNvZGVVbml0IDw9IDB4MWYpIHtcbiAgICAgIGJ5dGVzICs9IDY7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGNvZGVVbml0ID49IDB4ZDgwMCAmJiBjb2RlVW5pdCA8PSAweGRiZmYpIHtcbiAgICAgIGNvbnN0IG5leHRDb2RlVW5pdCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKTtcbiAgICAgIGlmIChuZXh0Q29kZVVuaXQgPj0gMHhkYzAwICYmIG5leHRDb2RlVW5pdCA8PSAweGRmZmYpIHtcbiAgICAgICAgYnl0ZXMgKz0gNDtcbiAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdlbGwtZm9ybWVkIEpTT04uc3RyaW5naWZ5IGVzY2FwZXMgbG9uZSBzdXJyb2dhdGVzIGFzIGBcXHVYWFhYYC5cbiAgICAgICAgYnl0ZXMgKz0gNjtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoY29kZVVuaXQgPj0gMHhkYzAwICYmIGNvZGVVbml0IDw9IDB4ZGZmZikge1xuICAgICAgYnl0ZXMgKz0gNjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGJ5dGVzICs9IGNvZGVVbml0IDw9IDB4N2YgPyAxIDogY29kZVVuaXQgPD0gMHg3ZmYgPyAyIDogMztcbiAgfVxuXG4gIHJldHVybiBieXRlcztcbn1cblxuZnVuY3Rpb24gYWRkQ29tcGxleGl0eShcbiAgcm9vdDogdW5rbm93bixcbiAgcGF0aDogc3RyaW5nLFxuICBzdGF0ZTogQ29tcGxleGl0eVN0YXRlLFxuICBwcmVjaGVja1V0ZjhCeXRlcyA9IGZhbHNlLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJhd1V0ZjhCeXRlcyA9IHsgdmFsdWU6IDAgfTtcbiAgaWYgKHByZWNoZWNrVXRmOEJ5dGVzICYmIHR5cGVvZiByb290ID09PSBcInN0cmluZ1wiKSB7XG4gICAgYWRkUmF3VXRmOExvd2VyQm91bmQocm9vdCwgcGF0aCwgc3RhdGUsIHJhd1V0ZjhCeXRlcyk7XG4gIH1cbiAgYWRkTm9kZShwYXRoLCBzdGF0ZSk7XG4gIGlmIChyb290ID09PSBudWxsIHx8IHR5cGVvZiByb290ICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG5cbiAgY29uc3Qgc3RhY2s6IEFycmF5PHsgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdOyBkZXB0aDogbnVtYmVyIH0+ID0gW1xuICAgIHsgdmFsdWU6IHJvb3QgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW10sIGRlcHRoOiAwIH0sXG4gIF07XG5cbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjdXJyZW50ID0gc3RhY2sucG9wKCkhO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQudmFsdWUpKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY3VycmVudC52YWx1ZS5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgY29uc3QgZGVwdGggPSBjdXJyZW50LmRlcHRoICsgMTtcbiAgICAgICAgYXNzZXJ0RGVwdGhXaXRoaW5MaW1pdChkZXB0aCwgcGF0aCk7XG4gICAgICAgIGFkZE5vZGUocGF0aCwgc3RhdGUpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY3VycmVudC52YWx1ZVtpbmRleF07XG4gICAgICAgIGlmIChwcmVjaGVja1V0ZjhCeXRlcyAmJiB0eXBlb2YgY2hpbGQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBhZGRSYXdVdGY4TG93ZXJCb3VuZChjaGlsZCwgcGF0aCwgc3RhdGUsIHJhd1V0ZjhCeXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkICE9PSBudWxsICYmIHR5cGVvZiBjaGlsZCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIHN0YWNrLnB1c2goeyB2YWx1ZTogY2hpbGQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW10sIGRlcHRoIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50LnZhbHVlKSB7XG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24oY3VycmVudC52YWx1ZSwga2V5KSkgY29udGludWU7XG4gICAgICBpZiAocHJlY2hlY2tVdGY4Qnl0ZXMpIHtcbiAgICAgICAgYWRkUmF3VXRmOExvd2VyQm91bmQoa2V5LCBwYXRoLCBzdGF0ZSwgcmF3VXRmOEJ5dGVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlcHRoID0gY3VycmVudC5kZXB0aCArIDE7XG4gICAgICBhc3NlcnREZXB0aFdpdGhpbkxpbWl0KGRlcHRoLCBwYXRoKTtcbiAgICAgIGFkZE5vZGUocGF0aCwgc3RhdGUpO1xuXG4gICAgICBjb25zdCBjaGlsZCA9IGN1cnJlbnQudmFsdWVba2V5XTtcbiAgICAgIGlmIChwcmVjaGVja1V0ZjhCeXRlcyAmJiB0eXBlb2YgY2hpbGQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgYWRkUmF3VXRmOExvd2VyQm91bmQoY2hpbGQsIHBhdGgsIHN0YXRlLCByYXdVdGY4Qnl0ZXMpO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkICE9PSBudWxsICYmIHR5cGVvZiBjaGlsZCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBzdGFjay5wdXNoKHsgdmFsdWU6IGNoaWxkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdLCBkZXB0aCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUmF3VXRmOExvd2VyQm91bmQoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHBhdGg6IHN0cmluZyxcbiAgc3RhdGU6IENvbXBsZXhpdHlTdGF0ZSxcbiAgcmF3VXRmOEJ5dGVzOiB7IHZhbHVlOiBudW1iZXIgfSxcbik6IHZvaWQge1xuICByYXdVdGY4Qnl0ZXMudmFsdWUgKz0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsIFwidXRmOFwiKTtcbiAgaWYgKHN0YXRlLnV0ZjhCeXRlcyArIHJhd1V0ZjhCeXRlcy52YWx1ZSA+IENBTExFUl9TQ0hFTUFfTElNSVRTLm1heFV0ZjhCeXRlcykge1xuICAgIHRocm93TGltaXRFcnJvcihwYXRoLCBcIlVURi04IGJ5dGVcIiwgQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4VXRmOEJ5dGVzLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0RGVwdGhXaXRoaW5MaW1pdChkZXB0aDogbnVtYmVyLCBwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGRlcHRoID4gQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4RGVwdGgpIHtcbiAgICB0aHJvdyBuZXcgQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yKFxuICAgICAgYCR7cGF0aH0gZXhjZWVkcyBkZXB0aCBsaW1pdCBvZiAke0NBTExFUl9TQ0hFTUFfTElNSVRTLm1heERlcHRofWAsXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGROb2RlKHBhdGg6IHN0cmluZywgc3RhdGU6IENvbXBsZXhpdHlTdGF0ZSk6IHZvaWQge1xuICBzdGF0ZS5ub2RlcyArPSAxO1xuICBpZiAoc3RhdGUubm9kZXMgPiBDQUxMRVJfU0NIRU1BX0xJTUlUUy5tYXhOb2Rlcykge1xuICAgIHRocm93TGltaXRFcnJvcihwYXRoLCBcIm5vZGVcIiwgQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4Tm9kZXMsIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0aHJvd0xpbWl0RXJyb3IoXG4gIHBhdGg6IHN0cmluZyxcbiAga2luZDogXCJVVEYtOCBieXRlXCIgfCBcIm5vZGVcIixcbiAgbGltaXQ6IG51bWJlcixcbiAgc3RhdGU6IENvbXBsZXhpdHlTdGF0ZSxcbik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IENhbGxlclNjaGVtYVZhbGlkYXRpb25FcnJvcihcbiAgICBzdGF0ZS5zY2hlbWFzID09PSAwXG4gICAgICA/IGAke3BhdGh9IGV4Y2VlZHMgJHtraW5kfSBsaW1pdCBvZiAke2xpbWl0fWBcbiAgICAgIDogYGNhbGxlciBzY2hlbWFzIGV4Y2VlZCBhZ2dyZWdhdGUgJHtraW5kfSBsaW1pdCBvZiAke2xpbWl0fWAsXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzUmVjb3JkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVNBLE1BQWEsdUJBQXVCO0NBQ2xDLGNBQWMsTUFBTTtDQUNwQixVQUFVO0NBQ1YsVUFBVTtBQUNaO0FBS0EsTUFBYSwyQkFBMkIsS0FBSztBQUM3QyxNQUFhLHVDQUF1QztBQUVwRCxJQUFhLDhCQUFiLGNBQWlELE1BQU07Q0FDckQsWUFBWSxTQUFpQjtFQUMzQixNQUFNLFVBQVUsU0FBUztFQUN6QixLQUFLLE9BQU87Q0FDZDtBQUNGO0FBYUEsU0FBZ0IsOEJBQThCLE9BQWtEO0NBQzlGLE1BQU0sUUFBeUI7RUFDN0IsV0FBVztFQUNYLE9BQU87RUFDUCxTQUFTO0NBQ1g7Q0FDQSxJQUFJO0NBRUosSUFBSSxNQUFNLGVBQWUsUUFBVztFQUNsQyxhQUFhLE9BQU8sV0FBVyxNQUFNLFlBQVksTUFBTSxHQUFHLGNBQWMsS0FBSztFQUU3RSxJQUFJO0VBQ0osSUFBSTtHQUNGLFNBQVMsS0FBSyxNQUFNLE1BQU0sVUFBVTtFQUN0QyxRQUFRO0dBQ04sTUFBTSxJQUFJLDRCQUE0QixvQ0FBb0M7RUFDNUU7RUFFQSxJQUFJLENBQUMsU0FBUyxNQUFNLEtBQUssT0FBTyxTQUFTLFVBQ3ZDLE1BQU0sSUFBSSw0QkFBNEIsOENBQTRDO0VBR3BGLGNBQWMsUUFBUSxjQUFjLEtBQUs7RUFDekMsTUFBTSxXQUFXO0VBQ2pCLGVBQWU7Q0FDakI7Q0FFQSxLQUFLLE1BQU0sQ0FBQyxPQUFPLFVBQVUsTUFBTSxTQUFTLENBQUMsRUFBQSxDQUFHLFFBQVEsR0FBRztFQUN6RCx5QkFBeUIsTUFBTSxPQUFPLEtBQUs7RUFFM0MsTUFBTSxPQUFPLFNBQVMsTUFBTTtFQUM1QixjQUFjLEtBQUssYUFBYSxNQUFNLE9BQU8sSUFBSTtFQU1qRCxhQUFhLG9DQUpNLHFCQUFxQixLQUFLLGFBQWEsSUFJVCxDQUFVLEdBQUcsTUFBTSxLQUFLO0VBQ3pFLE1BQU0sV0FBVztDQUNuQjtDQUVBLE9BQU87QUFDVDtBQUVBLFNBQWdCLG1DQUNkLFFBQ0EsVUFDb0I7Q0FDcEIsSUFBSSxXQUFXLFFBQVcsT0FBTztDQUVqQyxNQUFNLGFBQWEscUJBQXFCLFFBQVEsaUJBQWlCO0NBR2pFLElBRG1CLE9BQU8sV0FBVyxZQUFZLE1BQzdDLElBQWEscUJBQXFCLGNBQ3BDLE1BQU0sSUFBSSw0QkFDUiwrQ0FBK0MscUJBQXFCLGNBQ3RFO0NBRUYsSUFBSSxhQUFhLGFBQ2YsOEJBQThCLFVBQVU7Q0FHMUMsT0FBTztBQUNUO0FBRUEsU0FBZ0IsOEJBQThCLFlBQTBCO0NBQ3RFLElBQUksT0FBTyxXQUFXLFlBQVksTUFBTSxJQUFBLE9BQ3RDLE1BQU0sSUFBSSw0QkFDUiw4REFBOEQsc0NBQ2hFO0FBRUo7QUFFQSxTQUFTLHFCQUFxQixPQUFnQixTQUF5QjtDQUNyRSxJQUFJO0NBQ0osSUFBSTtFQUNGLGFBQWEsS0FBSyxVQUFVLEtBQUs7Q0FDbkMsUUFBUTtFQUNOLE1BQU0sSUFBSSw0QkFBNEIsR0FBRyxRQUFRLDJCQUEyQjtDQUM5RTtDQUNBLElBQUksZUFBZSxRQUNqQixNQUFNLElBQUksNEJBQTRCLEdBQUcsUUFBUSwyQkFBMkI7Q0FFOUUsT0FBTztBQUNUO0FBRUEsU0FBUyxhQUFhLFlBQW9CLE1BQWMsT0FBOEI7Q0FDcEYsTUFBTSxhQUFhO0NBQ25CLElBQUksTUFBTSxZQUFZLHFCQUFxQixjQUN6QyxnQkFBZ0IsTUFBTSxjQUFjLHFCQUFxQixjQUFjLEtBQUs7QUFFaEY7QUFFQSxNQUFNLGdDQUFnQztBQUN0QyxNQUFNLGtDQUFrQztBQUN4QyxNQUFNLHVDQUF1QztBQUM3QyxNQUFNLG1DQUFtQztBQUV6QyxTQUFTLHlCQUNQLE1BQ0EsT0FDQSxPQUNNO0NBQ04sTUFBTSxXQUFXLFNBQVMsTUFBTTtDQUtoQyxhQUR5QixvQ0FBb0MsS0FBSyxJQUNyRCxJQUFtQixJQUFJLEdBQUcsR0FBRyxTQUFTLFFBQVEsS0FBSztDQUVoRSxJQUFJLEtBQUssZ0JBQWdCLFFBQ3ZCLGFBQ0Usb0NBQW9DLEtBQUssV0FBVyxHQUNwRCxHQUFHLFNBQVMsZUFDWixLQUNGO0NBVUYsYUFKRSxvQ0FBb0MsNkJBQTZCLElBQ2pFLG9DQUFvQywrQkFBK0IsSUFDbkUsb0NBQW9DLG9DQUFvQyxLQUN2RSxVQUFVLElBQUksSUFBSSxvQ0FBb0MsZ0NBQWdDLElBQUksSUFDbEUsVUFBVSxLQUFLO0FBQzVDOzs7Ozs7O0FBUUEsU0FBUyxvQ0FBb0MsT0FBdUI7Q0FDbEUsSUFBSSxRQUFRO0NBRVosS0FBSyxJQUFJLFFBQVEsR0FBRyxRQUFRLE1BQU0sUUFBUSxTQUFTLEdBQUc7RUFDcEQsTUFBTSxXQUFXLE1BQU0sV0FBVyxLQUFLO0VBRXZDLElBQUksYUFBYSxNQUFRLGFBQWEsSUFBTTtHQUMxQyxTQUFTO0dBQ1Q7RUFDRjtFQUNBLElBQUksWUFBWSxJQUFNO0dBQ3BCLFNBQVM7R0FDVDtFQUNGO0VBQ0EsSUFBSSxZQUFZLFNBQVUsWUFBWSxPQUFRO0dBQzVDLE1BQU0sZUFBZSxNQUFNLFdBQVcsUUFBUSxDQUFDO0dBQy9DLElBQUksZ0JBQWdCLFNBQVUsZ0JBQWdCLE9BQVE7SUFDcEQsU0FBUztJQUNULFNBQVM7R0FDWCxPQUVFLFNBQVM7R0FFWDtFQUNGO0VBQ0EsSUFBSSxZQUFZLFNBQVUsWUFBWSxPQUFRO0dBQzVDLFNBQVM7R0FDVDtFQUNGO0VBRUEsU0FBUyxZQUFZLE1BQU8sSUFBSSxZQUFZLE9BQVEsSUFBSTtDQUMxRDtDQUVBLE9BQU87QUFDVDtBQUVBLFNBQVMsY0FDUCxNQUNBLE1BQ0EsT0FDQSxvQkFBb0IsT0FDZDtDQUNOLE1BQU0sZUFBZSxFQUFFLE9BQU8sRUFBRTtDQUNoQyxJQUFJLHFCQUFxQixPQUFPLFNBQVMsVUFDdkMscUJBQXFCLE1BQU0sTUFBTSxPQUFPLFlBQVk7Q0FFdEQsUUFBUSxNQUFNLEtBQUs7Q0FDbkIsSUFBSSxTQUFTLFFBQVEsT0FBTyxTQUFTLFVBQVU7Q0FFL0MsTUFBTSxRQUE4RSxDQUNsRjtFQUFFLE9BQU87RUFBNkMsT0FBTztDQUFFLENBQ2pFO0NBRUEsT0FBTyxNQUFNLFNBQVMsR0FBRztFQUN2QixNQUFNLFVBQVUsTUFBTSxJQUFJO0VBQzFCLElBQUksTUFBTSxRQUFRLFFBQVEsS0FBSyxHQUFHO0dBQ2hDLEtBQUssSUFBSSxRQUFRLEdBQUcsUUFBUSxRQUFRLE1BQU0sUUFBUSxTQUFTLEdBQUc7SUFDNUQsTUFBTSxRQUFRLFFBQVEsUUFBUTtJQUM5Qix1QkFBdUIsT0FBTyxJQUFJO0lBQ2xDLFFBQVEsTUFBTSxLQUFLO0lBRW5CLE1BQU0sUUFBUSxRQUFRLE1BQU07SUFDNUIsSUFBSSxxQkFBcUIsT0FBTyxVQUFVLFVBQ3hDLHFCQUFxQixPQUFPLE1BQU0sT0FBTyxZQUFZO0lBRXZELElBQUksVUFBVSxRQUFRLE9BQU8sVUFBVSxVQUNyQyxNQUFNLEtBQUs7S0FBRSxPQUFPO0tBQThDO0lBQU0sQ0FBQztHQUU3RTtHQUNBO0VBQ0Y7RUFFQSxLQUFLLE1BQU0sT0FBTyxRQUFRLE9BQU87R0FDL0IsSUFBSSxDQUFDLE9BQU8sT0FBTyxRQUFRLE9BQU8sR0FBRyxHQUFHO0dBQ3hDLElBQUksbUJBQ0YscUJBQXFCLEtBQUssTUFBTSxPQUFPLFlBQVk7R0FFckQsTUFBTSxRQUFRLFFBQVEsUUFBUTtHQUM5Qix1QkFBdUIsT0FBTyxJQUFJO0dBQ2xDLFFBQVEsTUFBTSxLQUFLO0dBRW5CLE1BQU0sUUFBUSxRQUFRLE1BQU07R0FDNUIsSUFBSSxxQkFBcUIsT0FBTyxVQUFVLFVBQ3hDLHFCQUFxQixPQUFPLE1BQU0sT0FBTyxZQUFZO0dBRXZELElBQUksVUFBVSxRQUFRLE9BQU8sVUFBVSxVQUNyQyxNQUFNLEtBQUs7SUFBRSxPQUFPO0lBQThDO0dBQU0sQ0FBQztFQUU3RTtDQUNGO0FBQ0Y7QUFFQSxTQUFTLHFCQUNQLE9BQ0EsTUFDQSxPQUNBLGNBQ007Q0FDTixhQUFhLFNBQVMsT0FBTyxXQUFXLE9BQU8sTUFBTTtDQUNyRCxJQUFJLE1BQU0sWUFBWSxhQUFhLFFBQVEscUJBQXFCLGNBQzlELGdCQUFnQixNQUFNLGNBQWMscUJBQXFCLGNBQWMsS0FBSztBQUVoRjtBQUVBLFNBQVMsdUJBQXVCLE9BQWUsTUFBb0I7Q0FDakUsSUFBSSxRQUFRLHFCQUFxQixVQUMvQixNQUFNLElBQUksNEJBQ1IsR0FBRyxLQUFLLDBCQUEwQixxQkFBcUIsVUFDekQ7QUFFSjtBQUVBLFNBQVMsUUFBUSxNQUFjLE9BQThCO0NBQzNELE1BQU0sU0FBUztDQUNmLElBQUksTUFBTSxRQUFRLHFCQUFxQixVQUNyQyxnQkFBZ0IsTUFBTSxRQUFRLHFCQUFxQixVQUFVLEtBQUs7QUFFdEU7QUFFQSxTQUFTLGdCQUNQLE1BQ0EsTUFDQSxPQUNBLE9BQ087Q0FDUCxNQUFNLElBQUksNEJBQ1IsTUFBTSxZQUFZLElBQ2QsR0FBRyxLQUFLLFdBQVcsS0FBSyxZQUFZLFVBQ3BDLG1DQUFtQyxLQUFLLFlBQVksT0FDMUQ7QUFDRjtBQUVBLFNBQVMsU0FBUyxPQUFrRDtDQUNsRSxPQUFPLFVBQVUsUUFBUSxPQUFPLFVBQVUsWUFBWSxDQUFDLE1BQU0sUUFBUSxLQUFLO0FBQzVFIn0=
178
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXZhbGlkYXRpb24uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vc2NoZW1hLXZhbGlkYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIm5vZGU6YnVmZmVyXCI7XG5cbmltcG9ydCB7IHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4vcHJvdmlkZXItdHlwZXNcIjtcblxuLyoqXG4gKiBDYWxsZXItcHJvdmlkZWQgc2NoZW1hcyBhcmUgc2VyaWFsaXplZCwgY29waWVkLCBhbmQgcmVjdXJzaXZlbHkgbm9ybWFsaXplZCBiZWZvcmUgZGlzcGF0Y2guXG4gKiBLZWVwIHRoZXNlIGxpbWl0cyBjb21mb3J0YWJseSBhYm92ZSBub3JtYWwgZ2VuZXJhdGVkIHNjaGVtYXMgd2hpbGUgYm91bmRpbmcgdGhhdCBwcmVwcm9jZXNzaW5nXG4gKiB3ZWxsIGJlbG93IHRoZSBBUEkncyAxMCBNaUIgcmVxdWVzdC1ib2R5IGNlaWxpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBDQUxMRVJfU0NIRU1BX0xJTUlUUyA9IHtcbiAgbWF4VXRmOEJ5dGVzOiA1MTIgKiAxMDI0LFxuICBtYXhOb2RlczogMjBfMDAwLFxuICBtYXhEZXB0aDogMTI4LFxufSBhcyBjb25zdDtcblxuLy8gTGludXggcGVybWl0cyBhdCBtb3N0IDEyOCBLaUIgKE1BWF9BUkdfU1RSTEVOKSBmb3Igb25lIGFyZ3YgdmFsdWUuIHFncmlkIHVzZXMgYSA1MCUgc2FmZXR5XG4vLyBtYXJnaW4gZm9yIGV2ZXJ5IGFyZ3YtZGVsaXZlcmVkIHBheWxvYWQg4oCUIENsYXVkZSBDb2RlIC0tanNvbi1zY2hlbWEgaGVyZSBhbmQgdGhlIHN5c3RlbS1wcm9tcHRcbi8vIHRyYW5zcG9ydCAoY2xhdWRlLXNlc3Npb24pIGJvdGggZGVyaXZlIGZyb20gdGhpcyBzaW5nbGUgY29uc3RhbnQuXG5leHBvcnQgY29uc3QgQVJHVl9TQUZFX01BWF9VVEY4X0JZVEVTID0gNjQgKiAxMDI0O1xuZXhwb3J0IGNvbnN0IEFOVEhST1BJQ19TQ0hFTUFfQVJHVl9NQVhfVVRGOF9CWVRFUyA9IEFSR1ZfU0FGRV9NQVhfVVRGOF9CWVRFUztcblxuZXhwb3J0IGNsYXNzIENhbGxlclNjaGVtYVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYHFncmlkOiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gXCJDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGxlclNjaGVtYXNJbnB1dCB7XG4gIGpzb25TY2hlbWE/OiBzdHJpbmc7XG4gIHRvb2xzPzogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBpbnB1dFNjaGVtYTogdW5rbm93biB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbXBsZXhpdHlTdGF0ZSB7XG4gIHV0ZjhCeXRlczogbnVtYmVyO1xuICBub2RlczogbnVtYmVyO1xuICBzY2hlbWFzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFuZFZhbGlkYXRlQ2FsbGVyU2NoZW1hcyhpbnB1dDogQ2FsbGVyU2NoZW1hc0lucHV0KTogSnNvblZhbHVlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3RhdGU6IENvbXBsZXhpdHlTdGF0ZSA9IHtcbiAgICB1dGY4Qnl0ZXM6IDAsXG4gICAgbm9kZXM6IDAsXG4gICAgc2NoZW1hczogMCxcbiAgfTtcbiAgbGV0IG91dHB1dFNjaGVtYTogSnNvblZhbHVlIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChpbnB1dC5qc29uU2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICBhZGRVdGY4Qnl0ZXMoQnVmZmVyLmJ5dGVMZW5ndGgoaW5wdXQuanNvblNjaGVtYSwgXCJ1dGY4XCIpLCBcImpzb25TY2hlbWFcIiwgc3RhdGUpO1xuXG4gICAgbGV0IHBhcnNlZDogdW5rbm93bjtcbiAgICB0cnkge1xuICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShpbnB1dC5qc29uU2NoZW1hKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3IoXCJqc29uU2NoZW1hIG11c3QgY29udGFpbiB2YWxpZCBKU09OXCIpO1xuICAgIH1cblxuICAgIGlmICghaXNSZWNvcmQocGFyc2VkKSB8fCBwYXJzZWQudHlwZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IENhbGxlclNjaGVtYVZhbGlkYXRpb25FcnJvcignanNvblNjaGVtYSB0b3AtbGV2ZWwgdHlwZSBtdXN0IGJlIFwib2JqZWN0XCInKTtcbiAgICB9XG5cbiAgICBhZGRDb21wbGV4aXR5KHBhcnNlZCwgXCJqc29uU2NoZW1hXCIsIHN0YXRlKTtcbiAgICBzdGF0ZS5zY2hlbWFzICs9IDE7XG4gICAgb3V0cHV0U2NoZW1hID0gcGFyc2VkIGFzIEpzb25WYWx1ZTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2luZGV4LCB0b29sXSBvZiAoaW5wdXQudG9vbHMgPz8gW10pLmVudHJpZXMoKSkge1xuICAgIGFkZFRvb2xNZXRhZGF0YVV0ZjhCeXRlcyh0b29sLCBpbmRleCwgc3RhdGUpO1xuXG4gICAgY29uc3QgcGF0aCA9IGB0b29sc1ske2luZGV4fV0uaW5wdXRTY2hlbWFgO1xuICAgIGFkZENvbXBsZXhpdHkodG9vbC5pbnB1dFNjaGVtYSwgcGF0aCwgc3RhdGUsIHRydWUpO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHN0cmluZ2lmeUpzb25PclRocm93KHRvb2wuaW5wdXRTY2hlbWEsIHBhdGgpO1xuXG4gICAgLy8gYnVpbGRUb29sQ2FsbFNjaGVtYSBlbWJlZHMgdGhpcyBzZXJpYWxpemF0aW9uIGluc2lkZSBhbm90aGVyIEpTT04gc3RyaW5nLiBDaGFyZ2UgdGhlXG4gICAgLy8gZXNjYXBlZCBvdXRlci1zdHJpbmcgcmVwcmVzZW50YXRpb24gYmVmb3JlIHRoYXQgY29tcG9zZWQgZGVzY3JpcHRpb24gaXMgbWF0ZXJpYWxpemVkLlxuICAgIGFkZFV0ZjhCeXRlcyhqc29uU3RyaW5nQ29udGVudFV0ZjhCeXRlVXBwZXJCb3VuZChzZXJpYWxpemVkKSwgcGF0aCwgc3RhdGUpO1xuICAgIHN0YXRlLnNjaGVtYXMgKz0gMTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXRTY2hlbWE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVBbmRWYWxpZGF0ZURpc3BhdGNoU2NoZW1hKFxuICBzY2hlbWE6IHVua25vd24sXG4gIHByb3ZpZGVyPzogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnlKc29uT3JUaHJvdyhzY2hlbWEsIFwiZGlzcGF0Y2ggc2NoZW1hXCIpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aChzZXJpYWxpemVkLCBcInV0ZjhcIik7XG4gIGlmIChieXRlTGVuZ3RoID4gQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4VXRmOEJ5dGVzKSB7XG4gICAgdGhyb3cgbmV3IENhbGxlclNjaGVtYVZhbGlkYXRpb25FcnJvcihcbiAgICAgIGBkaXNwYXRjaCBzY2hlbWEgZXhjZWVkcyBVVEYtOCBieXRlIGxpbWl0IG9mICR7Q0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4VXRmOEJ5dGVzfWAsXG4gICAgKTtcbiAgfVxuICBpZiAocHJvdmlkZXIgPT09IFwiYW50aHJvcGljXCIpIHtcbiAgICBhc3NlcnRBbnRocm9waWNTY2hlbWFBcmd2U2l6ZShzZXJpYWxpemVkKTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QW50aHJvcGljU2NoZW1hQXJndlNpemUoanNvblNjaGVtYTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChqc29uU2NoZW1hLCBcInV0ZjhcIikgPiBBTlRIUk9QSUNfU0NIRU1BX0FSR1ZfTUFYX1VURjhfQllURVMpIHtcbiAgICB0aHJvdyBuZXcgQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yKFxuICAgICAgYEFudGhyb3BpYyBkaXNwYXRjaCBzY2hlbWEgZXhjZWVkcyBhcmd2IFVURi04IGJ5dGUgbGltaXQgb2YgJHtBTlRIUk9QSUNfU0NIRU1BX0FSR1ZfTUFYX1VURjhfQllURVN9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUpzb25PclRocm93KHZhbHVlOiB1bmtub3duLCBzdWJqZWN0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgc2VyaWFsaXplZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHNlcmlhbGl6ZWQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3IoYCR7c3ViamVjdH0gbXVzdCBiZSBKU09OLXNlcmlhbGl6YWJsZWApO1xuICB9XG4gIGlmIChzZXJpYWxpemVkID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yKGAke3N1YmplY3R9IG11c3QgYmUgSlNPTi1zZXJpYWxpemFibGVgKTtcbiAgfVxuICByZXR1cm4gc2VyaWFsaXplZDtcbn1cblxuZnVuY3Rpb24gYWRkVXRmOEJ5dGVzKGJ5dGVMZW5ndGg6IG51bWJlciwgcGF0aDogc3RyaW5nLCBzdGF0ZTogQ29tcGxleGl0eVN0YXRlKTogdm9pZCB7XG4gIHN0YXRlLnV0ZjhCeXRlcyArPSBieXRlTGVuZ3RoO1xuICBpZiAoc3RhdGUudXRmOEJ5dGVzID4gQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4VXRmOEJ5dGVzKSB7XG4gICAgdGhyb3dMaW1pdEVycm9yKHBhdGgsIFwiVVRGLTggYnl0ZVwiLCBDQUxMRVJfU0NIRU1BX0xJTUlUUy5tYXhVdGY4Qnl0ZXMsIHN0YXRlKTtcbiAgfVxufVxuXG5jb25zdCBUT09MX0RFU0NSSVBUSU9OX0VOVFJZX1BSRUZJWCA9IFwiLSBcIjtcbmNvbnN0IFRPT0xfREVTQ1JJUFRJT05fTkFNRV9TRVBBUkFUT1IgPSBcIjogXCI7XG5jb25zdCBUT09MX0RFU0NSSVBUSU9OX0lOUFVUX1NDSEVNQV9QUkVGSVggPSBcIlxcbiAgaW5wdXRTY2hlbWE6IFwiO1xuY29uc3QgVE9PTF9ERVNDUklQVElPTl9FTlRSWV9TRVBBUkFUT1IgPSBcIlxcblwiO1xuXG5mdW5jdGlvbiBhZGRUb29sTWV0YWRhdGFVdGY4Qnl0ZXMoXG4gIHRvb2w6IE5vbk51bGxhYmxlPENhbGxlclNjaGVtYXNJbnB1dFtcInRvb2xzXCJdPltudW1iZXJdLFxuICBpbmRleDogbnVtYmVyLFxuICBzdGF0ZTogQ29tcGxleGl0eVN0YXRlLFxuKTogdm9pZCB7XG4gIGNvbnN0IHRvb2xQYXRoID0gYHRvb2xzWyR7aW5kZXh9XWA7XG5cbiAgLy8gYnVpbGRUb29sQ2FsbFNjaGVtYSBwbGFjZXMgZXZlcnkgdG9vbCBuYW1lIGluIGJvdGggdGhlIGVudW0gYW5kIHRoZSBodW1hbi1yZWFkYWJsZSB0b29sXG4gIC8vIGRlc2NyaXB0aW9uLiBDb3VudCBib3RoIGVzY2FwZWQgb2NjdXJyZW5jZXMsIHBsdXMgdGhlIGVudW0ncyBKU09OIHN0cmluZyBkZWxpbWl0ZXJzLlxuICBjb25zdCBlbmNvZGVkTmFtZUJ5dGVzID0ganNvblN0cmluZ0NvbnRlbnRVdGY4Qnl0ZVVwcGVyQm91bmQodG9vbC5uYW1lKTtcbiAgYWRkVXRmOEJ5dGVzKGVuY29kZWROYW1lQnl0ZXMgKiAyICsgMiwgYCR7dG9vbFBhdGh9Lm5hbWVgLCBzdGF0ZSk7XG5cbiAgaWYgKHRvb2wuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGFkZFV0ZjhCeXRlcyhcbiAgICAgIGpzb25TdHJpbmdDb250ZW50VXRmOEJ5dGVVcHBlckJvdW5kKHRvb2wuZGVzY3JpcHRpb24pLFxuICAgICAgYCR7dG9vbFBhdGh9LmRlc2NyaXB0aW9uYCxcbiAgICAgIHN0YXRlLFxuICAgICk7XG4gIH1cblxuICAvLyBQZXItdG9vbCBmcmFtaW5nIGFsc28gZ3Jvd3Mgd2l0aCB0aGUgbnVtYmVyIG9mIHRvb2xzIGV2ZW4gd2hlbiBhbGwgY2FsbGVyIHN0cmluZ3MgYXJlIGVtcHR5LlxuICAvLyBJbmNsdWRlIGJvdGggdGhlIHRvb2xEZXNjcmlwdGlvbnMgam9pbiBzZXBhcmF0b3IgYW5kIHRoZSBlbnVtIGNvbW1hIGFmdGVyIHRoZSBmaXJzdCBlbnRyeS5cbiAgY29uc3QgZnJhbWluZ0J5dGVzID1cbiAgICBqc29uU3RyaW5nQ29udGVudFV0ZjhCeXRlVXBwZXJCb3VuZChUT09MX0RFU0NSSVBUSU9OX0VOVFJZX1BSRUZJWCkgK1xuICAgIGpzb25TdHJpbmdDb250ZW50VXRmOEJ5dGVVcHBlckJvdW5kKFRPT0xfREVTQ1JJUFRJT05fTkFNRV9TRVBBUkFUT1IpICtcbiAgICBqc29uU3RyaW5nQ29udGVudFV0ZjhCeXRlVXBwZXJCb3VuZChUT09MX0RFU0NSSVBUSU9OX0lOUFVUX1NDSEVNQV9QUkVGSVgpICtcbiAgICAoaW5kZXggPT09IDAgPyAwIDoganNvblN0cmluZ0NvbnRlbnRVdGY4Qnl0ZVVwcGVyQm91bmQoVE9PTF9ERVNDUklQVElPTl9FTlRSWV9TRVBBUkFUT1IpICsgMSk7XG4gIGFkZFV0ZjhCeXRlcyhmcmFtaW5nQnl0ZXMsIHRvb2xQYXRoLCBzdGF0ZSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBVVEYtOCBieXRlIGNvdW50IGZvciBhIHN0cmluZyB3aGVuIGl0IGJlY29tZXMgSlNPTiBzdHJpbmcgY29udGVudCxcbiAqIHdpdGhvdXQgYWxsb2NhdGluZyB0aGUgZXNjYXBlZCByZXByZXNlbnRhdGlvbi4gSlNPTi5zdHJpbmdpZnkgdXNlcyBzaG9ydCB0d28tYnl0ZSBlc2NhcGVzIGZvclxuICogZml2ZSBjb250cm9sIGNoYXJhY3RlcnM7IGNvdW50aW5nIGV2ZXJ5IGNvbnRyb2wgY2hhcmFjdGVyIGFzIGEgc2l4LWJ5dGUgYFxcdTAwWFhgIGVzY2FwZSBrZWVwc1xuICogdGhpcyBhbiB1cHBlciBib3VuZCB3aGlsZSBhdm9pZGluZyBhIHNlY29uZCBsYXJnZSB0ZW1wb3Jhcnkgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBqc29uU3RyaW5nQ29udGVudFV0ZjhCeXRlVXBwZXJCb3VuZCh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IGJ5dGVzID0gMDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWUubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgY29uc3QgY29kZVVuaXQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KTtcblxuICAgIGlmIChjb2RlVW5pdCA9PT0gMHgyMiB8fCBjb2RlVW5pdCA9PT0gMHg1Yykge1xuICAgICAgYnl0ZXMgKz0gMjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoY29kZVVuaXQgPD0gMHgxZikge1xuICAgICAgYnl0ZXMgKz0gNjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoY29kZVVuaXQgPj0gMHhkODAwICYmIGNvZGVVbml0IDw9IDB4ZGJmZikge1xuICAgICAgY29uc3QgbmV4dENvZGVVbml0ID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCArIDEpO1xuICAgICAgaWYgKG5leHRDb2RlVW5pdCA+PSAweGRjMDAgJiYgbmV4dENvZGVVbml0IDw9IDB4ZGZmZikge1xuICAgICAgICBieXRlcyArPSA0O1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2VsbC1mb3JtZWQgSlNPTi5zdHJpbmdpZnkgZXNjYXBlcyBsb25lIHN1cnJvZ2F0ZXMgYXMgYFxcdVhYWFhgLlxuICAgICAgICBieXRlcyArPSA2O1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChjb2RlVW5pdCA+PSAweGRjMDAgJiYgY29kZVVuaXQgPD0gMHhkZmZmKSB7XG4gICAgICBieXRlcyArPSA2O1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYnl0ZXMgKz0gY29kZVVuaXQgPD0gMHg3ZiA/IDEgOiBjb2RlVW5pdCA8PSAweDdmZiA/IDIgOiAzO1xuICB9XG5cbiAgcmV0dXJuIGJ5dGVzO1xufVxuXG5mdW5jdGlvbiBhZGRDb21wbGV4aXR5KFxuICByb290OiB1bmtub3duLFxuICBwYXRoOiBzdHJpbmcsXG4gIHN0YXRlOiBDb21wbGV4aXR5U3RhdGUsXG4gIHByZWNoZWNrVXRmOEJ5dGVzID0gZmFsc2UsXG4pOiB2b2lkIHtcbiAgY29uc3QgcmF3VXRmOEJ5dGVzID0geyB2YWx1ZTogMCB9O1xuICBpZiAocHJlY2hlY2tVdGY4Qnl0ZXMgJiYgdHlwZW9mIHJvb3QgPT09IFwic3RyaW5nXCIpIHtcbiAgICBhZGRSYXdVdGY4TG93ZXJCb3VuZChyb290LCBwYXRoLCBzdGF0ZSwgcmF3VXRmOEJ5dGVzKTtcbiAgfVxuICBhZGROb2RlKHBhdGgsIHN0YXRlKTtcbiAgaWYgKHJvb3QgPT09IG51bGwgfHwgdHlwZW9mIHJvb3QgIT09IFwib2JqZWN0XCIpIHJldHVybjtcblxuICBjb25zdCBzdGFjazogQXJyYXk8eyB2YWx1ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW107IGRlcHRoOiBudW1iZXIgfT4gPSBbXG4gICAgeyB2YWx1ZTogcm9vdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXSwgZGVwdGg6IDAgfSxcbiAgXTtcblxuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzdGFjay5wb3AoKSE7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudC52YWx1ZSkpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjdXJyZW50LnZhbHVlLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICBjb25zdCBkZXB0aCA9IGN1cnJlbnQuZGVwdGggKyAxO1xuICAgICAgICBhc3NlcnREZXB0aFdpdGhpbkxpbWl0KGRlcHRoLCBwYXRoKTtcbiAgICAgICAgYWRkTm9kZShwYXRoLCBzdGF0ZSk7XG5cbiAgICAgICAgY29uc3QgY2hpbGQgPSBjdXJyZW50LnZhbHVlW2luZGV4XTtcbiAgICAgICAgaWYgKHByZWNoZWNrVXRmOEJ5dGVzICYmIHR5cGVvZiBjaGlsZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGFkZFJhd1V0ZjhMb3dlckJvdW5kKGNoaWxkLCBwYXRoLCBzdGF0ZSwgcmF3VXRmOEJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGQgIT09IG51bGwgJiYgdHlwZW9mIGNoaWxkID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgc3RhY2sucHVzaCh7IHZhbHVlOiBjaGlsZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXSwgZGVwdGggfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGN1cnJlbnQudmFsdWUpIHtcbiAgICAgIGlmICghT2JqZWN0Lmhhc093bihjdXJyZW50LnZhbHVlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIGlmIChwcmVjaGVja1V0ZjhCeXRlcykge1xuICAgICAgICBhZGRSYXdVdGY4TG93ZXJCb3VuZChrZXksIHBhdGgsIHN0YXRlLCByYXdVdGY4Qnl0ZXMpO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVwdGggPSBjdXJyZW50LmRlcHRoICsgMTtcbiAgICAgIGFzc2VydERlcHRoV2l0aGluTGltaXQoZGVwdGgsIHBhdGgpO1xuICAgICAgYWRkTm9kZShwYXRoLCBzdGF0ZSk7XG5cbiAgICAgIGNvbnN0IGNoaWxkID0gY3VycmVudC52YWx1ZVtrZXldO1xuICAgICAgaWYgKHByZWNoZWNrVXRmOEJ5dGVzICYmIHR5cGVvZiBjaGlsZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBhZGRSYXdVdGY4TG93ZXJCb3VuZChjaGlsZCwgcGF0aCwgc3RhdGUsIHJhd1V0ZjhCeXRlcyk7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQgIT09IG51bGwgJiYgdHlwZW9mIGNoaWxkID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHN0YWNrLnB1c2goeyB2YWx1ZTogY2hpbGQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW10sIGRlcHRoIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRSYXdVdGY4TG93ZXJCb3VuZChcbiAgdmFsdWU6IHN0cmluZyxcbiAgcGF0aDogc3RyaW5nLFxuICBzdGF0ZTogQ29tcGxleGl0eVN0YXRlLFxuICByYXdVdGY4Qnl0ZXM6IHsgdmFsdWU6IG51bWJlciB9LFxuKTogdm9pZCB7XG4gIHJhd1V0ZjhCeXRlcy52YWx1ZSArPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgXCJ1dGY4XCIpO1xuICBpZiAoc3RhdGUudXRmOEJ5dGVzICsgcmF3VXRmOEJ5dGVzLnZhbHVlID4gQ0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4VXRmOEJ5dGVzKSB7XG4gICAgdGhyb3dMaW1pdEVycm9yKHBhdGgsIFwiVVRGLTggYnl0ZVwiLCBDQUxMRVJfU0NIRU1BX0xJTUlUUy5tYXhVdGY4Qnl0ZXMsIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnREZXB0aFdpdGhpbkxpbWl0KGRlcHRoOiBudW1iZXIsIHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoZGVwdGggPiBDQUxMRVJfU0NIRU1BX0xJTUlUUy5tYXhEZXB0aCkge1xuICAgIHRocm93IG5ldyBDYWxsZXJTY2hlbWFWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBgJHtwYXRofSBleGNlZWRzIGRlcHRoIGxpbWl0IG9mICR7Q0FMTEVSX1NDSEVNQV9MSU1JVFMubWF4RGVwdGh9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZE5vZGUocGF0aDogc3RyaW5nLCBzdGF0ZTogQ29tcGxleGl0eVN0YXRlKTogdm9pZCB7XG4gIHN0YXRlLm5vZGVzICs9IDE7XG4gIGlmIChzdGF0ZS5ub2RlcyA+IENBTExFUl9TQ0hFTUFfTElNSVRTLm1heE5vZGVzKSB7XG4gICAgdGhyb3dMaW1pdEVycm9yKHBhdGgsIFwibm9kZVwiLCBDQUxMRVJfU0NIRU1BX0xJTUlUUy5tYXhOb2Rlcywgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRocm93TGltaXRFcnJvcihcbiAgcGF0aDogc3RyaW5nLFxuICBraW5kOiBcIlVURi04IGJ5dGVcIiB8IFwibm9kZVwiLFxuICBsaW1pdDogbnVtYmVyLFxuICBzdGF0ZTogQ29tcGxleGl0eVN0YXRlLFxuKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgQ2FsbGVyU2NoZW1hVmFsaWRhdGlvbkVycm9yKFxuICAgIHN0YXRlLnNjaGVtYXMgPT09IDBcbiAgICAgID8gYCR7cGF0aH0gZXhjZWVkcyAke2tpbmR9IGxpbWl0IG9mICR7bGltaXR9YFxuICAgICAgOiBgY2FsbGVyIHNjaGVtYXMgZXhjZWVkIGFnZ3JlZ2F0ZSAke2tpbmR9IGxpbWl0IG9mICR7bGltaXR9YCxcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNSZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBU0EsTUFBYSx1QkFBdUI7Q0FDbEMsY0FBYyxNQUFNO0NBQ3BCLFVBQVU7Q0FDVixVQUFVO0FBQ1o7QUFLQSxNQUFhLDJCQUEyQixLQUFLO0FBQzdDLE1BQWEsdUNBQXVDO0FBRXBELElBQWEsOEJBQWIs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
@@ -0,0 +1,144 @@
1
+ import os from "node:os";
2
+ //#region src/utils/providers/openai/openai-backend-protocol.ts
3
+ const CHATGPT_CODEX_RESPONSES_URL = "https://chatgpt.com/backend-api/codex/responses";
4
+ const CODEX_CLI_ORIGINATOR = "codex_cli_rs";
5
+ const CODEX_CLI_VERSION = "0.147.0";
6
+ function codexPlatform() {
7
+ const names = {
8
+ darwin: "Mac OS",
9
+ linux: "Linux",
10
+ win32: "Windows"
11
+ };
12
+ const terminal = process.env.TERM_PROGRAM;
13
+ const terminalVersion = process.env.TERM_PROGRAM_VERSION;
14
+ return {
15
+ osType: names[process.platform] ?? process.platform,
16
+ osVersion: os.release(),
17
+ architecture: process.arch,
18
+ terminal: terminal ? `${terminal}${terminalVersion ? `/${terminalVersion}` : ""}` : "unknown"
19
+ };
20
+ }
21
+ /** Matches the platform/terminal suffix emitted by the pinned Rust Codex CLI. */
22
+ function codexCliUserAgent(platform = codexPlatform()) {
23
+ return `codex_cli_rs/${CODEX_CLI_VERSION} (${platform.osType} ${platform.osVersion}; ${platform.architecture}) ${platform.terminal}`;
24
+ }
25
+ function buildOpenAIResponsesRequest(options) {
26
+ const tools = options.tools ? [...options.tools] : [];
27
+ if (options.imageGeneration) tools.push(options.imageGeneration === true ? { type: "image_generation" } : {
28
+ type: "image_generation",
29
+ ...options.imageGeneration
30
+ });
31
+ const text = options.verbosity || options.outputSchema ? {
32
+ ...options.verbosity ? { verbosity: options.verbosity } : {},
33
+ ...options.outputSchema ? { format: {
34
+ type: "json_schema",
35
+ strict: true,
36
+ schema: options.outputSchema.schema,
37
+ name: options.outputSchema.name ?? "codex_output_schema"
38
+ } } : {}
39
+ } : void 0;
40
+ return {
41
+ model: options.model,
42
+ ...options.instructions ? { instructions: options.instructions } : {},
43
+ input: [...options.history],
44
+ ...tools.length ? { tools } : {},
45
+ tool_choice: options.toolChoice ?? "auto",
46
+ parallel_tool_calls: options.parallelToolCalls ?? true,
47
+ reasoning: options.reasoning ?? null,
48
+ store: false,
49
+ stream: true,
50
+ include: ["reasoning.encrypted_content"],
51
+ ...options.serviceTier ? { service_tier: options.serviceTier } : {},
52
+ ...options.promptCacheKey ? { prompt_cache_key: options.promptCacheKey } : {},
53
+ ...text ? { text } : {}
54
+ };
55
+ }
56
+ function buildCodexIdentityHeaders(accessToken, accountId, correlation) {
57
+ return {
58
+ Accept: "text/event-stream",
59
+ Authorization: `Bearer ${accessToken}`,
60
+ "ChatGPT-Account-ID": accountId,
61
+ "Content-Type": "application/json",
62
+ originator: CODEX_CLI_ORIGINATOR,
63
+ "User-Agent": codexCliUserAgent(),
64
+ ...correlation?.sessionId ? { "session-id": correlation.sessionId } : {},
65
+ ...correlation?.threadId ? { "thread-id": correlation.threadId } : {},
66
+ ...correlation?.clientRequestId ? { "x-client-request-id": correlation.clientRequestId } : {}
67
+ };
68
+ }
69
+ var OpenAIProtocolError = class extends Error {
70
+ code;
71
+ status;
72
+ retryAfterMs;
73
+ constructor(message, code, status, retryAfterMs) {
74
+ super(message);
75
+ this.code = code;
76
+ this.status = status;
77
+ this.retryAfterMs = retryAfterMs;
78
+ this.name = "OpenAIProtocolError";
79
+ }
80
+ };
81
+ function usageFrom(value) {
82
+ if (!value || typeof value !== "object") return void 0;
83
+ const usage = value;
84
+ const inputDetails = usage.input_tokens_details ?? {};
85
+ const outputDetails = usage.output_tokens_details ?? {};
86
+ return {
87
+ inputTokens: Number(usage.input_tokens ?? 0),
88
+ cachedInputTokens: Number(inputDetails.cached_tokens ?? 0),
89
+ outputTokens: Number(usage.output_tokens ?? 0),
90
+ reasoningTokens: Number(outputDetails.reasoning_tokens ?? 0),
91
+ totalTokens: Number(usage.total_tokens ?? 0)
92
+ };
93
+ }
94
+ function normalizeOpenAIEvent(raw) {
95
+ if (!raw || typeof raw !== "object") return void 0;
96
+ const event = raw;
97
+ const type = String(event.type ?? "");
98
+ if (type === "response.created") {
99
+ const response = event.response;
100
+ return {
101
+ type: "created",
102
+ ...response?.id ? { responseId: String(response.id) } : {}
103
+ };
104
+ }
105
+ if (type === "response.output_text.delta" && typeof event.delta === "string") return {
106
+ type: "text-delta",
107
+ text: event.delta
108
+ };
109
+ if ((type === "response.output_item.added" || type === "response.output_item.done") && event.item && typeof event.item === "object") {
110
+ const item = event.item;
111
+ if (item.type === "image_generation_call" && typeof item.result === "string") return {
112
+ type: "image",
113
+ ...typeof item.id === "string" ? { id: item.id } : {},
114
+ base64: item.result,
115
+ mimeType: "image/png",
116
+ ...typeof item.revised_prompt === "string" ? { revisedPrompt: item.revised_prompt } : typeof item.revisedPrompt === "string" ? { revisedPrompt: item.revisedPrompt } : {}
117
+ };
118
+ return {
119
+ type: "output-item",
120
+ item
121
+ };
122
+ }
123
+ if (type === "response.completed") {
124
+ const response = event.response ?? {};
125
+ return {
126
+ type: "completed",
127
+ responseId: String(response.id ?? ""),
128
+ ...response.usage ? { usage: usageFrom(response.usage) } : {},
129
+ ...typeof response.model === "string" ? { model: response.model } : {}
130
+ };
131
+ }
132
+ if (type === "error" || type === "response.failed" || type === "response.incomplete") {
133
+ const source = event.error ?? event.response ?? event;
134
+ const nested = source.error ?? source;
135
+ return {
136
+ type: "error",
137
+ error: new OpenAIProtocolError(String(nested.message ?? `OpenAI stream ended with ${type}`), typeof nested.code === "string" ? nested.code : void 0)
138
+ };
139
+ }
140
+ }
141
+ //#endregion
142
+ export { CHATGPT_CODEX_RESPONSES_URL, CODEX_CLI_ORIGINATOR, CODEX_CLI_VERSION, OpenAIProtocolError, buildCodexIdentityHeaders, buildOpenAIResponsesRequest, codexCliUserAgent, normalizeOpenAIEvent };
143
+
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLWJhY2tlbmQtcHJvdG9jb2wuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Byb3ZpZGVycy9vcGVuYWkvb3BlbmFpLWJhY2tlbmQtcHJvdG9jb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCI7XG5cbmV4cG9ydCBjb25zdCBDSEFUR1BUX0NPREVYX1JFU1BPTlNFU19VUkwgPVxuICBcImh0dHBzOi8vY2hhdGdwdC5jb20vYmFja2VuZC1hcGkvY29kZXgvcmVzcG9uc2VzXCIgYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBDT0RFWF9DTElfT1JJR0lOQVRPUiA9IFwiY29kZXhfY2xpX3JzXCIgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgQ09ERVhfQ0xJX1ZFUlNJT04gPSBcIjAuMTQ3LjBcIiBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBDb2RleFVzZXJBZ2VudFBsYXRmb3JtIHtcbiAgb3NUeXBlOiBzdHJpbmc7XG4gIG9zVmVyc2lvbjogc3RyaW5nO1xuICBhcmNoaXRlY3R1cmU6IHN0cmluZztcbiAgdGVybWluYWw6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gY29kZXhQbGF0Zm9ybSgpOiBDb2RleFVzZXJBZ2VudFBsYXRmb3JtIHtcbiAgY29uc3QgbmFtZXM6IFBhcnRpYWw8UmVjb3JkPE5vZGVKUy5QbGF0Zm9ybSwgc3RyaW5nPj4gPSB7XG4gICAgZGFyd2luOiBcIk1hYyBPU1wiLFxuICAgIGxpbnV4OiBcIkxpbnV4XCIsXG4gICAgd2luMzI6IFwiV2luZG93c1wiLFxuICB9O1xuICBjb25zdCB0ZXJtaW5hbCA9IHByb2Nlc3MuZW52LlRFUk1fUFJPR1JBTTtcbiAgY29uc3QgdGVybWluYWxWZXJzaW9uID0gcHJvY2Vzcy5lbnYuVEVSTV9QUk9HUkFNX1ZFUlNJT047XG4gIHJldHVybiB7XG4gICAgb3NUeXBlOiBuYW1lc1twcm9jZXNzLnBsYXRmb3JtXSA/PyBwcm9jZXNzLnBsYXRmb3JtLFxuICAgIG9zVmVyc2lvbjogb3MucmVsZWFzZSgpLFxuICAgIGFyY2hpdGVjdHVyZTogcHJvY2Vzcy5hcmNoLFxuICAgIHRlcm1pbmFsOiB0ZXJtaW5hbCA/IGAke3Rlcm1pbmFsfSR7dGVybWluYWxWZXJzaW9uID8gYC8ke3Rlcm1pbmFsVmVyc2lvbn1gIDogXCJcIn1gIDogXCJ1bmtub3duXCIsXG4gIH07XG59XG5cbi8qKiBNYXRjaGVzIHRoZSBwbGF0Zm9ybS90ZXJtaW5hbCBzdWZmaXggZW1pdHRlZCBieSB0aGUgcGlubmVkIFJ1c3QgQ29kZXggQ0xJLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZGV4Q2xpVXNlckFnZW50KHBsYXRmb3JtOiBDb2RleFVzZXJBZ2VudFBsYXRmb3JtID0gY29kZXhQbGF0Zm9ybSgpKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBjb2RleF9jbGlfcnMvJHtDT0RFWF9DTElfVkVSU0lPTn0gKCR7cGxhdGZvcm0ub3NUeXBlfSAke3BsYXRmb3JtLm9zVmVyc2lvbn07ICR7cGxhdGZvcm0uYXJjaGl0ZWN0dXJlfSkgJHtwbGF0Zm9ybS50ZXJtaW5hbH1gO1xufVxuXG5leHBvcnQgdHlwZSBKc29uVmFsdWUgPVxuICB8IG51bGxcbiAgfCBib29sZWFuXG4gIHwgbnVtYmVyXG4gIHwgc3RyaW5nXG4gIHwgSnNvblZhbHVlW11cbiAgfCB7IFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZSB9O1xuXG4vKiogUmF3IFJlc3BvbnNlcyBBUEkgaXRlbXMuIEtlZXBpbmcgdGhlc2Ugb3BhcXVlIHByZXNlcnZlcyB0aGUgY29tcGxldGUgY29udmVyc2F0aW9uIGhpc3RvcnkuICovXG5leHBvcnQgdHlwZSBPcGVuQUlSZXNwb25zZUl0ZW0gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuQUlPdXRwdXRTY2hlbWEge1xuICBuYW1lPzogc3RyaW5nO1xuICBzY2hlbWE6IEpzb25WYWx1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuQUlSZXNwb25zZXNPcHRpb25zIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgaW5zdHJ1Y3Rpb25zPzogc3RyaW5nO1xuICBoaXN0b3J5OiByZWFkb25seSBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbHM/OiByZWFkb25seSBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbENob2ljZT86IHN0cmluZyB8IE9wZW5BSVJlc3BvbnNlSXRlbTtcbiAgcGFyYWxsZWxUb29sQ2FsbHM/OiBib29sZWFuO1xuICByZWFzb25pbmc/OiB7XG4gICAgZWZmb3J0PzogXCJub25lXCIgfCBcIm1pbmltYWxcIiB8IFwibG93XCIgfCBcIm1lZGl1bVwiIHwgXCJoaWdoXCIgfCBcInhoaWdoXCI7XG4gICAgc3VtbWFyeT86IFwiYXV0b1wiIHwgXCJjb25jaXNlXCIgfCBcImRldGFpbGVkXCI7XG4gIH07XG4gIHZlcmJvc2l0eT86IFwibG93XCIgfCBcIm1lZGl1bVwiIHwgXCJoaWdoXCI7XG4gIHNlcnZpY2VUaWVyPzogc3RyaW5nO1xuICBwcm9tcHRDYWNoZUtleT86IHN0cmluZztcbiAgb3V0cHV0U2NoZW1hPzogT3BlbkFJT3V0cHV0U2NoZW1hO1xuICBpbWFnZUdlbmVyYXRpb24/OiBib29sZWFuIHwgT3BlbkFJUmVzcG9uc2VJdGVtO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSVJlc3BvbnNlc1JlcXVlc3Qge1xuICBtb2RlbDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIGlucHV0OiBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbHM/OiBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbF9jaG9pY2U6IHN0cmluZyB8IE9wZW5BSVJlc3BvbnNlSXRlbTtcbiAgcGFyYWxsZWxfdG9vbF9jYWxsczogYm9vbGVhbjtcbiAgcmVhc29uaW5nOiBPcGVuQUlSZXNwb25zZXNPcHRpb25zW1wicmVhc29uaW5nXCJdIHwgbnVsbDtcbiAgc3RvcmU6IGZhbHNlO1xuICBzdHJlYW06IHRydWU7XG4gIGluY2x1ZGU6IHN0cmluZ1tdO1xuICBzZXJ2aWNlX3RpZXI/OiBzdHJpbmc7XG4gIHByb21wdF9jYWNoZV9rZXk/OiBzdHJpbmc7XG4gIHRleHQ/OiB7XG4gICAgdmVyYm9zaXR5PzogXCJsb3dcIiB8IFwibWVkaXVtXCIgfCBcImhpZ2hcIjtcbiAgICBmb3JtYXQ/OiB7XG4gICAgICB0eXBlOiBcImpzb25fc2NoZW1hXCI7XG4gICAgICBzdHJpY3Q6IHRydWU7XG4gICAgICBzY2hlbWE6IEpzb25WYWx1ZTtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPcGVuQUlSZXNwb25zZXNSZXF1ZXN0KFxuICBvcHRpb25zOiBPcGVuQUlSZXNwb25zZXNPcHRpb25zLFxuKTogT3BlbkFJUmVzcG9uc2VzUmVxdWVzdCB7XG4gIGNvbnN0IHRvb2xzID0gb3B0aW9ucy50b29scyA/IFsuLi5vcHRpb25zLnRvb2xzXSA6IFtdO1xuICBpZiAob3B0aW9ucy5pbWFnZUdlbmVyYXRpb24pIHtcbiAgICB0b29scy5wdXNoKFxuICAgICAgb3B0aW9ucy5pbWFnZUdlbmVyYXRpb24gPT09IHRydWVcbiAgICAgICAgPyB7IHR5cGU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiIH1cbiAgICAgICAgOiB7IHR5cGU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiLCAuLi5vcHRpb25zLmltYWdlR2VuZXJhdGlvbiB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0ZXh0ID1cbiAgICBvcHRpb25zLnZlcmJvc2l0eSB8fCBvcHRpb25zLm91dHB1dFNjaGVtYVxuICAgICAgPyB7XG4gICAgICAgICAgLi4uKG9wdGlvbnMudmVyYm9zaXR5ID8geyB2ZXJib3NpdHk6IG9wdGlvbnMudmVyYm9zaXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbnMub3V0cHV0U2NoZW1hXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwianNvbl9zY2hlbWFcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHN0cmljdDogdHJ1ZSBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHNjaGVtYTogb3B0aW9ucy5vdXRwdXRTY2hlbWEuc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5vdXRwdXRTY2hlbWEubmFtZSA/PyBcImNvZGV4X291dHB1dF9zY2hlbWFcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICAuLi4ob3B0aW9ucy5pbnN0cnVjdGlvbnMgPyB7IGluc3RydWN0aW9uczogb3B0aW9ucy5pbnN0cnVjdGlvbnMgfSA6IHt9KSxcbiAgICAvLyBDb3B5IHRoZSBhcnJheSwgbm90IGl0cyBpdGVtczogcmF3IGl0ZW1zIG11c3QgYXJyaXZlIGJ5dGUtZm9yLWJ5dGUgZXF1aXZhbGVudC5cbiAgICBpbnB1dDogWy4uLm9wdGlvbnMuaGlzdG9yeV0sXG4gICAgLi4uKHRvb2xzLmxlbmd0aCA/IHsgdG9vbHMgfSA6IHt9KSxcbiAgICB0b29sX2Nob2ljZTogb3B0aW9ucy50b29sQ2hvaWNlID8/IFwiYXV0b1wiLFxuICAgIHBhcmFsbGVsX3Rvb2xfY2FsbHM6IG9wdGlvbnMucGFyYWxsZWxUb29sQ2FsbHMgPz8gdHJ1ZSxcbiAgICByZWFzb25pbmc6IG9wdGlvbnMucmVhc29uaW5nID8/IG51bGwsXG4gICAgc3RvcmU6IGZhbHNlLFxuICAgIHN0cmVhbTogdHJ1ZSxcbiAgICBpbmNsdWRlOiBbXCJyZWFzb25pbmcuZW5jcnlwdGVkX2NvbnRlbnRcIl0sXG4gICAgLi4uKG9wdGlvbnMuc2VydmljZVRpZXIgPyB7IHNlcnZpY2VfdGllcjogb3B0aW9ucy5zZXJ2aWNlVGllciB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLnByb21wdENhY2hlS2V5ID8geyBwcm9tcHRfY2FjaGVfa2V5OiBvcHRpb25zLnByb21wdENhY2hlS2V5IH0gOiB7fSksXG4gICAgLi4uKHRleHQgPyB7IHRleHQgfSA6IHt9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29kZXhJZGVudGl0eUhlYWRlcnMoXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIGFjY291bnRJZDogc3RyaW5nLFxuICBjb3JyZWxhdGlvbj86IHsgc2Vzc2lvbklkPzogc3RyaW5nOyB0aHJlYWRJZD86IHN0cmluZzsgY2xpZW50UmVxdWVzdElkPzogc3RyaW5nIH0sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIHtcbiAgICBBY2NlcHQ6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICBcIkNoYXRHUFQtQWNjb3VudC1JRFwiOiBhY2NvdW50SWQsXG4gICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgb3JpZ2luYXRvcjogQ09ERVhfQ0xJX09SSUdJTkFUT1IsXG4gICAgXCJVc2VyLUFnZW50XCI6IGNvZGV4Q2xpVXNlckFnZW50KCksXG4gICAgLi4uKGNvcnJlbGF0aW9uPy5zZXNzaW9uSWQgPyB7IFwic2Vzc2lvbi1pZFwiOiBjb3JyZWxhdGlvbi5zZXNzaW9uSWQgfSA6IHt9KSxcbiAgICAuLi4oY29ycmVsYXRpb24/LnRocmVhZElkID8geyBcInRocmVhZC1pZFwiOiBjb3JyZWxhdGlvbi50aHJlYWRJZCB9IDoge30pLFxuICAgIC4uLihjb3JyZWxhdGlvbj8uY2xpZW50UmVxdWVzdElkID8geyBcIngtY2xpZW50LXJlcXVlc3QtaWRcIjogY29ycmVsYXRpb24uY2xpZW50UmVxdWVzdElkIH0gOiB7fSksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkFJVXNhZ2Uge1xuICBpbnB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICBvdXRwdXRUb2tlbnM6IG51bWJlcjtcbiAgcmVhc29uaW5nVG9rZW5zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIE9wZW5BSU5vcm1hbGl6ZWRFdmVudCA9XG4gIHwgeyB0eXBlOiBcImNyZWF0ZWRcIjsgcmVzcG9uc2VJZD86IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcInRleHQtZGVsdGFcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCB7IHR5cGU6IFwiaW1hZ2VcIjsgaWQ/OiBzdHJpbmc7IGJhc2U2NDogc3RyaW5nOyBtaW1lVHlwZTogXCJpbWFnZS9wbmdcIjsgcmV2aXNlZFByb21wdD86IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcIm91dHB1dC1pdGVtXCI7IGl0ZW06IE9wZW5BSVJlc3BvbnNlSXRlbSB9XG4gIHwgeyB0eXBlOiBcImNvbXBsZXRlZFwiOyByZXNwb25zZUlkOiBzdHJpbmc7IHVzYWdlPzogT3BlbkFJVXNhZ2U7IG1vZGVsPzogc3RyaW5nIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IE9wZW5BSVByb3RvY29sRXJyb3IgfTtcblxuZXhwb3J0IGNsYXNzIE9wZW5BSVByb3RvY29sRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29kZT86IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPzogbnVtYmVyLFxuICAgIHB1YmxpYyByZWFkb25seSByZXRyeUFmdGVyTXM/OiBudW1iZXIsXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiT3BlbkFJUHJvdG9jb2xFcnJvclwiO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzYWdlRnJvbSh2YWx1ZTogdW5rbm93bik6IE9wZW5BSVVzYWdlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHVzYWdlID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGlucHV0RGV0YWlscyA9ICh1c2FnZS5pbnB1dF90b2tlbnNfZGV0YWlscyA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IG91dHB1dERldGFpbHMgPSAodXNhZ2Uub3V0cHV0X3Rva2Vuc19kZXRhaWxzID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dFRva2VuczogTnVtYmVyKHVzYWdlLmlucHV0X3Rva2VucyA/PyAwKSxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogTnVtYmVyKGlucHV0RGV0YWlscy5jYWNoZWRfdG9rZW5zID8/IDApLFxuICAgIG91dHB1dFRva2VuczogTnVtYmVyKHVzYWdlLm91dHB1dF90b2tlbnMgPz8gMCksXG4gICAgcmVhc29uaW5nVG9rZW5zOiBOdW1iZXIob3V0cHV0RGV0YWlscy5yZWFzb25pbmdfdG9rZW5zID8/IDApLFxuICAgIHRvdGFsVG9rZW5zOiBOdW1iZXIodXNhZ2UudG90YWxfdG9rZW5zID8/IDApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3BlbkFJRXZlbnQocmF3OiB1bmtub3duKTogT3BlbkFJTm9ybWFsaXplZEV2ZW50IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFyYXcgfHwgdHlwZW9mIHJhdyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgZXZlbnQgPSByYXcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHR5cGUgPSBTdHJpbmcoZXZlbnQudHlwZSA/PyBcIlwiKTtcbiAgaWYgKHR5cGUgPT09IFwicmVzcG9uc2UuY3JlYXRlZFwiKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBldmVudC5yZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyB0eXBlOiBcImNyZWF0ZWRcIiwgLi4uKHJlc3BvbnNlPy5pZCA/IHsgcmVzcG9uc2VJZDogU3RyaW5nKHJlc3BvbnNlLmlkKSB9IDoge30pIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IFwicmVzcG9uc2Uub3V0cHV0X3RleHQuZGVsdGFcIiAmJiB0eXBlb2YgZXZlbnQuZGVsdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcInRleHQtZGVsdGFcIiwgdGV4dDogZXZlbnQuZGVsdGEgfTtcbiAgfVxuICBpZiAoXG4gICAgKHR5cGUgPT09IFwicmVzcG9uc2Uub3V0cHV0X2l0ZW0uYWRkZWRcIiB8fCB0eXBlID09PSBcInJlc3BvbnNlLm91dHB1dF9pdGVtLmRvbmVcIikgJiZcbiAgICBldmVudC5pdGVtICYmXG4gICAgdHlwZW9mIGV2ZW50Lml0ZW0gPT09IFwib2JqZWN0XCJcbiAgKSB7XG4gICAgY29uc3QgaXRlbSA9IGV2ZW50Lml0ZW0gYXMgT3BlbkFJUmVzcG9uc2VJdGVtO1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwiaW1hZ2VfZ2VuZXJhdGlvbl9jYWxsXCIgJiYgdHlwZW9mIGl0ZW0ucmVzdWx0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImltYWdlXCIsXG4gICAgICAgIC4uLih0eXBlb2YgaXRlbS5pZCA9PT0gXCJzdHJpbmdcIiA/IHsgaWQ6IGl0ZW0uaWQgfSA6IHt9KSxcbiAgICAgICAgYmFzZTY0OiBpdGVtLnJlc3VsdCxcbiAgICAgICAgbWltZVR5cGU6IFwiaW1hZ2UvcG5nXCIsXG4gICAgICAgIC4uLih0eXBlb2YgaXRlbS5yZXZpc2VkX3Byb21wdCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8geyByZXZpc2VkUHJvbXB0OiBpdGVtLnJldmlzZWRfcHJvbXB0IH1cbiAgICAgICAgICA6IHR5cGVvZiBpdGVtLnJldmlzZWRQcm9tcHQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8geyByZXZpc2VkUHJvbXB0OiBpdGVtLnJldmlzZWRQcm9tcHQgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyB0eXBlOiBcIm91dHB1dC1pdGVtXCIsIGl0ZW0gfTtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJyZXNwb25zZS5jb21wbGV0ZWRcIikge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gKGV2ZW50LnJlc3BvbnNlID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJjb21wbGV0ZWRcIixcbiAgICAgIHJlc3BvbnNlSWQ6IFN0cmluZyhyZXNwb25zZS5pZCA/PyBcIlwiKSxcbiAgICAgIC4uLihyZXNwb25zZS51c2FnZSA/IHsgdXNhZ2U6IHVzYWdlRnJvbShyZXNwb25zZS51c2FnZSkgfSA6IHt9KSxcbiAgICAgIC4uLih0eXBlb2YgcmVzcG9uc2UubW9kZWwgPT09IFwic3RyaW5nXCIgPyB7IG1vZGVsOiByZXNwb25zZS5tb2RlbCB9IDoge30pLFxuICAgIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IFwiZXJyb3JcIiB8fCB0eXBlID09PSBcInJlc3BvbnNlLmZhaWxlZFwiIHx8IHR5cGUgPT09IFwicmVzcG9uc2UuaW5jb21wbGV0ZVwiKSB7XG4gICAgY29uc3Qgc291cmNlID0gKGV2ZW50LmVycm9yID8/IGV2ZW50LnJlc3BvbnNlID8/IGV2ZW50KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBuZXN0ZWQgPSAoc291cmNlLmVycm9yID8/IHNvdXJjZSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgIGVycm9yOiBuZXcgT3BlbkFJUHJvdG9jb2xFcnJvcihcbiAgICAgICAgU3RyaW5nKG5lc3RlZC5tZXNzYWdlID8/IGBPcGVuQUkgc3RyZWFtIGVuZGVkIHdpdGggJHt0eXBlfWApLFxuICAgICAgICB0eXBlb2YgbmVzdGVkLmNvZGUgPT09IFwic3RyaW5nXCIgPyBuZXN0ZWQuY29kZSA6IHVuZGVmaW5lZCxcbiAgICAgICksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLE1BQWEsOEJBQ1g7QUFFRixNQUFhLHVCQUF1QjtBQUNwQyxNQUFhLG9CQUFvQjtBQVNqQyxTQUFTLGdCQUF3QztDQUMvQyxNQUFNLFFBQWtEO0VBQ3RELFFBQVE7RUFDUixPQUFPO0VBQ1AsT0FBTztDQUNUO0NBQ0EsTUFBTSxXQUFXLFFBQVEsSUFBSTtDQUM3QixNQUFNLGtCQUFrQixRQUFRLElBQUk7Q0FDcEMsT0FBTztFQUNMLFFBQVEsTUFBTSxRQUFRLGFBQWEsUUFBUTtFQUMzQyxXQUFXLEdBQUcsUUFBUTtFQUN0QixjQUFjLFFBQVE7RUFDdEIsVUFBVSxXQUFXLEdBQUcsV0FBVyxrQkFBa0IsSUFBSSxvQkFBb0IsT0FBTztDQUN0RjtBQUNGOztBQUdBLFNBQWdCLGtCQUFrQixXQUFtQyxjQUFjLEdBQVc7Q0FDNUYsT0FBTyxnQkFBZ0Isa0JBQWtCLElBQUksU0FBUyxPQUFPLEdBQUcsU0FBUyxVQUFVLElBQUksU0FBUyxhQUFhLElBQUksU0FBUztBQUM1SDtBQTREQSxTQUFnQiw0QkFDZCxTQUN3QjtDQUN4QixNQUFNLFFBQVEsUUFBUSxRQUFRLENBQUMsR0FBRyxRQUFRLEtBQUssSUFBSSxDQUFDO0NBQ3BELElBQUksUUFBUSxpQkFDVixNQUFNLEtBQ0osUUFBUSxvQkFBb0IsT0FDeEIsRUFBRSxNQUFNLG1CQUFtQixJQUMzQjtFQUFFLE1BQU07RUFBb0IsR0FBRyxRQUFRO0NBQWdCLENBQzdEO0NBR0YsTUFBTSxPQUNKLFFBQVEs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
@@ -1,9 +1,11 @@
1
1
  //#region src/utils/providers/openai/openai-constants.ts
2
2
  const OPENAI_ISSUER = "https://auth.openai.com";
3
3
  const OPENAI_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
4
+ const OPENAI_AUTHORIZE_URL = `${OPENAI_ISSUER}/oauth/authorize`;
4
5
  const OPENAI_TOKEN_URL = `${OPENAI_ISSUER}/oauth/token`;
5
6
  const OPENAI_SCOPES = "openid profile email offline_access api.connectors.read api.connectors.invoke";
7
+ const OPENAI_ORIGINATOR = "codex_cli_rs";
6
8
  //#endregion
7
- export { OPENAI_CLIENT_ID, OPENAI_ISSUER, OPENAI_SCOPES, OPENAI_TOKEN_URL };
9
+ export { OPENAI_AUTHORIZE_URL, OPENAI_CLIENT_ID, OPENAI_ISSUER, OPENAI_ORIGINATOR, OPENAI_SCOPES, OPENAI_TOKEN_URL };
8
10
 
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLWNvbnN0YW50cy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL29wZW5haS9vcGVuYWktY29uc3RhbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUEVOQUlfSVNTVUVSID0gXCJodHRwczovL2F1dGgub3BlbmFpLmNvbVwiO1xuZXhwb3J0IGNvbnN0IE9QRU5BSV9DTElFTlRfSUQgPSBcImFwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm5cIjtcbmV4cG9ydCBjb25zdCBPUEVOQUlfVE9LRU5fVVJMID0gYCR7T1BFTkFJX0lTU1VFUn0vb2F1dGgvdG9rZW5gO1xuZXhwb3J0IGNvbnN0IE9QRU5BSV9TQ09QRVMgPVxuICBcIm9wZW5pZCBwcm9maWxlIGVtYWlsIG9mZmxpbmVfYWNjZXNzIGFwaS5jb25uZWN0b3JzLnJlYWQgYXBpLmNvbm5lY3RvcnMuaW52b2tlXCI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFhLGdCQUFnQjtBQUM3QixNQUFhLG1CQUFtQjtBQUNoQyxNQUFhLG1CQUFtQixHQUFHLGNBQWM7QUFDakQsTUFBYSxnQkFDWCJ9
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLWNvbnN0YW50cy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvcHJvdmlkZXJzL29wZW5haS9vcGVuYWktY29uc3RhbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUEVOQUlfSVNTVUVSID0gXCJodHRwczovL2F1dGgub3BlbmFpLmNvbVwiO1xuZXhwb3J0IGNvbnN0IE9QRU5BSV9DTElFTlRfSUQgPSBcImFwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm5cIjtcbmV4cG9ydCBjb25zdCBPUEVOQUlfQVVUSE9SSVpFX1VSTCA9IGAke09QRU5BSV9JU1NVRVJ9L29hdXRoL2F1dGhvcml6ZWA7XG5leHBvcnQgY29uc3QgT1BFTkFJX1RPS0VOX1VSTCA9IGAke09QRU5BSV9JU1NVRVJ9L29hdXRoL3Rva2VuYDtcbmV4cG9ydCBjb25zdCBPUEVOQUlfU0NPUEVTID1cbiAgXCJvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcyBhcGkuY29ubmVjdG9ycy5yZWFkIGFwaS5jb25uZWN0b3JzLmludm9rZVwiO1xuZXhwb3J0IGNvbnN0IE9QRU5BSV9PUklHSU5BVE9SID0gXCJjb2RleF9jbGlfcnNcIjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQWEsZ0JBQWdCO0FBQzdCLE1BQWEsbUJBQW1CO0FBQ2hDLE1BQWEsdUJBQXVCLEdBQUcsY0FBYztBQUNyRCxNQUFhLG1CQUFtQixHQUFHLGNBQWM7QUFDakQsTUFBYSxnQkFDWDtBQUNGLE1BQWEsb0JBQW9CIn0=