@cartanova/qgrid-cli 2.7.0 → 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 (1337) hide show
  1. package/README.ko.md +3 -2
  2. package/README.md +3 -2
  3. package/bundle/dist/_virtual/_rolldown/runtime.js +20 -1
  4. package/bundle/dist/application/monit/monit.frame.js +27 -14
  5. package/bundle/dist/application/monit/monit.types.js +22 -13
  6. package/bundle/dist/application/qgrid/conv-routing.js +21 -11
  7. package/bundle/dist/application/qgrid/oauth.js +1 -1
  8. package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +15 -4
  9. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +34 -14
  10. package/bundle/dist/application/qgrid/qgrid.frame.js +50 -73
  11. package/bundle/dist/application/qgrid/qgrid.types.js +4 -1
  12. package/bundle/dist/application/qgrid/schema-prompt.js +240 -0
  13. package/bundle/dist/application/qgrid/token-subscriber.js +5 -5
  14. package/bundle/dist/application/qgrid/tool-emulation-schema.js +13 -1
  15. package/bundle/dist/application/qgrid/tool-emulation.js +8 -6
  16. package/bundle/dist/application/queries.generated.js +3 -1
  17. package/bundle/dist/application/request-log/json-schema-type-text.js +55 -0
  18. package/bundle/dist/application/request-log/request-log.model.js +85 -3
  19. package/bundle/dist/application/request-log/request-log.types.js +3 -2
  20. package/bundle/dist/application/request-log/zod-code-format.js +71 -0
  21. package/bundle/dist/application/setting/setting.constant.js +2 -62
  22. package/bundle/dist/application/setting/setting.model.js +3 -3
  23. package/bundle/dist/application/setting/setting.store.js +2 -2
  24. package/bundle/dist/application/sonamu.generated.js +11 -4
  25. package/bundle/dist/application/sonamu.generated.sso.js +7 -3
  26. package/bundle/dist/i18n/sd.generated.js +5 -2
  27. package/bundle/dist/migrations/20260814130113_alter_request_logs_add1_alter1.js +15 -0
  28. package/bundle/dist/migrations/20260814131051_alter_request_logs_add1_alter1.js +15 -0
  29. package/bundle/dist/migrations/20260814134846_alter_request_logs_add1_alter1.js +15 -0
  30. package/bundle/dist/migrations/20260814140759_alter_request_logs_alter1.js +13 -0
  31. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/2020.js +112 -0
  32. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js +140 -0
  33. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js +676 -0
  34. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  35. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js +104 -0
  36. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js +225 -0
  37. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js +30 -0
  38. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js +20 -0
  39. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js +135 -0
  40. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js +63 -0
  41. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js +148 -0
  42. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js +25 -0
  43. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  44. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js +174 -0
  45. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js +33 -0
  46. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js +435 -0
  47. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js +115 -0
  48. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js +74 -0
  49. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js +585 -0
  50. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.js +20 -0
  51. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +44 -0
  52. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.js +52 -0
  53. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.js +22 -0
  54. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.js +53 -0
  55. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.js +18 -0
  56. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.js +38 -0
  57. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.js +21 -0
  58. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.js +87 -0
  59. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/schema.js +61 -0
  60. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js +14 -0
  61. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js +27 -0
  62. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js +14 -0
  63. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js +18 -0
  64. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  65. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +98 -0
  66. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +31 -0
  67. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +18 -0
  68. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +91 -0
  69. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +89 -0
  70. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +18 -0
  71. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js +64 -0
  72. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js +62 -0
  73. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js +61 -0
  74. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +36 -0
  75. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js +33 -0
  76. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +53 -0
  77. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +63 -0
  78. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +19 -0
  79. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  80. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +43 -0
  81. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +19 -0
  82. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js +132 -0
  83. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js +16 -0
  84. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js +24 -0
  85. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js +114 -0
  86. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +103 -0
  87. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +16 -0
  88. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft2020.js +37 -0
  89. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +48 -0
  90. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +47 -0
  91. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/index.js +24 -0
  92. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +22 -0
  93. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +17 -0
  94. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js +94 -0
  95. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js +12 -0
  96. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js +25 -0
  97. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/next.js +21 -0
  98. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/index.js +15 -0
  99. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +48 -0
  100. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +61 -0
  101. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js +29 -0
  102. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +19 -0
  103. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js +51 -0
  104. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js +50 -0
  105. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitContains.js +20 -0
  106. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +30 -0
  107. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +35 -0
  108. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +49 -0
  109. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +30 -0
  110. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +29 -0
  111. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +40 -0
  112. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js +74 -0
  113. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +72 -0
  114. package/bundle/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +35 -0
  115. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js +238 -0
  116. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +189 -0
  117. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +284 -0
  118. package/bundle/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +80 -0
  119. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +9 -0
  120. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +41 -0
  121. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +19 -0
  122. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +202 -0
  123. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +46 -0
  124. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +119 -0
  125. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +3044 -0
  126. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +59 -0
  127. 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_vi_3892b4338df694f79f7d384fad23d930/node_modules/vitest/dist/index.js +28 -0
  128. package/bundle/dist/sonamu.config.js +10 -9
  129. package/bundle/dist/testing/schema-bench.js +0 -0
  130. package/bundle/dist/testing/setup-mocks.js +2 -2
  131. package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +14 -2
  132. package/bundle/dist/utils/providers/anthropic/claude-session.js +1 -1
  133. package/bundle/dist/utils/providers/anthropic/fence-strip.js +83 -0
  134. package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +3 -5
  135. package/bundle/dist/utils/providers/common/model-cost.js +1 -1
  136. package/bundle/dist/utils/providers/common/schema-validation.js +1 -1
  137. package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +144 -0
  138. package/bundle/dist/utils/providers/openai/openai-constants.js +4 -2
  139. package/bundle/dist/utils/providers/openai/openai-direct-client.js +327 -0
  140. package/bundle/dist/utils/providers/openai/openai-dispatcher.js +358 -781
  141. package/bundle/dist/utils/providers/openai/openai-oauth.js +84 -0
  142. package/bundle/dist/utils/providers/openai/openai-quota.js +76 -5
  143. package/bundle/dist/utils/providers/openai/openai-refresh.js +3 -3
  144. package/bundle/dist/utils/providers/openai/openai-sse.js +72 -0
  145. package/bundle/dist/utils/providers/openai/openai-transport-config.js +14 -0
  146. package/bundle/src/application/monit/monit.frame.test.ts +14 -17
  147. package/bundle/src/application/monit/monit.frame.ts +23 -12
  148. package/bundle/src/application/monit/monit.types.ts +40 -11
  149. package/bundle/src/application/qgrid/conv-routing.test.ts +67 -0
  150. package/bundle/src/application/qgrid/conv-routing.ts +46 -12
  151. package/bundle/src/application/qgrid/qgrid-oauth-redirect.test.ts +92 -2
  152. package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +3 -0
  153. package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +15 -1
  154. package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +286 -40
  155. package/bundle/src/application/qgrid/qgrid.dispatcher.ts +58 -14
  156. package/bundle/src/application/qgrid/qgrid.frame.test.ts +120 -153
  157. package/bundle/src/application/qgrid/qgrid.frame.ts +57 -94
  158. package/bundle/src/application/qgrid/qgrid.types.ts +11 -4
  159. package/bundle/src/application/qgrid/schema-prompt.test.ts +166 -0
  160. package/bundle/src/application/qgrid/schema-prompt.ts +293 -0
  161. package/bundle/src/application/qgrid/token-subscriber.ts +4 -4
  162. package/bundle/src/application/qgrid/tool-emulation-schema.ts +1 -1
  163. package/bundle/src/application/qgrid/tool-emulation.test.ts +37 -0
  164. package/bundle/src/application/qgrid/tool-emulation.ts +19 -7
  165. package/bundle/src/application/queries.generated.ts +6 -0
  166. package/bundle/src/application/request-log/json-schema-type-text.test.ts +96 -0
  167. package/bundle/src/application/request-log/json-schema-type-text.ts +83 -0
  168. package/bundle/src/application/request-log/request-log.entity.json +147 -21
  169. package/bundle/src/application/request-log/request-log.model.ts +108 -0
  170. package/bundle/src/application/request-log/request-log.types.ts +2 -0
  171. package/bundle/src/application/request-log/zod-code-format.test.ts +31 -0
  172. package/bundle/src/application/request-log/zod-code-format.ts +73 -0
  173. package/bundle/src/application/setting/setting.constant.test.ts +22 -24
  174. package/bundle/src/application/setting/setting.constant.ts +2 -63
  175. package/bundle/src/application/setting/setting.entity.json +1 -1
  176. package/bundle/src/application/setting/setting.store.ts +1 -1
  177. package/bundle/src/application/sonamu.generated.http +20 -1
  178. package/bundle/src/application/sonamu.generated.sso.ts +4 -0
  179. package/bundle/src/application/sonamu.generated.ts +10 -0
  180. package/bundle/src/i18n/sd.generated.ts +6 -1
  181. package/bundle/src/migrations/20260814130113_alter_request_logs_add1_alter1.ts +15 -0
  182. package/bundle/src/migrations/20260814131051_alter_request_logs_add1_alter1.ts +15 -0
  183. package/bundle/src/migrations/20260814134846_alter_request_logs_add1_alter1.ts +15 -0
  184. package/bundle/src/migrations/20260814140759_alter_request_logs_alter1.ts +13 -0
  185. package/bundle/src/sonamu.config.ts +9 -13
  186. package/bundle/src/testing/schema-bench.test.ts +358 -0
  187. package/bundle/src/testing/schema-bench.ts +352 -0
  188. package/bundle/src/utils/providers/anthropic/anthropic-dispatcher.ts +17 -2
  189. package/bundle/src/utils/providers/anthropic/claude-session.ts +1 -3
  190. package/bundle/src/utils/providers/anthropic/fence-strip.test.ts +122 -0
  191. package/bundle/src/utils/providers/anthropic/fence-strip.ts +105 -0
  192. package/bundle/src/utils/providers/anthropic/stream-json-adapter.test.ts +1 -2
  193. package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +4 -11
  194. package/bundle/src/utils/providers/common/model-cost.ts +4 -9
  195. package/bundle/src/utils/providers/common/provider-dispatcher.ts +10 -8
  196. package/bundle/src/utils/providers/common/provider-types.ts +48 -0
  197. package/bundle/src/utils/providers/common/schema-validation.ts +1 -1
  198. package/bundle/src/utils/providers/openai/openai-backend-protocol.test.ts +106 -0
  199. package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +255 -0
  200. package/bundle/src/utils/providers/openai/openai-constants.ts +2 -0
  201. package/bundle/src/utils/providers/openai/openai-direct-client.test.ts +610 -0
  202. package/bundle/src/utils/providers/openai/openai-direct-client.ts +478 -0
  203. package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +336 -1723
  204. package/bundle/src/utils/providers/openai/openai-dispatcher.ts +458 -1175
  205. package/bundle/src/utils/providers/openai/openai-oauth.test.ts +95 -0
  206. package/bundle/src/utils/providers/openai/openai-oauth.ts +141 -0
  207. package/bundle/src/utils/providers/openai/openai-quota.test.ts +80 -7
  208. package/bundle/src/utils/providers/openai/openai-quota.ts +105 -4
  209. package/bundle/src/utils/providers/openai/openai-refresh.test.ts +120 -0
  210. package/bundle/src/utils/providers/openai/openai-refresh.ts +3 -1
  211. package/bundle/src/utils/providers/openai/openai-sse.test.ts +52 -0
  212. package/bundle/src/utils/providers/openai/openai-sse.ts +79 -0
  213. package/bundle/src/utils/providers/openai/openai-transport-config.ts +17 -0
  214. package/bundle/web-dist/client/assets/index-BldeEvAK.css +1 -0
  215. package/bundle/web-dist/client/assets/index-DkAXPF9q.js +106 -0
  216. package/bundle/web-dist/client/assets/logs-DlI6OojL.js +1 -0
  217. package/bundle/web-dist/client/assets/monit-qap66dhi.js +1 -0
  218. package/bundle/web-dist/client/assets/routes-CV07Pzde.js +5 -0
  219. package/bundle/web-dist/client/assets/services.generated-CSW8bhCP.js +51 -0
  220. package/bundle/web-dist/client/assets/settings-CdYub4yo.js +1 -0
  221. package/bundle/web-dist/client/assets/show-DA1L8DVD.js +2 -0
  222. package/bundle/web-dist/client/assets/tokens-Dt3gfkwP.js +1 -0
  223. package/bundle/web-dist/client/assets/use-oauth-login-flow-Cwi0HtJY.js +1 -0
  224. package/bundle/web-dist/client/index.html +3 -3
  225. package/bundle/web-dist/server/assets/lazyRouteComponent-0y-znAfz.js +1856 -0
  226. package/bundle/web-dist/server/assets/logs-CJBbHM3_.js +481 -0
  227. package/bundle/web-dist/server/assets/monit-8WAsPETB.js +1670 -0
  228. package/bundle/web-dist/server/assets/plus-9das21ju.js +19 -0
  229. package/bundle/web-dist/server/assets/react-dom-zmEq8BVp.js +462 -0
  230. package/bundle/web-dist/server/assets/routes-B6bX3o41.js +2924 -0
  231. package/bundle/web-dist/server/assets/services.generated-DyPeBI00.js +23644 -0
  232. package/bundle/web-dist/server/assets/settings-D1u5WdpP.js +597 -0
  233. package/bundle/web-dist/server/assets/show-Cr7vwR0l.js +2861 -0
  234. package/bundle/web-dist/server/assets/tokens-BumM0gnH.js +441 -0
  235. package/bundle/web-dist/server/assets/use-oauth-login-flow-DmsHGOlx.js +160 -0
  236. package/bundle/web-dist/server/entry-server.generated.js +12 -12
  237. package/dist/cli.d.ts +10 -1
  238. package/dist/cli.js +1 -6
  239. package/package.json +3 -2
  240. package/skills/qgrid/SKILL.md +5 -5
  241. package/skills/qgrid/references/ai-sdk-provider-contract.md +36 -25
  242. package/skills/qgrid/references/anthropic-claude-code-runtime.md +31 -14
  243. package/skills/qgrid/references/cli-env-and-server-boot.md +6 -13
  244. package/skills/qgrid/references/decision-rationale.md +28 -26
  245. package/skills/qgrid/references/docs-workflow.md +1 -1
  246. package/skills/qgrid/references/openai-codex-runtime.md +39 -156
  247. package/skills/qgrid/references/prompt-cache-and-usage.md +35 -68
  248. package/skills/qgrid/references/provider-runtime-differences.md +18 -18
  249. package/skills/qgrid/references/repo-map.md +2 -2
  250. package/skills/qgrid/references/request-log-run-lifecycle.md +12 -2
  251. package/skills/qgrid/references/sonamu-api-web-flow.md +4 -0
  252. package/skills/qgrid/references/token-auth-quota-lifecycle.md +14 -24
  253. package/skills/qgrid/references/tool-calling-and-multiturn.md +19 -9
  254. package/skills/qgrid/references/verification-and-debugging.md +17 -15
  255. package/bundle/dist/codex-protocol/AgentPath.js +0 -1
  256. package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +0 -1
  257. package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +0 -1
  258. package/bundle/dist/codex-protocol/AuthMode.js +0 -1
  259. package/bundle/dist/codex-protocol/ClientInfo.js +0 -1
  260. package/bundle/dist/codex-protocol/ClientNotification.js +0 -1
  261. package/bundle/dist/codex-protocol/ClientRequest.js +0 -1
  262. package/bundle/dist/codex-protocol/CollaborationMode.js +0 -1
  263. package/bundle/dist/codex-protocol/ContentItem.js +0 -1
  264. package/bundle/dist/codex-protocol/ConversationGitInfo.js +0 -1
  265. package/bundle/dist/codex-protocol/ConversationSummary.js +0 -1
  266. package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +0 -1
  267. package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +0 -1
  268. package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +0 -1
  269. package/bundle/dist/codex-protocol/FileChange.js +0 -1
  270. package/bundle/dist/codex-protocol/ForcedLoginMethod.js +0 -1
  271. package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +0 -1
  272. package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +0 -1
  273. package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +0 -1
  274. package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +0 -1
  275. package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +0 -1
  276. package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +0 -1
  277. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +0 -1
  278. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +0 -1
  279. package/bundle/dist/codex-protocol/GetAuthStatusParams.js +0 -1
  280. package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +0 -1
  281. package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +0 -1
  282. package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +0 -1
  283. package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +0 -1
  284. package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +0 -1
  285. package/bundle/dist/codex-protocol/GitSha.js +0 -1
  286. package/bundle/dist/codex-protocol/ImageDetail.js +0 -1
  287. package/bundle/dist/codex-protocol/InitializeCapabilities.js +0 -1
  288. package/bundle/dist/codex-protocol/InitializeParams.js +0 -1
  289. package/bundle/dist/codex-protocol/InitializeResponse.js +0 -1
  290. package/bundle/dist/codex-protocol/InputModality.js +0 -1
  291. package/bundle/dist/codex-protocol/InternalSessionSource.js +0 -1
  292. package/bundle/dist/codex-protocol/LocalShellAction.js +0 -1
  293. package/bundle/dist/codex-protocol/LocalShellExecAction.js +0 -1
  294. package/bundle/dist/codex-protocol/LocalShellStatus.js +0 -1
  295. package/bundle/dist/codex-protocol/MessagePhase.js +0 -1
  296. package/bundle/dist/codex-protocol/ModeKind.js +0 -1
  297. package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +0 -1
  298. package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +0 -1
  299. package/bundle/dist/codex-protocol/ParsedCommand.js +0 -1
  300. package/bundle/dist/codex-protocol/Personality.js +0 -1
  301. package/bundle/dist/codex-protocol/PlanType.js +0 -1
  302. package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +0 -1
  303. package/bundle/dist/codex-protocol/RealtimeOutputModality.js +0 -1
  304. package/bundle/dist/codex-protocol/RealtimeVoice.js +0 -1
  305. package/bundle/dist/codex-protocol/RealtimeVoicesList.js +0 -1
  306. package/bundle/dist/codex-protocol/ReasoningEffort.js +0 -1
  307. package/bundle/dist/codex-protocol/ReasoningItemContent.js +0 -1
  308. package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +0 -1
  309. package/bundle/dist/codex-protocol/ReasoningSummary.js +0 -1
  310. package/bundle/dist/codex-protocol/RequestId.js +0 -1
  311. package/bundle/dist/codex-protocol/Resource.js +0 -1
  312. package/bundle/dist/codex-protocol/ResourceContent.js +0 -1
  313. package/bundle/dist/codex-protocol/ResourceTemplate.js +0 -1
  314. package/bundle/dist/codex-protocol/ResponseItem.js +0 -1
  315. package/bundle/dist/codex-protocol/ReviewDecision.js +0 -1
  316. package/bundle/dist/codex-protocol/ServerNotification.js +0 -1
  317. package/bundle/dist/codex-protocol/ServerRequest.js +0 -1
  318. package/bundle/dist/codex-protocol/SessionSource.js +0 -1
  319. package/bundle/dist/codex-protocol/Settings.js +0 -1
  320. package/bundle/dist/codex-protocol/SubAgentSource.js +0 -1
  321. package/bundle/dist/codex-protocol/ThreadId.js +0 -1
  322. package/bundle/dist/codex-protocol/ThreadMemoryMode.js +0 -1
  323. package/bundle/dist/codex-protocol/Tool.js +0 -1
  324. package/bundle/dist/codex-protocol/Verbosity.js +0 -1
  325. package/bundle/dist/codex-protocol/WebSearchAction.js +0 -1
  326. package/bundle/dist/codex-protocol/WebSearchContextSize.js +0 -1
  327. package/bundle/dist/codex-protocol/WebSearchLocation.js +0 -1
  328. package/bundle/dist/codex-protocol/WebSearchMode.js +0 -1
  329. package/bundle/dist/codex-protocol/WebSearchToolConfig.js +0 -1
  330. package/bundle/dist/codex-protocol/index.js +0 -2
  331. package/bundle/dist/codex-protocol/serde_json/JsonValue.js +0 -1
  332. package/bundle/dist/codex-protocol/v2/Account.js +0 -1
  333. package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +0 -1
  334. package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +0 -1
  335. package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +0 -1
  336. package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +0 -1
  337. package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +0 -1
  338. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +0 -1
  339. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +0 -1
  340. package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +0 -1
  341. package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +0 -1
  342. package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +0 -1
  343. package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +0 -1
  344. package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +0 -1
  345. package/bundle/dist/codex-protocol/v2/AppBranding.js +0 -1
  346. package/bundle/dist/codex-protocol/v2/AppInfo.js +0 -1
  347. package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +0 -1
  348. package/bundle/dist/codex-protocol/v2/AppMetadata.js +0 -1
  349. package/bundle/dist/codex-protocol/v2/AppReview.js +0 -1
  350. package/bundle/dist/codex-protocol/v2/AppScreenshot.js +0 -1
  351. package/bundle/dist/codex-protocol/v2/AppSummary.js +0 -1
  352. package/bundle/dist/codex-protocol/v2/AppToolApproval.js +0 -1
  353. package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +0 -1
  354. package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +0 -1
  355. package/bundle/dist/codex-protocol/v2/AppsConfig.js +0 -1
  356. package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +0 -1
  357. package/bundle/dist/codex-protocol/v2/AppsListParams.js +0 -1
  358. package/bundle/dist/codex-protocol/v2/AppsListResponse.js +0 -1
  359. package/bundle/dist/codex-protocol/v2/AskForApproval.js +0 -1
  360. package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +0 -1
  361. package/bundle/dist/codex-protocol/v2/ByteRange.js +0 -1
  362. package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +0 -1
  363. package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +0 -1
  364. package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +0 -1
  365. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +0 -1
  366. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +0 -1
  367. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +0 -1
  368. package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +0 -1
  369. package/bundle/dist/codex-protocol/v2/CollabAgentState.js +0 -1
  370. package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +0 -1
  371. package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +0 -1
  372. package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +0 -1
  373. package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +0 -1
  374. package/bundle/dist/codex-protocol/v2/CommandAction.js +0 -1
  375. package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +0 -1
  376. package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +0 -1
  377. package/bundle/dist/codex-protocol/v2/CommandExecParams.js +0 -1
  378. package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +0 -1
  379. package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +0 -1
  380. package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +0 -1
  381. package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +0 -1
  382. package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +0 -1
  383. package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +0 -1
  384. package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +0 -1
  385. package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +0 -1
  386. package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +0 -1
  387. package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +0 -1
  388. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +0 -1
  389. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +0 -1
  390. package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +0 -1
  391. package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +0 -1
  392. package/bundle/dist/codex-protocol/v2/CommandMigration.js +0 -1
  393. package/bundle/dist/codex-protocol/v2/Config.js +0 -1
  394. package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +0 -1
  395. package/bundle/dist/codex-protocol/v2/ConfigEdit.js +0 -1
  396. package/bundle/dist/codex-protocol/v2/ConfigLayer.js +0 -1
  397. package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +0 -1
  398. package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +0 -1
  399. package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +0 -1
  400. package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +0 -1
  401. package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +0 -1
  402. package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +0 -1
  403. package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +0 -1
  404. package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +0 -1
  405. package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +0 -1
  406. package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +0 -1
  407. package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +0 -1
  408. package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +0 -1
  409. package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +0 -1
  410. package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +0 -1
  411. package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +0 -1
  412. package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +0 -1
  413. package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +0 -1
  414. package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +0 -1
  415. package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +0 -1
  416. package/bundle/dist/codex-protocol/v2/ErrorNotification.js +0 -1
  417. package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +0 -1
  418. package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +0 -1
  419. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +0 -1
  420. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +0 -1
  421. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +0 -1
  422. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +0 -1
  423. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +0 -1
  424. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +0 -1
  425. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +0 -1
  426. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +0 -1
  427. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +0 -1
  428. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +0 -1
  429. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +0 -1
  430. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +0 -1
  431. package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +0 -1
  432. package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +0 -1
  433. package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +0 -1
  434. package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +0 -1
  435. package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +0 -1
  436. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +0 -1
  437. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +0 -1
  438. package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +0 -1
  439. package/bundle/dist/codex-protocol/v2/FileSystemPath.js +0 -1
  440. package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +0 -1
  441. package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +0 -1
  442. package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +0 -1
  443. package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +0 -1
  444. package/bundle/dist/codex-protocol/v2/FsCopyParams.js +0 -1
  445. package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +0 -1
  446. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +0 -1
  447. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +0 -1
  448. package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +0 -1
  449. package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +0 -1
  450. package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +0 -1
  451. package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +0 -1
  452. package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +0 -1
  453. package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +0 -1
  454. package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +0 -1
  455. package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +0 -1
  456. package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +0 -1
  457. package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +0 -1
  458. package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +0 -1
  459. package/bundle/dist/codex-protocol/v2/FsWatchParams.js +0 -1
  460. package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +0 -1
  461. package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +0 -1
  462. package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +0 -1
  463. package/bundle/dist/codex-protocol/v2/GetAccountParams.js +0 -1
  464. package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +0 -1
  465. package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +0 -1
  466. package/bundle/dist/codex-protocol/v2/GitInfo.js +0 -1
  467. package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +0 -1
  468. package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +0 -1
  469. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +0 -1
  470. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +0 -1
  471. package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +0 -1
  472. package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +0 -1
  473. package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +0 -1
  474. package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +0 -1
  475. package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +0 -1
  476. package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +0 -1
  477. package/bundle/dist/codex-protocol/v2/HookEventName.js +0 -1
  478. package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +0 -1
  479. package/bundle/dist/codex-protocol/v2/HookHandlerType.js +0 -1
  480. package/bundle/dist/codex-protocol/v2/HookMetadata.js +0 -1
  481. package/bundle/dist/codex-protocol/v2/HookMigration.js +0 -1
  482. package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +0 -1
  483. package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +0 -1
  484. package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +0 -1
  485. package/bundle/dist/codex-protocol/v2/HookRunStatus.js +0 -1
  486. package/bundle/dist/codex-protocol/v2/HookRunSummary.js +0 -1
  487. package/bundle/dist/codex-protocol/v2/HookScope.js +0 -1
  488. package/bundle/dist/codex-protocol/v2/HookSource.js +0 -1
  489. package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +0 -1
  490. package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +0 -1
  491. package/bundle/dist/codex-protocol/v2/HooksListEntry.js +0 -1
  492. package/bundle/dist/codex-protocol/v2/HooksListParams.js +0 -1
  493. package/bundle/dist/codex-protocol/v2/HooksListResponse.js +0 -1
  494. package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +0 -1
  495. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +0 -1
  496. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +0 -1
  497. package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +0 -1
  498. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +0 -1
  499. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +0 -1
  500. package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +0 -1
  501. package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +0 -1
  502. package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +0 -1
  503. package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +0 -1
  504. package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +0 -1
  505. package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +0 -1
  506. package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +0 -1
  507. package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +0 -1
  508. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +0 -1
  509. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +0 -1
  510. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +0 -1
  511. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +0 -1
  512. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +0 -1
  513. package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +0 -1
  514. package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +0 -1
  515. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +0 -1
  516. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +0 -1
  517. package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +0 -1
  518. package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +0 -1
  519. package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +0 -1
  520. package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +0 -1
  521. package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +0 -1
  522. package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +0 -1
  523. package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +0 -1
  524. package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +0 -1
  525. package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +0 -1
  526. package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +0 -1
  527. package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +0 -1
  528. package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +0 -1
  529. package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +0 -1
  530. package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +0 -1
  531. package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +0 -1
  532. package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +0 -1
  533. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +0 -1
  534. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +0 -1
  535. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +0 -1
  536. package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +0 -1
  537. package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +0 -1
  538. package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +0 -1
  539. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +0 -1
  540. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +0 -1
  541. package/bundle/dist/codex-protocol/v2/McpServerMigration.js +0 -1
  542. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +0 -1
  543. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +0 -1
  544. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +0 -1
  545. package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +0 -1
  546. package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +0 -1
  547. package/bundle/dist/codex-protocol/v2/McpServerStatus.js +0 -1
  548. package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +0 -1
  549. package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +0 -1
  550. package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +0 -1
  551. package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +0 -1
  552. package/bundle/dist/codex-protocol/v2/McpToolCallError.js +0 -1
  553. package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +0 -1
  554. package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +0 -1
  555. package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +0 -1
  556. package/bundle/dist/codex-protocol/v2/MemoryCitation.js +0 -1
  557. package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +0 -1
  558. package/bundle/dist/codex-protocol/v2/MergeStrategy.js +0 -1
  559. package/bundle/dist/codex-protocol/v2/MigrationDetails.js +0 -1
  560. package/bundle/dist/codex-protocol/v2/Model.js +0 -1
  561. package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +0 -1
  562. package/bundle/dist/codex-protocol/v2/ModelListParams.js +0 -1
  563. package/bundle/dist/codex-protocol/v2/ModelListResponse.js +0 -1
  564. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +0 -1
  565. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +0 -1
  566. package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +0 -1
  567. package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +0 -1
  568. package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +0 -1
  569. package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +0 -1
  570. package/bundle/dist/codex-protocol/v2/ModelVerification.js +0 -1
  571. package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +0 -1
  572. package/bundle/dist/codex-protocol/v2/NetworkAccess.js +0 -1
  573. package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +0 -1
  574. package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +0 -1
  575. package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +0 -1
  576. package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +0 -1
  577. package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +0 -1
  578. package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +0 -1
  579. package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +0 -1
  580. package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +0 -1
  581. package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +0 -1
  582. package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +0 -1
  583. package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +0 -1
  584. package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +0 -1
  585. package/bundle/dist/codex-protocol/v2/PermissionProfile.js +0 -1
  586. package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +0 -1
  587. package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +0 -1
  588. package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +0 -1
  589. package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +0 -1
  590. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +0 -1
  591. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +0 -1
  592. package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +0 -1
  593. package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +0 -1
  594. package/bundle/dist/codex-protocol/v2/PluginAvailability.js +0 -1
  595. package/bundle/dist/codex-protocol/v2/PluginDetail.js +0 -1
  596. package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +0 -1
  597. package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +0 -1
  598. package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +0 -1
  599. package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +0 -1
  600. package/bundle/dist/codex-protocol/v2/PluginInterface.js +0 -1
  601. package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +0 -1
  602. package/bundle/dist/codex-protocol/v2/PluginListParams.js +0 -1
  603. package/bundle/dist/codex-protocol/v2/PluginListResponse.js +0 -1
  604. package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +0 -1
  605. package/bundle/dist/codex-protocol/v2/PluginReadParams.js +0 -1
  606. package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +0 -1
  607. package/bundle/dist/codex-protocol/v2/PluginShareContext.js +0 -1
  608. package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +0 -1
  609. package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +0 -1
  610. package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +0 -1
  611. package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +0 -1
  612. package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +0 -1
  613. package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +0 -1
  614. package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +0 -1
  615. package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +0 -1
  616. package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +0 -1
  617. package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +0 -1
  618. package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +0 -1
  619. package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +0 -1
  620. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +0 -1
  621. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +0 -1
  622. package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +0 -1
  623. package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +0 -1
  624. package/bundle/dist/codex-protocol/v2/PluginSource.js +0 -1
  625. package/bundle/dist/codex-protocol/v2/PluginSummary.js +0 -1
  626. package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +0 -1
  627. package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +0 -1
  628. package/bundle/dist/codex-protocol/v2/PluginsMigration.js +0 -1
  629. package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +0 -1
  630. package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +0 -1
  631. package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +0 -1
  632. package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +0 -1
  633. package/bundle/dist/codex-protocol/v2/ProfileV2.js +0 -1
  634. package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +0 -1
  635. package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +0 -1
  636. package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +0 -1
  637. package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +0 -1
  638. package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +0 -1
  639. package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +0 -1
  640. package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +0 -1
  641. package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +0 -1
  642. package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +0 -1
  643. package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +0 -1
  644. package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +0 -1
  645. package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +0 -1
  646. package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +0 -1
  647. package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +0 -1
  648. package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +0 -1
  649. package/bundle/dist/codex-protocol/v2/ReviewTarget.js +0 -1
  650. package/bundle/dist/codex-protocol/v2/SandboxMode.js +0 -1
  651. package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +0 -1
  652. package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +0 -1
  653. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +0 -1
  654. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +0 -1
  655. package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +0 -1
  656. package/bundle/dist/codex-protocol/v2/SessionMigration.js +0 -1
  657. package/bundle/dist/codex-protocol/v2/SessionSource.js +0 -1
  658. package/bundle/dist/codex-protocol/v2/SkillDependencies.js +0 -1
  659. package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +0 -1
  660. package/bundle/dist/codex-protocol/v2/SkillInterface.js +0 -1
  661. package/bundle/dist/codex-protocol/v2/SkillMetadata.js +0 -1
  662. package/bundle/dist/codex-protocol/v2/SkillScope.js +0 -1
  663. package/bundle/dist/codex-protocol/v2/SkillSummary.js +0 -1
  664. package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +0 -1
  665. package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +0 -1
  666. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +0 -1
  667. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +0 -1
  668. package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +0 -1
  669. package/bundle/dist/codex-protocol/v2/SkillsListParams.js +0 -1
  670. package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +0 -1
  671. package/bundle/dist/codex-protocol/v2/SortDirection.js +0 -1
  672. package/bundle/dist/codex-protocol/v2/SubagentMigration.js +0 -1
  673. package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +0 -1
  674. package/bundle/dist/codex-protocol/v2/TextElement.js +0 -1
  675. package/bundle/dist/codex-protocol/v2/TextPosition.js +0 -1
  676. package/bundle/dist/codex-protocol/v2/TextRange.js +0 -1
  677. package/bundle/dist/codex-protocol/v2/Thread.js +0 -1
  678. package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +0 -1
  679. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +0 -1
  680. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +0 -1
  681. package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +0 -1
  682. package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +0 -1
  683. package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +0 -1
  684. package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +0 -1
  685. package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +0 -1
  686. package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +0 -1
  687. package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +0 -1
  688. package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +0 -1
  689. package/bundle/dist/codex-protocol/v2/ThreadGoal.js +0 -1
  690. package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +0 -1
  691. package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +0 -1
  692. package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +0 -1
  693. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +0 -1
  694. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +0 -1
  695. package/bundle/dist/codex-protocol/v2/ThreadItem.js +0 -1
  696. package/bundle/dist/codex-protocol/v2/ThreadListParams.js +0 -1
  697. package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +0 -1
  698. package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +0 -1
  699. package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +0 -1
  700. package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +0 -1
  701. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +0 -1
  702. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +0 -1
  703. package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +0 -1
  704. package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +0 -1
  705. package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +0 -1
  706. package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +0 -1
  707. package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +0 -1
  708. package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +0 -1
  709. package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +0 -1
  710. package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +0 -1
  711. package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +0 -1
  712. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +0 -1
  713. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +0 -1
  714. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +0 -1
  715. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +0 -1
  716. package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +0 -1
  717. package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +0 -1
  718. package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +0 -1
  719. package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +0 -1
  720. package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +0 -1
  721. package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +0 -1
  722. package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +0 -1
  723. package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +0 -1
  724. package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +0 -1
  725. package/bundle/dist/codex-protocol/v2/ThreadSource.js +0 -1
  726. package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +0 -1
  727. package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +0 -1
  728. package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +0 -1
  729. package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +0 -1
  730. package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +0 -1
  731. package/bundle/dist/codex-protocol/v2/ThreadStatus.js +0 -1
  732. package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +0 -1
  733. package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +0 -1
  734. package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +0 -1
  735. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +0 -1
  736. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +0 -1
  737. package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +0 -1
  738. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +0 -1
  739. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +0 -1
  740. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +0 -1
  741. package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +0 -1
  742. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +0 -1
  743. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +0 -1
  744. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +0 -1
  745. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +0 -1
  746. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +0 -1
  747. package/bundle/dist/codex-protocol/v2/ToolsV2.js +0 -1
  748. package/bundle/dist/codex-protocol/v2/Turn.js +0 -1
  749. package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +0 -1
  750. package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +0 -1
  751. package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +0 -1
  752. package/bundle/dist/codex-protocol/v2/TurnError.js +0 -1
  753. package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +0 -1
  754. package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +0 -1
  755. package/bundle/dist/codex-protocol/v2/TurnItemsView.js +0 -1
  756. package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +0 -1
  757. package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +0 -1
  758. package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +0 -1
  759. package/bundle/dist/codex-protocol/v2/TurnStartParams.js +0 -1
  760. package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +0 -1
  761. package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +0 -1
  762. package/bundle/dist/codex-protocol/v2/TurnStatus.js +0 -1
  763. package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +0 -1
  764. package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +0 -1
  765. package/bundle/dist/codex-protocol/v2/UserInput.js +0 -1
  766. package/bundle/dist/codex-protocol/v2/WarningNotification.js +0 -1
  767. package/bundle/dist/codex-protocol/v2/WebSearchAction.js +0 -1
  768. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +0 -1
  769. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +0 -1
  770. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +0 -1
  771. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +0 -1
  772. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +0 -1
  773. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +0 -1
  774. package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +0 -1
  775. package/bundle/dist/codex-protocol/v2/WriteStatus.js +0 -1
  776. package/bundle/dist/codex-protocol/v2/index.js +0 -7
  777. 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/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -9
  778. 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/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
  779. 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/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
  780. 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/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
  781. 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/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +0 -46
  782. 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/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -119
  783. 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/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +0 -3044
  784. 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/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -59
  785. 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/node_modules/vitest/dist/index.js +0 -28
  786. package/bundle/dist/utils/providers/openai/codex-rpc.js +0 -153
  787. package/bundle/dist/utils/providers/openai/codex-worker.js +0 -642
  788. package/bundle/dist/utils/providers/openai/openai-worker-pool-config.js +0 -51
  789. package/bundle/src/codex-protocol/AbsolutePathBuf.ts +0 -14
  790. package/bundle/src/codex-protocol/AgentPath.ts +0 -5
  791. package/bundle/src/codex-protocol/ApplyPatchApprovalParams.ts +0 -24
  792. package/bundle/src/codex-protocol/ApplyPatchApprovalResponse.ts +0 -6
  793. package/bundle/src/codex-protocol/AuthMode.ts +0 -8
  794. package/bundle/src/codex-protocol/ClientInfo.ts +0 -5
  795. package/bundle/src/codex-protocol/ClientNotification.ts +0 -5
  796. package/bundle/src/codex-protocol/ClientRequest.ts +0 -176
  797. package/bundle/src/codex-protocol/CollaborationMode.ts +0 -10
  798. package/bundle/src/codex-protocol/ContentItem.ts +0 -9
  799. package/bundle/src/codex-protocol/ConversationGitInfo.ts +0 -9
  800. package/bundle/src/codex-protocol/ConversationSummary.ts +0 -19
  801. package/bundle/src/codex-protocol/ExecCommandApprovalParams.ts +0 -22
  802. package/bundle/src/codex-protocol/ExecCommandApprovalResponse.ts +0 -6
  803. package/bundle/src/codex-protocol/ExecPolicyAmendment.ts +0 -12
  804. package/bundle/src/codex-protocol/FileChange.ts +0 -8
  805. package/bundle/src/codex-protocol/ForcedLoginMethod.ts +0 -5
  806. package/bundle/src/codex-protocol/FunctionCallOutputBody.ts +0 -6
  807. package/bundle/src/codex-protocol/FunctionCallOutputContentItem.ts +0 -12
  808. package/bundle/src/codex-protocol/FuzzyFileSearchMatchType.ts +0 -5
  809. package/bundle/src/codex-protocol/FuzzyFileSearchParams.ts +0 -9
  810. package/bundle/src/codex-protocol/FuzzyFileSearchResponse.ts +0 -6
  811. package/bundle/src/codex-protocol/FuzzyFileSearchResult.ts +0 -16
  812. package/bundle/src/codex-protocol/FuzzyFileSearchSessionCompletedNotification.ts +0 -5
  813. package/bundle/src/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.ts +0 -10
  814. package/bundle/src/codex-protocol/GetAuthStatusParams.ts +0 -5
  815. package/bundle/src/codex-protocol/GetAuthStatusResponse.ts +0 -10
  816. package/bundle/src/codex-protocol/GetConversationSummaryParams.ts +0 -6
  817. package/bundle/src/codex-protocol/GetConversationSummaryResponse.ts +0 -6
  818. package/bundle/src/codex-protocol/GitDiffToRemoteParams.ts +0 -5
  819. package/bundle/src/codex-protocol/GitDiffToRemoteResponse.ts +0 -6
  820. package/bundle/src/codex-protocol/GitSha.ts +0 -5
  821. package/bundle/src/codex-protocol/ImageDetail.ts +0 -5
  822. package/bundle/src/codex-protocol/InitializeCapabilities.ts +0 -18
  823. package/bundle/src/codex-protocol/InitializeParams.ts +0 -10
  824. package/bundle/src/codex-protocol/InitializeResponse.ts +0 -22
  825. package/bundle/src/codex-protocol/InputModality.ts +0 -8
  826. package/bundle/src/codex-protocol/InternalSessionSource.ts +0 -5
  827. package/bundle/src/codex-protocol/LocalShellAction.ts +0 -6
  828. package/bundle/src/codex-protocol/LocalShellExecAction.ts +0 -11
  829. package/bundle/src/codex-protocol/LocalShellStatus.ts +0 -5
  830. package/bundle/src/codex-protocol/MessagePhase.ts +0 -11
  831. package/bundle/src/codex-protocol/ModeKind.ts +0 -8
  832. package/bundle/src/codex-protocol/NetworkPolicyAmendment.ts +0 -6
  833. package/bundle/src/codex-protocol/NetworkPolicyRuleAction.ts +0 -5
  834. package/bundle/src/codex-protocol/ParsedCommand.ts +0 -20
  835. package/bundle/src/codex-protocol/Personality.ts +0 -5
  836. package/bundle/src/codex-protocol/PlanType.ts +0 -17
  837. package/bundle/src/codex-protocol/RealtimeConversationVersion.ts +0 -5
  838. package/bundle/src/codex-protocol/RealtimeOutputModality.ts +0 -5
  839. package/bundle/src/codex-protocol/RealtimeVoice.ts +0 -24
  840. package/bundle/src/codex-protocol/RealtimeVoicesList.ts +0 -11
  841. package/bundle/src/codex-protocol/ReasoningEffort.ts +0 -8
  842. package/bundle/src/codex-protocol/ReasoningItemContent.ts +0 -7
  843. package/bundle/src/codex-protocol/ReasoningItemReasoningSummary.ts +0 -5
  844. package/bundle/src/codex-protocol/ReasoningSummary.ts +0 -10
  845. package/bundle/src/codex-protocol/RequestId.ts +0 -5
  846. package/bundle/src/codex-protocol/Resource.ts +0 -19
  847. package/bundle/src/codex-protocol/ResourceContent.ts +0 -27
  848. package/bundle/src/codex-protocol/ResourceTemplate.ts +0 -16
  849. package/bundle/src/codex-protocol/ResponseItem.ts +0 -63
  850. package/bundle/src/codex-protocol/ReviewDecision.ts +0 -17
  851. package/bundle/src/codex-protocol/ServerNotification.ts +0 -154
  852. package/bundle/src/codex-protocol/ServerRequest.ts +0 -47
  853. package/bundle/src/codex-protocol/SessionSource.ts +0 -15
  854. package/bundle/src/codex-protocol/Settings.ts +0 -13
  855. package/bundle/src/codex-protocol/SubAgentSource.ts +0 -20
  856. package/bundle/src/codex-protocol/ThreadId.ts +0 -5
  857. package/bundle/src/codex-protocol/ThreadMemoryMode.ts +0 -5
  858. package/bundle/src/codex-protocol/Tool.ts +0 -18
  859. package/bundle/src/codex-protocol/Verbosity.ts +0 -9
  860. package/bundle/src/codex-protocol/WebSearchAction.ts +0 -9
  861. package/bundle/src/codex-protocol/WebSearchContextSize.ts +0 -5
  862. package/bundle/src/codex-protocol/WebSearchLocation.ts +0 -10
  863. package/bundle/src/codex-protocol/WebSearchMode.ts +0 -5
  864. package/bundle/src/codex-protocol/WebSearchToolConfig.ts +0 -11
  865. package/bundle/src/codex-protocol/index.ts +0 -79
  866. package/bundle/src/codex-protocol/serde_json/JsonValue.ts +0 -11
  867. package/bundle/src/codex-protocol/v2/Account.ts +0 -9
  868. package/bundle/src/codex-protocol/v2/AccountLoginCompletedNotification.ts +0 -9
  869. package/bundle/src/codex-protocol/v2/AccountRateLimitsUpdatedNotification.ts +0 -6
  870. package/bundle/src/codex-protocol/v2/AccountUpdatedNotification.ts +0 -7
  871. package/bundle/src/codex-protocol/v2/ActivePermissionProfile.ts +0 -22
  872. package/bundle/src/codex-protocol/v2/ActivePermissionProfileModification.ts +0 -9
  873. package/bundle/src/codex-protocol/v2/AddCreditsNudgeCreditType.ts +0 -5
  874. package/bundle/src/codex-protocol/v2/AddCreditsNudgeEmailStatus.ts +0 -5
  875. package/bundle/src/codex-protocol/v2/AdditionalFileSystemPermissions.ts +0 -18
  876. package/bundle/src/codex-protocol/v2/AdditionalNetworkPermissions.ts +0 -5
  877. package/bundle/src/codex-protocol/v2/AdditionalPermissionProfile.ts +0 -13
  878. package/bundle/src/codex-protocol/v2/AgentMessageDeltaNotification.ts +0 -10
  879. package/bundle/src/codex-protocol/v2/AnalyticsConfig.ts +0 -14
  880. package/bundle/src/codex-protocol/v2/AppBranding.ts +0 -15
  881. package/bundle/src/codex-protocol/v2/AppInfo.ts +0 -32
  882. package/bundle/src/codex-protocol/v2/AppListUpdatedNotification.ts +0 -9
  883. package/bundle/src/codex-protocol/v2/AppMetadata.ts +0 -20
  884. package/bundle/src/codex-protocol/v2/AppReview.ts +0 -5
  885. package/bundle/src/codex-protocol/v2/AppScreenshot.ts +0 -5
  886. package/bundle/src/codex-protocol/v2/AppSummary.ts +0 -14
  887. package/bundle/src/codex-protocol/v2/AppToolApproval.ts +0 -5
  888. package/bundle/src/codex-protocol/v2/AppToolsConfig.ts +0 -8
  889. package/bundle/src/codex-protocol/v2/ApprovalsReviewer.ts +0 -12
  890. package/bundle/src/codex-protocol/v2/AppsConfig.ts +0 -17
  891. package/bundle/src/codex-protocol/v2/AppsDefaultConfig.ts +0 -9
  892. package/bundle/src/codex-protocol/v2/AppsListParams.ts +0 -25
  893. package/bundle/src/codex-protocol/v2/AppsListResponse.ts +0 -16
  894. package/bundle/src/codex-protocol/v2/AskForApproval.ts +0 -18
  895. package/bundle/src/codex-protocol/v2/AutoReviewDecisionSource.ts +0 -8
  896. package/bundle/src/codex-protocol/v2/ByteRange.ts +0 -5
  897. package/bundle/src/codex-protocol/v2/CancelLoginAccountParams.ts +0 -5
  898. package/bundle/src/codex-protocol/v2/CancelLoginAccountResponse.ts +0 -6
  899. package/bundle/src/codex-protocol/v2/CancelLoginAccountStatus.ts +0 -5
  900. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshParams.ts +0 -18
  901. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshReason.ts +0 -5
  902. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.ts +0 -9
  903. package/bundle/src/codex-protocol/v2/CodexErrorInfo.ts +0 -27
  904. package/bundle/src/codex-protocol/v2/CollabAgentState.ts +0 -6
  905. package/bundle/src/codex-protocol/v2/CollabAgentStatus.ts +0 -12
  906. package/bundle/src/codex-protocol/v2/CollabAgentTool.ts +0 -5
  907. package/bundle/src/codex-protocol/v2/CollabAgentToolCallStatus.ts +0 -5
  908. package/bundle/src/codex-protocol/v2/CollaborationModeMask.ts +0 -15
  909. package/bundle/src/codex-protocol/v2/CommandAction.ts +0 -10
  910. package/bundle/src/codex-protocol/v2/CommandExecOutputDeltaNotification.ts +0 -31
  911. package/bundle/src/codex-protocol/v2/CommandExecOutputStream.ts +0 -8
  912. package/bundle/src/codex-protocol/v2/CommandExecParams.ts +0 -87
  913. package/bundle/src/codex-protocol/v2/CommandExecResizeParams.ts +0 -19
  914. package/bundle/src/codex-protocol/v2/CommandExecResizeResponse.ts +0 -8
  915. package/bundle/src/codex-protocol/v2/CommandExecResponse.ts +0 -25
  916. package/bundle/src/codex-protocol/v2/CommandExecTerminalSize.ts +0 -17
  917. package/bundle/src/codex-protocol/v2/CommandExecTerminateParams.ts +0 -14
  918. package/bundle/src/codex-protocol/v2/CommandExecTerminateResponse.ts +0 -8
  919. package/bundle/src/codex-protocol/v2/CommandExecWriteParams.ts +0 -23
  920. package/bundle/src/codex-protocol/v2/CommandExecWriteResponse.ts +0 -8
  921. package/bundle/src/codex-protocol/v2/CommandExecutionApprovalDecision.ts +0 -13
  922. package/bundle/src/codex-protocol/v2/CommandExecutionOutputDeltaNotification.ts +0 -10
  923. package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalParams.ts +0 -47
  924. package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalResponse.ts +0 -8
  925. package/bundle/src/codex-protocol/v2/CommandExecutionSource.ts +0 -9
  926. package/bundle/src/codex-protocol/v2/CommandExecutionStatus.ts +0 -5
  927. package/bundle/src/codex-protocol/v2/CommandMigration.ts +0 -5
  928. package/bundle/src/codex-protocol/v2/Config.ts +0 -53
  929. package/bundle/src/codex-protocol/v2/ConfigBatchWriteParams.ts +0 -17
  930. package/bundle/src/codex-protocol/v2/ConfigEdit.ts +0 -7
  931. package/bundle/src/codex-protocol/v2/ConfigLayer.ts +0 -12
  932. package/bundle/src/codex-protocol/v2/ConfigLayerMetadata.ts +0 -6
  933. package/bundle/src/codex-protocol/v2/ConfigLayerSource.ts +0 -27
  934. package/bundle/src/codex-protocol/v2/ConfigReadParams.ts +0 -13
  935. package/bundle/src/codex-protocol/v2/ConfigReadResponse.ts +0 -12
  936. package/bundle/src/codex-protocol/v2/ConfigRequirements.ts +0 -15
  937. package/bundle/src/codex-protocol/v2/ConfigRequirementsReadResponse.ts +0 -11
  938. package/bundle/src/codex-protocol/v2/ConfigValueWriteParams.ts +0 -16
  939. package/bundle/src/codex-protocol/v2/ConfigWarningNotification.ts +0 -23
  940. package/bundle/src/codex-protocol/v2/ConfigWriteResponse.ts +0 -16
  941. package/bundle/src/codex-protocol/v2/ConfiguredHookHandler.ts +0 -14
  942. package/bundle/src/codex-protocol/v2/ConfiguredHookMatcherGroup.ts +0 -9
  943. package/bundle/src/codex-protocol/v2/ContextCompactedNotification.ts +0 -8
  944. package/bundle/src/codex-protocol/v2/CreditsSnapshot.ts +0 -5
  945. package/bundle/src/codex-protocol/v2/DeprecationNoticeNotification.ts +0 -14
  946. package/bundle/src/codex-protocol/v2/DynamicToolCallOutputContentItem.ts +0 -7
  947. package/bundle/src/codex-protocol/v2/DynamicToolCallParams.ts +0 -13
  948. package/bundle/src/codex-protocol/v2/DynamicToolCallResponse.ts +0 -9
  949. package/bundle/src/codex-protocol/v2/DynamicToolCallStatus.ts +0 -5
  950. package/bundle/src/codex-protocol/v2/DynamicToolSpec.ts +0 -12
  951. package/bundle/src/codex-protocol/v2/ErrorNotification.ts +0 -11
  952. package/bundle/src/codex-protocol/v2/ExecPolicyAmendment.ts +0 -5
  953. package/bundle/src/codex-protocol/v2/ExperimentalFeature.ts +0 -38
  954. package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.ts +0 -13
  955. package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +0 -10
  956. package/bundle/src/codex-protocol/v2/ExperimentalFeatureListParams.ts +0 -14
  957. package/bundle/src/codex-protocol/v2/ExperimentalFeatureListResponse.ts +0 -13
  958. package/bundle/src/codex-protocol/v2/ExperimentalFeatureStage.ts +0 -10
  959. package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectParams.ts +0 -14
  960. package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectResponse.ts +0 -6
  961. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.ts +0 -5
  962. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportParams.ts +0 -8
  963. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportResponse.ts +0 -5
  964. package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItem.ts +0 -15
  965. package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItemType.ts +0 -14
  966. package/bundle/src/codex-protocol/v2/FeedbackUploadParams.ts +0 -12
  967. package/bundle/src/codex-protocol/v2/FeedbackUploadResponse.ts +0 -5
  968. package/bundle/src/codex-protocol/v2/FileChangeApprovalDecision.ts +0 -5
  969. package/bundle/src/codex-protocol/v2/FileChangeOutputDeltaNotification.ts +0 -15
  970. package/bundle/src/codex-protocol/v2/FileChangePatchUpdatedNotification.ts +0 -11
  971. package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalParams.ts +0 -22
  972. package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalResponse.ts +0 -6
  973. package/bundle/src/codex-protocol/v2/FileSystemAccessMode.ts +0 -5
  974. package/bundle/src/codex-protocol/v2/FileSystemPath.ts +0 -10
  975. package/bundle/src/codex-protocol/v2/FileSystemSandboxEntry.ts +0 -7
  976. package/bundle/src/codex-protocol/v2/FileSystemSpecialPath.ts +0 -11
  977. package/bundle/src/codex-protocol/v2/FileUpdateChange.ts +0 -6
  978. package/bundle/src/codex-protocol/v2/FsChangedNotification.ts +0 -18
  979. package/bundle/src/codex-protocol/v2/FsCopyParams.ts +0 -22
  980. package/bundle/src/codex-protocol/v2/FsCopyResponse.ts +0 -8
  981. package/bundle/src/codex-protocol/v2/FsCreateDirectoryParams.ts +0 -18
  982. package/bundle/src/codex-protocol/v2/FsCreateDirectoryResponse.ts +0 -8
  983. package/bundle/src/codex-protocol/v2/FsGetMetadataParams.ts +0 -14
  984. package/bundle/src/codex-protocol/v2/FsGetMetadataResponse.ts +0 -29
  985. package/bundle/src/codex-protocol/v2/FsReadDirectoryEntry.ts +0 -21
  986. package/bundle/src/codex-protocol/v2/FsReadDirectoryParams.ts +0 -14
  987. package/bundle/src/codex-protocol/v2/FsReadDirectoryResponse.ts +0 -14
  988. package/bundle/src/codex-protocol/v2/FsReadFileParams.ts +0 -14
  989. package/bundle/src/codex-protocol/v2/FsReadFileResponse.ts +0 -13
  990. package/bundle/src/codex-protocol/v2/FsRemoveParams.ts +0 -22
  991. package/bundle/src/codex-protocol/v2/FsRemoveResponse.ts +0 -8
  992. package/bundle/src/codex-protocol/v2/FsUnwatchParams.ts +0 -13
  993. package/bundle/src/codex-protocol/v2/FsUnwatchResponse.ts +0 -8
  994. package/bundle/src/codex-protocol/v2/FsWatchParams.ts +0 -18
  995. package/bundle/src/codex-protocol/v2/FsWatchResponse.ts +0 -14
  996. package/bundle/src/codex-protocol/v2/FsWriteFileParams.ts +0 -18
  997. package/bundle/src/codex-protocol/v2/FsWriteFileResponse.ts +0 -8
  998. package/bundle/src/codex-protocol/v2/GetAccountParams.ts +0 -14
  999. package/bundle/src/codex-protocol/v2/GetAccountRateLimitsResponse.ts +0 -15
  1000. package/bundle/src/codex-protocol/v2/GetAccountResponse.ts +0 -6
  1001. package/bundle/src/codex-protocol/v2/GitInfo.ts +0 -5
  1002. package/bundle/src/codex-protocol/v2/GrantedPermissionProfile.ts +0 -10
  1003. package/bundle/src/codex-protocol/v2/GuardianApprovalReview.ts +0 -18
  1004. package/bundle/src/codex-protocol/v2/GuardianApprovalReviewAction.ts +0 -34
  1005. package/bundle/src/codex-protocol/v2/GuardianApprovalReviewStatus.ts +0 -13
  1006. package/bundle/src/codex-protocol/v2/GuardianCommandSource.ts +0 -5
  1007. package/bundle/src/codex-protocol/v2/GuardianRiskLevel.ts +0 -8
  1008. package/bundle/src/codex-protocol/v2/GuardianUserAuthorization.ts +0 -8
  1009. package/bundle/src/codex-protocol/v2/GuardianWarningNotification.ts +0 -14
  1010. package/bundle/src/codex-protocol/v2/HookCompletedNotification.ts +0 -10
  1011. package/bundle/src/codex-protocol/v2/HookErrorInfo.ts +0 -5
  1012. package/bundle/src/codex-protocol/v2/HookEventName.ts +0 -13
  1013. package/bundle/src/codex-protocol/v2/HookExecutionMode.ts +0 -5
  1014. package/bundle/src/codex-protocol/v2/HookHandlerType.ts +0 -5
  1015. package/bundle/src/codex-protocol/v2/HookMetadata.ts +0 -26
  1016. package/bundle/src/codex-protocol/v2/HookMigration.ts +0 -5
  1017. package/bundle/src/codex-protocol/v2/HookOutputEntry.ts +0 -6
  1018. package/bundle/src/codex-protocol/v2/HookOutputEntryKind.ts +0 -5
  1019. package/bundle/src/codex-protocol/v2/HookPromptFragment.ts +0 -5
  1020. package/bundle/src/codex-protocol/v2/HookRunStatus.ts +0 -5
  1021. package/bundle/src/codex-protocol/v2/HookRunSummary.ts +0 -28
  1022. package/bundle/src/codex-protocol/v2/HookScope.ts +0 -5
  1023. package/bundle/src/codex-protocol/v2/HookSource.ts +0 -15
  1024. package/bundle/src/codex-protocol/v2/HookStartedNotification.ts +0 -10
  1025. package/bundle/src/codex-protocol/v2/HookTrustStatus.ts +0 -5
  1026. package/bundle/src/codex-protocol/v2/HooksListEntry.ts +0 -12
  1027. package/bundle/src/codex-protocol/v2/HooksListParams.ts +0 -10
  1028. package/bundle/src/codex-protocol/v2/HooksListResponse.ts +0 -6
  1029. package/bundle/src/codex-protocol/v2/ItemCompletedNotification.ts +0 -14
  1030. package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +0 -44
  1031. package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +0 -38
  1032. package/bundle/src/codex-protocol/v2/ItemStartedNotification.ts +0 -14
  1033. package/bundle/src/codex-protocol/v2/ListMcpServerStatusParams.ts +0 -20
  1034. package/bundle/src/codex-protocol/v2/ListMcpServerStatusResponse.ts +0 -13
  1035. package/bundle/src/codex-protocol/v2/LoginAccountParams.ts +0 -27
  1036. package/bundle/src/codex-protocol/v2/LoginAccountResponse.ts +0 -27
  1037. package/bundle/src/codex-protocol/v2/LogoutAccountResponse.ts +0 -5
  1038. package/bundle/src/codex-protocol/v2/ManagedHooksRequirements.ts +0 -17
  1039. package/bundle/src/codex-protocol/v2/MarketplaceAddParams.ts +0 -9
  1040. package/bundle/src/codex-protocol/v2/MarketplaceAddResponse.ts +0 -10
  1041. package/bundle/src/codex-protocol/v2/MarketplaceInterface.ts +0 -5
  1042. package/bundle/src/codex-protocol/v2/MarketplaceLoadErrorInfo.ts +0 -6
  1043. package/bundle/src/codex-protocol/v2/MarketplaceRemoveParams.ts +0 -5
  1044. package/bundle/src/codex-protocol/v2/MarketplaceRemoveResponse.ts +0 -9
  1045. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeErrorInfo.ts +0 -5
  1046. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeParams.ts +0 -5
  1047. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeResponse.ts +0 -11
  1048. package/bundle/src/codex-protocol/v2/McpAuthStatus.ts +0 -5
  1049. package/bundle/src/codex-protocol/v2/McpElicitationArrayType.ts +0 -5
  1050. package/bundle/src/codex-protocol/v2/McpElicitationBooleanSchema.ts +0 -11
  1051. package/bundle/src/codex-protocol/v2/McpElicitationBooleanType.ts +0 -5
  1052. package/bundle/src/codex-protocol/v2/McpElicitationConstOption.ts +0 -5
  1053. package/bundle/src/codex-protocol/v2/McpElicitationEnumSchema.ts +0 -11
  1054. package/bundle/src/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +0 -13
  1055. package/bundle/src/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.ts +0 -9
  1056. package/bundle/src/codex-protocol/v2/McpElicitationNumberSchema.ts +0 -13
  1057. package/bundle/src/codex-protocol/v2/McpElicitationNumberType.ts +0 -5
  1058. package/bundle/src/codex-protocol/v2/McpElicitationObjectType.ts +0 -5
  1059. package/bundle/src/codex-protocol/v2/McpElicitationPrimitiveSchema.ts +0 -13
  1060. package/bundle/src/codex-protocol/v2/McpElicitationSchema.ts +0 -18
  1061. package/bundle/src/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.ts +0 -9
  1062. package/bundle/src/codex-protocol/v2/McpElicitationStringFormat.ts +0 -5
  1063. package/bundle/src/codex-protocol/v2/McpElicitationStringSchema.ts +0 -15
  1064. package/bundle/src/codex-protocol/v2/McpElicitationStringType.ts +0 -5
  1065. package/bundle/src/codex-protocol/v2/McpElicitationTitledEnumItems.ts +0 -6
  1066. package/bundle/src/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +0 -15
  1067. package/bundle/src/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +0 -13
  1068. package/bundle/src/codex-protocol/v2/McpElicitationUntitledEnumItems.ts +0 -9
  1069. package/bundle/src/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +0 -15
  1070. package/bundle/src/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +0 -12
  1071. package/bundle/src/codex-protocol/v2/McpResourceReadParams.ts +0 -5
  1072. package/bundle/src/codex-protocol/v2/McpResourceReadResponse.ts +0 -6
  1073. package/bundle/src/codex-protocol/v2/McpServerElicitationAction.ts +0 -5
  1074. package/bundle/src/codex-protocol/v2/McpServerElicitationRequestParams.ts +0 -27
  1075. package/bundle/src/codex-protocol/v2/McpServerElicitationRequestResponse.ts +0 -19
  1076. package/bundle/src/codex-protocol/v2/McpServerMigration.ts +0 -5
  1077. package/bundle/src/codex-protocol/v2/McpServerOauthLoginCompletedNotification.ts +0 -9
  1078. package/bundle/src/codex-protocol/v2/McpServerOauthLoginParams.ts +0 -9
  1079. package/bundle/src/codex-protocol/v2/McpServerOauthLoginResponse.ts +0 -5
  1080. package/bundle/src/codex-protocol/v2/McpServerRefreshResponse.ts +0 -5
  1081. package/bundle/src/codex-protocol/v2/McpServerStartupState.ts +0 -5
  1082. package/bundle/src/codex-protocol/v2/McpServerStatus.ts +0 -15
  1083. package/bundle/src/codex-protocol/v2/McpServerStatusDetail.ts +0 -5
  1084. package/bundle/src/codex-protocol/v2/McpServerStatusUpdatedNotification.ts +0 -10
  1085. package/bundle/src/codex-protocol/v2/McpServerToolCallParams.ts +0 -12
  1086. package/bundle/src/codex-protocol/v2/McpServerToolCallResponse.ts +0 -11
  1087. package/bundle/src/codex-protocol/v2/McpToolCallError.ts +0 -5
  1088. package/bundle/src/codex-protocol/v2/McpToolCallProgressNotification.ts +0 -10
  1089. package/bundle/src/codex-protocol/v2/McpToolCallResult.ts +0 -10
  1090. package/bundle/src/codex-protocol/v2/McpToolCallStatus.ts +0 -5
  1091. package/bundle/src/codex-protocol/v2/MemoryCitation.ts +0 -6
  1092. package/bundle/src/codex-protocol/v2/MemoryCitationEntry.ts +0 -10
  1093. package/bundle/src/codex-protocol/v2/MergeStrategy.ts +0 -5
  1094. package/bundle/src/codex-protocol/v2/MigrationDetails.ts +0 -18
  1095. package/bundle/src/codex-protocol/v2/Model.ts +0 -30
  1096. package/bundle/src/codex-protocol/v2/ModelAvailabilityNux.ts +0 -5
  1097. package/bundle/src/codex-protocol/v2/ModelListParams.ts +0 -18
  1098. package/bundle/src/codex-protocol/v2/ModelListResponse.ts +0 -13
  1099. package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadParams.ts +0 -5
  1100. package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.ts +0 -9
  1101. package/bundle/src/codex-protocol/v2/ModelRerouteReason.ts +0 -5
  1102. package/bundle/src/codex-protocol/v2/ModelReroutedNotification.ts +0 -12
  1103. package/bundle/src/codex-protocol/v2/ModelServiceTier.ts +0 -5
  1104. package/bundle/src/codex-protocol/v2/ModelUpgradeInfo.ts +0 -10
  1105. package/bundle/src/codex-protocol/v2/ModelVerification.ts +0 -5
  1106. package/bundle/src/codex-protocol/v2/ModelVerificationNotification.ts +0 -10
  1107. package/bundle/src/codex-protocol/v2/NetworkAccess.ts +0 -5
  1108. package/bundle/src/codex-protocol/v2/NetworkApprovalContext.ts +0 -6
  1109. package/bundle/src/codex-protocol/v2/NetworkApprovalProtocol.ts +0 -5
  1110. package/bundle/src/codex-protocol/v2/NetworkDomainPermission.ts +0 -5
  1111. package/bundle/src/codex-protocol/v2/NetworkPolicyAmendment.ts +0 -6
  1112. package/bundle/src/codex-protocol/v2/NetworkPolicyRuleAction.ts +0 -5
  1113. package/bundle/src/codex-protocol/v2/NetworkRequirements.ts +0 -40
  1114. package/bundle/src/codex-protocol/v2/NetworkUnixSocketPermission.ts +0 -5
  1115. package/bundle/src/codex-protocol/v2/NonSteerableTurnKind.ts +0 -5
  1116. package/bundle/src/codex-protocol/v2/OverriddenMetadata.ts +0 -11
  1117. package/bundle/src/codex-protocol/v2/PatchApplyStatus.ts +0 -5
  1118. package/bundle/src/codex-protocol/v2/PatchChangeKind.ts +0 -8
  1119. package/bundle/src/codex-protocol/v2/PermissionGrantScope.ts +0 -5
  1120. package/bundle/src/codex-protocol/v2/PermissionProfile.ts +0 -14
  1121. package/bundle/src/codex-protocol/v2/PermissionProfileFileSystemPermissions.ts +0 -8
  1122. package/bundle/src/codex-protocol/v2/PermissionProfileModificationParams.ts +0 -9
  1123. package/bundle/src/codex-protocol/v2/PermissionProfileNetworkPermissions.ts +0 -5
  1124. package/bundle/src/codex-protocol/v2/PermissionProfileSelectionParams.ts +0 -10
  1125. package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalParams.ts +0 -18
  1126. package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalResponse.ts +0 -14
  1127. package/bundle/src/codex-protocol/v2/PlanDeltaNotification.ts +0 -14
  1128. package/bundle/src/codex-protocol/v2/PluginAuthPolicy.ts +0 -5
  1129. package/bundle/src/codex-protocol/v2/PluginAvailability.ts +0 -5
  1130. package/bundle/src/codex-protocol/v2/PluginDetail.ts +0 -19
  1131. package/bundle/src/codex-protocol/v2/PluginHookSummary.ts +0 -6
  1132. package/bundle/src/codex-protocol/v2/PluginInstallParams.ts +0 -10
  1133. package/bundle/src/codex-protocol/v2/PluginInstallPolicy.ts +0 -5
  1134. package/bundle/src/codex-protocol/v2/PluginInstallResponse.ts +0 -10
  1135. package/bundle/src/codex-protocol/v2/PluginInterface.ts +0 -46
  1136. package/bundle/src/codex-protocol/v2/PluginListMarketplaceKind.ts +0 -5
  1137. package/bundle/src/codex-protocol/v2/PluginListParams.ts +0 -18
  1138. package/bundle/src/codex-protocol/v2/PluginListResponse.ts +0 -11
  1139. package/bundle/src/codex-protocol/v2/PluginMarketplaceEntry.ts +0 -17
  1140. package/bundle/src/codex-protocol/v2/PluginReadParams.ts +0 -10
  1141. package/bundle/src/codex-protocol/v2/PluginReadResponse.ts +0 -6
  1142. package/bundle/src/codex-protocol/v2/PluginShareContext.ts +0 -12
  1143. package/bundle/src/codex-protocol/v2/PluginShareDeleteParams.ts +0 -5
  1144. package/bundle/src/codex-protocol/v2/PluginShareDeleteResponse.ts +0 -5
  1145. package/bundle/src/codex-protocol/v2/PluginShareDiscoverability.ts +0 -5
  1146. package/bundle/src/codex-protocol/v2/PluginShareListItem.ts +0 -11
  1147. package/bundle/src/codex-protocol/v2/PluginShareListParams.ts +0 -5
  1148. package/bundle/src/codex-protocol/v2/PluginShareListResponse.ts +0 -6
  1149. package/bundle/src/codex-protocol/v2/PluginSharePrincipal.ts +0 -10
  1150. package/bundle/src/codex-protocol/v2/PluginSharePrincipalType.ts +0 -5
  1151. package/bundle/src/codex-protocol/v2/PluginShareSaveParams.ts +0 -13
  1152. package/bundle/src/codex-protocol/v2/PluginShareSaveResponse.ts +0 -5
  1153. package/bundle/src/codex-protocol/v2/PluginShareTarget.ts +0 -6
  1154. package/bundle/src/codex-protocol/v2/PluginShareUpdateDiscoverability.ts +0 -5
  1155. package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsParams.ts +0 -11
  1156. package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsResponse.ts +0 -10
  1157. package/bundle/src/codex-protocol/v2/PluginSkillReadParams.ts +0 -9
  1158. package/bundle/src/codex-protocol/v2/PluginSkillReadResponse.ts +0 -5
  1159. package/bundle/src/codex-protocol/v2/PluginSource.ts +0 -9
  1160. package/bundle/src/codex-protocol/v2/PluginSummary.ts +0 -29
  1161. package/bundle/src/codex-protocol/v2/PluginUninstallParams.ts +0 -5
  1162. package/bundle/src/codex-protocol/v2/PluginUninstallResponse.ts +0 -5
  1163. package/bundle/src/codex-protocol/v2/PluginsMigration.ts +0 -5
  1164. package/bundle/src/codex-protocol/v2/ProcessExitedNotification.ts +0 -43
  1165. package/bundle/src/codex-protocol/v2/ProcessOutputDeltaNotification.ts +0 -27
  1166. package/bundle/src/codex-protocol/v2/ProcessOutputStream.ts +0 -8
  1167. package/bundle/src/codex-protocol/v2/ProcessTerminalSize.ts +0 -17
  1168. package/bundle/src/codex-protocol/v2/ProfileV2.ts +0 -37
  1169. package/bundle/src/codex-protocol/v2/RateLimitReachedType.ts +0 -10
  1170. package/bundle/src/codex-protocol/v2/RateLimitSnapshot.ts +0 -17
  1171. package/bundle/src/codex-protocol/v2/RateLimitWindow.ts +0 -9
  1172. package/bundle/src/codex-protocol/v2/RawResponseItemCompletedNotification.ts +0 -10
  1173. package/bundle/src/codex-protocol/v2/ReasoningEffortOption.ts +0 -6
  1174. package/bundle/src/codex-protocol/v2/ReasoningSummaryPartAddedNotification.ts +0 -10
  1175. package/bundle/src/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.ts +0 -11
  1176. package/bundle/src/codex-protocol/v2/ReasoningTextDeltaNotification.ts +0 -11
  1177. package/bundle/src/codex-protocol/v2/RemoteControlConnectionStatus.ts +0 -5
  1178. package/bundle/src/codex-protocol/v2/RemoteControlStatusChangedNotification.ts +0 -12
  1179. package/bundle/src/codex-protocol/v2/RequestPermissionProfile.ts +0 -10
  1180. package/bundle/src/codex-protocol/v2/ResidencyRequirement.ts +0 -5
  1181. package/bundle/src/codex-protocol/v2/ReviewDelivery.ts +0 -5
  1182. package/bundle/src/codex-protocol/v2/ReviewStartParams.ts +0 -15
  1183. package/bundle/src/codex-protocol/v2/ReviewStartResponse.ts +0 -15
  1184. package/bundle/src/codex-protocol/v2/ReviewTarget.ts +0 -16
  1185. package/bundle/src/codex-protocol/v2/SandboxMode.ts +0 -5
  1186. package/bundle/src/codex-protocol/v2/SandboxPolicy.ts +0 -17
  1187. package/bundle/src/codex-protocol/v2/SandboxWorkspaceWrite.ts +0 -10
  1188. package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailParams.ts +0 -6
  1189. package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.ts +0 -6
  1190. package/bundle/src/codex-protocol/v2/ServerRequestResolvedNotification.ts +0 -6
  1191. package/bundle/src/codex-protocol/v2/SessionMigration.ts +0 -5
  1192. package/bundle/src/codex-protocol/v2/SessionSource.ts +0 -13
  1193. package/bundle/src/codex-protocol/v2/SkillDependencies.ts +0 -6
  1194. package/bundle/src/codex-protocol/v2/SkillErrorInfo.ts +0 -5
  1195. package/bundle/src/codex-protocol/v2/SkillInterface.ts +0 -13
  1196. package/bundle/src/codex-protocol/v2/SkillMetadata.ts +0 -21
  1197. package/bundle/src/codex-protocol/v2/SkillScope.ts +0 -5
  1198. package/bundle/src/codex-protocol/v2/SkillSummary.ts +0 -14
  1199. package/bundle/src/codex-protocol/v2/SkillToolDependency.ts +0 -12
  1200. package/bundle/src/codex-protocol/v2/SkillsChangedNotification.ts +0 -11
  1201. package/bundle/src/codex-protocol/v2/SkillsConfigWriteParams.ts +0 -16
  1202. package/bundle/src/codex-protocol/v2/SkillsConfigWriteResponse.ts +0 -5
  1203. package/bundle/src/codex-protocol/v2/SkillsListEntry.ts +0 -11
  1204. package/bundle/src/codex-protocol/v2/SkillsListParams.ts +0 -14
  1205. package/bundle/src/codex-protocol/v2/SkillsListResponse.ts +0 -6
  1206. package/bundle/src/codex-protocol/v2/SortDirection.ts +0 -5
  1207. package/bundle/src/codex-protocol/v2/SubagentMigration.ts +0 -5
  1208. package/bundle/src/codex-protocol/v2/TerminalInteractionNotification.ts +0 -11
  1209. package/bundle/src/codex-protocol/v2/TextElement.ts +0 -15
  1210. package/bundle/src/codex-protocol/v2/TextPosition.ts +0 -14
  1211. package/bundle/src/codex-protocol/v2/TextRange.ts +0 -6
  1212. package/bundle/src/codex-protocol/v2/Thread.ts +0 -88
  1213. package/bundle/src/codex-protocol/v2/ThreadActiveFlag.ts +0 -5
  1214. package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.ts +0 -12
  1215. package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.ts +0 -5
  1216. package/bundle/src/codex-protocol/v2/ThreadArchiveParams.ts +0 -5
  1217. package/bundle/src/codex-protocol/v2/ThreadArchiveResponse.ts +0 -5
  1218. package/bundle/src/codex-protocol/v2/ThreadArchivedNotification.ts +0 -5
  1219. package/bundle/src/codex-protocol/v2/ThreadClosedNotification.ts +0 -5
  1220. package/bundle/src/codex-protocol/v2/ThreadCompactStartParams.ts +0 -5
  1221. package/bundle/src/codex-protocol/v2/ThreadCompactStartResponse.ts +0 -5
  1222. package/bundle/src/codex-protocol/v2/ThreadForkParams.ts +0 -40
  1223. package/bundle/src/codex-protocol/v2/ThreadForkResponse.ts +0 -30
  1224. package/bundle/src/codex-protocol/v2/ThreadGoal.ts +0 -15
  1225. package/bundle/src/codex-protocol/v2/ThreadGoalClearedNotification.ts +0 -5
  1226. package/bundle/src/codex-protocol/v2/ThreadGoalStatus.ts +0 -5
  1227. package/bundle/src/codex-protocol/v2/ThreadGoalUpdatedNotification.ts +0 -10
  1228. package/bundle/src/codex-protocol/v2/ThreadInjectItemsParams.ts +0 -12
  1229. package/bundle/src/codex-protocol/v2/ThreadInjectItemsResponse.ts +0 -5
  1230. package/bundle/src/codex-protocol/v2/ThreadItem.ts +0 -156
  1231. package/bundle/src/codex-protocol/v2/ThreadListParams.ts +0 -55
  1232. package/bundle/src/codex-protocol/v2/ThreadListResponse.ts +0 -20
  1233. package/bundle/src/codex-protocol/v2/ThreadLoadedListParams.ts +0 -14
  1234. package/bundle/src/codex-protocol/v2/ThreadLoadedListResponse.ts +0 -15
  1235. package/bundle/src/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +0 -21
  1236. package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateParams.ts +0 -14
  1237. package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateResponse.ts +0 -6
  1238. package/bundle/src/codex-protocol/v2/ThreadNameUpdatedNotification.ts +0 -5
  1239. package/bundle/src/codex-protocol/v2/ThreadReadParams.ts +0 -11
  1240. package/bundle/src/codex-protocol/v2/ThreadReadResponse.ts +0 -6
  1241. package/bundle/src/codex-protocol/v2/ThreadRealtimeAudioChunk.ts +0 -14
  1242. package/bundle/src/codex-protocol/v2/ThreadRealtimeClosedNotification.ts +0 -8
  1243. package/bundle/src/codex-protocol/v2/ThreadRealtimeErrorNotification.ts +0 -8
  1244. package/bundle/src/codex-protocol/v2/ThreadRealtimeItemAddedNotification.ts +0 -9
  1245. package/bundle/src/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +0 -12
  1246. package/bundle/src/codex-protocol/v2/ThreadRealtimeSdpNotification.ts +0 -8
  1247. package/bundle/src/codex-protocol/v2/ThreadRealtimeStartTransport.ts +0 -17
  1248. package/bundle/src/codex-protocol/v2/ThreadRealtimeStartedNotification.ts +0 -13
  1249. package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.ts +0 -16
  1250. package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.ts +0 -16
  1251. package/bundle/src/codex-protocol/v2/ThreadResumeParams.ts +0 -39
  1252. package/bundle/src/codex-protocol/v2/ThreadResumeResponse.ts +0 -30
  1253. package/bundle/src/codex-protocol/v2/ThreadRollbackParams.ts +0 -14
  1254. package/bundle/src/codex-protocol/v2/ThreadRollbackResponse.ts +0 -15
  1255. package/bundle/src/codex-protocol/v2/ThreadSetNameParams.ts +0 -5
  1256. package/bundle/src/codex-protocol/v2/ThreadSetNameResponse.ts +0 -5
  1257. package/bundle/src/codex-protocol/v2/ThreadShellCommandParams.ts +0 -14
  1258. package/bundle/src/codex-protocol/v2/ThreadShellCommandResponse.ts +0 -5
  1259. package/bundle/src/codex-protocol/v2/ThreadSortKey.ts +0 -5
  1260. package/bundle/src/codex-protocol/v2/ThreadSource.ts +0 -5
  1261. package/bundle/src/codex-protocol/v2/ThreadSourceKind.ts +0 -15
  1262. package/bundle/src/codex-protocol/v2/ThreadStartParams.ts +0 -33
  1263. package/bundle/src/codex-protocol/v2/ThreadStartResponse.ts +0 -30
  1264. package/bundle/src/codex-protocol/v2/ThreadStartSource.ts +0 -5
  1265. package/bundle/src/codex-protocol/v2/ThreadStartedNotification.ts +0 -6
  1266. package/bundle/src/codex-protocol/v2/ThreadStatus.ts +0 -10
  1267. package/bundle/src/codex-protocol/v2/ThreadStatusChangedNotification.ts +0 -6
  1268. package/bundle/src/codex-protocol/v2/ThreadTokenUsage.ts +0 -10
  1269. package/bundle/src/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.ts +0 -10
  1270. package/bundle/src/codex-protocol/v2/ThreadUnarchiveParams.ts +0 -5
  1271. package/bundle/src/codex-protocol/v2/ThreadUnarchiveResponse.ts +0 -6
  1272. package/bundle/src/codex-protocol/v2/ThreadUnarchivedNotification.ts +0 -5
  1273. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeParams.ts +0 -5
  1274. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeResponse.ts +0 -6
  1275. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeStatus.ts +0 -5
  1276. package/bundle/src/codex-protocol/v2/TokenUsageBreakdown.ts +0 -11
  1277. package/bundle/src/codex-protocol/v2/ToolRequestUserInputAnswer.ts +0 -8
  1278. package/bundle/src/codex-protocol/v2/ToolRequestUserInputOption.ts +0 -8
  1279. package/bundle/src/codex-protocol/v2/ToolRequestUserInputParams.ts +0 -14
  1280. package/bundle/src/codex-protocol/v2/ToolRequestUserInputQuestion.ts +0 -16
  1281. package/bundle/src/codex-protocol/v2/ToolRequestUserInputResponse.ts +0 -11
  1282. package/bundle/src/codex-protocol/v2/ToolsV2.ts +0 -6
  1283. package/bundle/src/codex-protocol/v2/Turn.ts +0 -36
  1284. package/bundle/src/codex-protocol/v2/TurnCompletedNotification.ts +0 -6
  1285. package/bundle/src/codex-protocol/v2/TurnDiffUpdatedNotification.ts +0 -9
  1286. package/bundle/src/codex-protocol/v2/TurnEnvironmentParams.ts +0 -6
  1287. package/bundle/src/codex-protocol/v2/TurnError.ts +0 -10
  1288. package/bundle/src/codex-protocol/v2/TurnInterruptParams.ts +0 -5
  1289. package/bundle/src/codex-protocol/v2/TurnInterruptResponse.ts +0 -5
  1290. package/bundle/src/codex-protocol/v2/TurnItemsView.ts +0 -5
  1291. package/bundle/src/codex-protocol/v2/TurnPlanStep.ts +0 -6
  1292. package/bundle/src/codex-protocol/v2/TurnPlanStepStatus.ts +0 -5
  1293. package/bundle/src/codex-protocol/v2/TurnPlanUpdatedNotification.ts +0 -11
  1294. package/bundle/src/codex-protocol/v2/TurnStartParams.ts +0 -48
  1295. package/bundle/src/codex-protocol/v2/TurnStartResponse.ts +0 -6
  1296. package/bundle/src/codex-protocol/v2/TurnStartedNotification.ts +0 -6
  1297. package/bundle/src/codex-protocol/v2/TurnStatus.ts +0 -5
  1298. package/bundle/src/codex-protocol/v2/TurnSteerParams.ts +0 -13
  1299. package/bundle/src/codex-protocol/v2/TurnSteerResponse.ts +0 -5
  1300. package/bundle/src/codex-protocol/v2/UserInput.ts +0 -18
  1301. package/bundle/src/codex-protocol/v2/WarningNotification.ts +0 -14
  1302. package/bundle/src/codex-protocol/v2/WebSearchAction.ts +0 -9
  1303. package/bundle/src/codex-protocol/v2/WindowsSandboxReadiness.ts +0 -5
  1304. package/bundle/src/codex-protocol/v2/WindowsSandboxReadinessResponse.ts +0 -6
  1305. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.ts +0 -10
  1306. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupMode.ts +0 -5
  1307. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartParams.ts +0 -10
  1308. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartResponse.ts +0 -5
  1309. package/bundle/src/codex-protocol/v2/WindowsWorldWritableWarningNotification.ts +0 -9
  1310. package/bundle/src/codex-protocol/v2/WriteStatus.ts +0 -5
  1311. package/bundle/src/codex-protocol/v2/index.ts +0 -446
  1312. package/bundle/src/utils/providers/openai/codex-rpc.ts +0 -238
  1313. package/bundle/src/utils/providers/openai/codex-worker.test.ts +0 -1006
  1314. package/bundle/src/utils/providers/openai/codex-worker.ts +0 -927
  1315. package/bundle/src/utils/providers/openai/openai-worker-pool-config.ts +0 -112
  1316. package/bundle/web-dist/client/assets/index-C24D5PiN.js +0 -106
  1317. package/bundle/web-dist/client/assets/index-CcMEpCgt.css +0 -1
  1318. package/bundle/web-dist/client/assets/logs-CIlZG6A3.js +0 -1
  1319. package/bundle/web-dist/client/assets/monit-DZFBMxKl.js +0 -1
  1320. package/bundle/web-dist/client/assets/routes-C3wlSNBL.js +0 -5
  1321. package/bundle/web-dist/client/assets/services.generated-jGypfumC.js +0 -51
  1322. package/bundle/web-dist/client/assets/settings-ClRDWO-8.js +0 -1
  1323. package/bundle/web-dist/client/assets/show-BP7U8yyJ.js +0 -2
  1324. package/bundle/web-dist/client/assets/tokens-DfQeULnJ.js +0 -1
  1325. package/bundle/web-dist/client/assets/use-oauth-login-flow-CY-ASCfL.js +0 -1
  1326. package/bundle/web-dist/server/assets/lazyRouteComponent-DOc8TV-P.js +0 -1856
  1327. package/bundle/web-dist/server/assets/logs-CfF3nmLM.js +0 -451
  1328. package/bundle/web-dist/server/assets/monit-BSaKhh5D.js +0 -1577
  1329. package/bundle/web-dist/server/assets/plus-DLFUHsfx.js +0 -19
  1330. package/bundle/web-dist/server/assets/react-dom-BotjLnTK.js +0 -462
  1331. package/bundle/web-dist/server/assets/routes-CHMxrTT0.js +0 -2924
  1332. package/bundle/web-dist/server/assets/services.generated-D3Q3FYot.js +0 -23570
  1333. package/bundle/web-dist/server/assets/settings-DOQjV28c.js +0 -598
  1334. package/bundle/web-dist/server/assets/show-Cn_C6Qvl.js +0 -2776
  1335. package/bundle/web-dist/server/assets/tokens-c0EN3iCx.js +0 -441
  1336. package/bundle/web-dist/server/assets/use-oauth-login-flow-B68AbMDE.js +0 -160
  1337. /package/bundle/dist/{codex-protocol/AbsolutePathBuf.js → utils/providers/common/provider-types.js} +0 -0
package/README.ko.md CHANGED
@@ -106,7 +106,6 @@ CLI는 실행 시 npm의 최신 버전을 확인하고 patch를 포함해 설치
106
106
  - Node.js >= 20
107
107
  - PostgreSQL
108
108
  - Docker (로컬 PostgreSQL을 컨테이너로 실행할 경우)
109
- - [Codex CLI](https://github.com/openai/codex) (OpenAI 모델 사용 시)
110
109
  - [Claude Code](https://www.anthropic.com/claude-code) (Anthropic 모델 사용 시)
111
110
 
112
111
  ## 동작 방식
@@ -116,12 +115,14 @@ CLI는 Sonamu 기반 서버를 내장 번들로 포함. 실행 시:
116
115
  1. DB 연결 확인
117
116
  2. 서버 시작 (API + 대시보드 웹 UI)
118
117
  3. DB의 등록된 토큰 로드. 이후 토큰 등록/변경은 PostgreSQL LISTEN/NOTIFY로 실행 중인 서버에 실시간 반영
119
- 4. **OpenAI 토큰**: persistent codex app-server worker pool과 JSON-RPC로 통신. Qgrid가 capacity, queue, thread retention을 내부적으로 관리. `sessionKey` 멀티턴 요청은 같은 thread로 재라우팅되어 prompt cache 적중
118
+ 4. **OpenAI 토큰**: `https://chatgpt.com/backend-api/codex/responses`를 HTTPS로 직접 호출하고 SSE를 해석합니다. 토큰 단위 concurrent permit에 smooth weighted routing을 적용하며, 50개 queue는 최대 60초 대기합니다. 전체 history를 재전송하고 `sessionKey`에서 파생한 불투명 prompt-cache affinity를 사용하며, `AbortSignal`로 queue와 실행 중 요청을 취소합니다
120
119
  5. **Anthropic 토큰**: 요청마다 격리된 claude 프로세스를 fresh spawn (`stream-json` 입출력). 토큰은 least-used 우선으로 선택. OAuth 토큰 자동 refresh
121
120
  6. 토큰별 quota threshold(기본 80%)를 넘은 토큰은 라우팅에서 제외 (사용률 조회 실패 시에는 fail-open으로 통과)
122
121
 
123
122
  Qgrid 앱 자체는 Docker에 의존하지 않지만 PostgreSQL은 필요함. 로컬 PostgreSQL이 없으면 Docker로 PostgreSQL을 띄우는 구성이 가장 간단함.
124
123
 
124
+ OpenAI 로그인은 direct PKCE OAuth를 사용하고 quota는 Codex CLI identity header와 함께 private `wham/usage` endpoint를 직접 조회합니다. 이 ChatGPT backend interface는 문서화되지 않아 예고 없이 바뀔 수 있습니다. Mock test는 live provider 호환성을 입증하지 않습니다.
125
+
125
126
  ## SDK 연동
126
127
 
127
128
  서버를 띄운 뒤 [`@cartanova/qgrid-ai-sdk`](../ai-sdk/README.ko.md)로 호출:
package/README.md CHANGED
@@ -107,7 +107,6 @@ Server behavior variables:
107
107
  - Node.js >= 20
108
108
  - PostgreSQL
109
109
  - Docker (if running PostgreSQL locally as a container)
110
- - [Codex CLI](https://github.com/openai/codex) (for OpenAI models)
111
110
  - [Claude Code](https://www.anthropic.com/claude-code) (for Anthropic models)
112
111
 
113
112
  ## How it works
@@ -117,12 +116,14 @@ The CLI ships the Sonamu-based server as a built-in bundle. On launch:
117
116
  1. Verify the DB connection
118
117
  2. Start the server (API + dashboard web UI)
119
118
  3. Load registered tokens from the DB. Later token additions/changes propagate to the running server in real time via PostgreSQL LISTEN/NOTIFY
120
- 4. **OpenAI tokens**: use a persistent codex app-server worker pool over JSON-RPC. Qgrid manages capacity, queueing, and thread retention internally. Multi-turn requests carrying a `sessionKey` are routed back to the same thread for prompt-cache hits
119
+ 4. **OpenAI tokens**: call `https://chatgpt.com/backend-api/codex/responses` directly over HTTPS and decode SSE. Token-level concurrent permits use smooth weighted routing; a 50-item queue waits at most 60 seconds. Full history is replayed with opaque `sessionKey`-derived prompt-cache affinity, and `AbortSignal` cancels queued or active work
121
120
  5. **Anthropic tokens**: spawn a fresh, isolated claude process per request (`stream-json` in/out). Tokens are selected least-used-first. OAuth tokens are refreshed automatically
122
121
  6. Tokens over their quota threshold (default 80%) are excluded from routing (usage-lookup failures fail open)
123
122
 
124
123
  The Qgrid app itself does not depend on Docker, but PostgreSQL is required. If you don't run PostgreSQL locally, running it in Docker is the simplest setup.
125
124
 
125
+ OpenAI login uses direct PKCE OAuth, and quota checks call the private `wham/usage` endpoint directly with Codex CLI identity headers. These ChatGPT backend interfaces are undocumented and may change without notice. Mocked tests do not establish live-provider compatibility.
126
+
126
127
  ## SDK integration
127
128
 
128
129
  Once the server is running, call it with [`@cartanova/qgrid-ai-sdk`](../ai-sdk/README.md):
@@ -1,5 +1,10 @@
1
1
  //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
3
8
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
9
  var __exportAll = (all, no_symbols) => {
5
10
  let target = {};
@@ -10,5 +15,19 @@ var __exportAll = (all, no_symbols) => {
10
15
  if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
11
16
  return target;
12
17
  };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
20
+ key = keys[i];
21
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
22
+ get: ((k) => from[k]).bind(null, key),
23
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
24
+ });
25
+ }
26
+ return to;
27
+ };
28
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
29
+ value: mod,
30
+ enumerable: true
31
+ }) : target, mod));
13
32
  //#endregion
14
- export { __commonJSMin, __exportAll };
33
+ export { __commonJSMin, __exportAll, __toESM };
@@ -1,8 +1,9 @@
1
1
  import { monitLogBuffer } from "./log-buffer.js";
2
+ import { resolveOpenAITransportKind } from "../../utils/providers/openai/openai-transport-config.js";
3
+ import { QgridDispatcher } from "../qgrid/qgrid.dispatcher.js";
2
4
  import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorateMetadata.js";
3
5
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorate.js";
4
- import { resolveOpenAIWorkerPoolConfig } from "../../utils/providers/openai/openai-worker-pool-config.js";
5
- import { QgridDispatcher } from "../qgrid/qgrid.dispatcher.js";
6
+ import { RequestLogModel } from "../request-log/request-log.model.js";
6
7
  import { BaseFrameClass, DB, api } from "sonamu";
7
8
  //#region src/application/monit/monit.frame.ts
8
9
  /**
@@ -24,7 +25,7 @@ var MonitFrameClass = class extends BaseFrameClass {
24
25
  };
25
26
  }
26
27
  async monitInfo() {
27
- const pool = resolveOpenAIWorkerPoolConfig();
28
+ const transport = resolveOpenAITransportKind();
28
29
  const host = process.env.HOST ?? "localhost";
29
30
  const port = process.env.PORT ?? "44900";
30
31
  const conn = activeDbConnection();
@@ -32,11 +33,15 @@ var MonitFrameClass = class extends BaseFrameClass {
32
33
  serverUrl: `http://${host}:${port}`,
33
34
  dbHost: conn.host ?? "localhost",
34
35
  dbName: conn.database ?? "qgrid",
35
- openai: {
36
- minWorkersPerToken: pool.minWorkersPerToken,
37
- maxWorkersPerToken: pool.maxWorkersPerToken,
38
- autoscale: pool.autoscale
39
- }
36
+ openai: { transport }
37
+ };
38
+ }
39
+ async monitStats() {
40
+ const windowMinutes = 60;
41
+ const since = /* @__PURE__ */ new Date(Date.now() - windowMinutes * 6e4);
42
+ return {
43
+ windowMinutes,
44
+ providers: await RequestLogModel.providerStatsSince(since)
40
45
  };
41
46
  }
42
47
  };
@@ -58,14 +63,22 @@ __decorate([
58
63
  __decorateMetadata("design:paramtypes", []),
59
64
  __decorateMetadata("design:returntype", Promise)
60
65
  ], MonitFrameClass.prototype, "monitInfo", null);
66
+ __decorate([
67
+ api({
68
+ httpMethod: "GET",
69
+ clients: ["axios", "tanstack-query"]
70
+ }),
71
+ __decorateMetadata("design:type", Function),
72
+ __decorateMetadata("design:paramtypes", []),
73
+ __decorateMetadata("design:returntype", Promise)
74
+ ], MonitFrameClass.prototype, "monitStats", null);
61
75
  function currentVitals() {
62
76
  return {
63
- openaiWorkerCount: QgridDispatcher.openaiDispatcher?.workerCount ?? 0,
64
- openaiReadyWorkerCount: QgridDispatcher.openaiDispatcher?.readyWorkerCount ?? 0,
65
- openaiQueueLength: QgridDispatcher.openaiDispatcher?.queueLength ?? 0,
66
- openaiWorkersByToken: QgridDispatcher.openaiDispatcher?.workerCountsByToken ?? [],
77
+ openaiInFlight: QgridDispatcher.openaiDispatcher?.inFlight ?? 0,
78
+ openaiQuotaByToken: QgridDispatcher.openaiDispatcher?.quotaByToken ?? [],
67
79
  anthropicTokenCount: QgridDispatcher.anthropicDispatcher?.tokenCount ?? 0,
68
- anthropicTokenNames: QgridDispatcher.anthropicDispatcher?.tokenNames ?? []
80
+ anthropicTokenNames: QgridDispatcher.anthropicDispatcher?.tokenNames ?? [],
81
+ anthropicInFlight: QgridDispatcher.anthropicDispatcher?.inFlight ?? 0
69
82
  };
70
83
  }
71
84
  function activeDbConnection() {
@@ -82,4 +95,4 @@ const MonitFrame = new MonitFrameClass();
82
95
  //#endregion
83
96
  export { MonitFrame };
84
97
 
85
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vbml0L21vbml0LmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9uaXQg4oCUIOuMgOyLnOuztOuTnCBNb25pdCDtg63smqkg7ZSE66Gc7IS47IqkIOuhnOq3uCDqtIDsuKEgQVBJLlxuICpcbiAqIOydveq4sCDsoITsmqkuIHJpbmcgYnVmZmVyIOulvCDslofqsowg7KeB7KCRIOydveycvOupsCjrspTsmqkg7L+866asIOq4sOqzhCDsl4bsnbQpLFxuICogcmVxdWVzdCBsb2cg66W8IOuCqOq4sOyngCDslYrripTri6QuIOygkeq3vCDqsr3qs4TripQg64uk66W4IOuMgOyLnOuztOuTnCBBUEkg7JmAIOuPmeydvO2VmOuLpC5cbiAqL1xuaW1wb3J0IHsgYXBpLCBCYXNlRnJhbWVDbGFzcywgREIgfSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IHJlc29sdmVPcGVuQUlXb3JrZXJQb29sQ29uZmlnIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9vcGVuYWkvb3BlbmFpLXdvcmtlci1wb29sLWNvbmZpZ1wiO1xuaW1wb3J0IHsgUWdyaWREaXNwYXRjaGVyIH0gZnJvbSBcIi4uL3FncmlkL3FncmlkLmRpc3BhdGNoZXJcIjtcbmltcG9ydCB7IG1vbml0TG9nQnVmZmVyIH0gZnJvbSBcIi4vbG9nLWJ1ZmZlclwiO1xuaW1wb3J0IHsgdHlwZSBNb25pdExvZ0NodW5rLCB0eXBlIE1vbml0U2VydmVySW5mbywgdHlwZSBNb25pdFZpdGFscyB9IGZyb20gXCIuL21vbml0LnR5cGVzXCI7XG5cbi8vIOydkeuLteuLuSDsl5Ttirjrpqwg7IOB7ZWcIOKAlCDtj7Trp4Eg7YG065287J207Ja47Yq464qUIOuLpOydjCDtj7Tsl5DshJwg7J207Ja07IScIOuUsOudvOyeoeuKlOuLpC5cbmNvbnN0IFJFU1BPTlNFX0VOVFJZX0xJTUlUID0gMV8wMDA7XG5cbmNsYXNzIE1vbml0RnJhbWVDbGFzcyBleHRlbmRzIEJhc2VGcmFtZUNsYXNzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJNb25pdFwiKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIG1vbml0TG9ncyhjdXJzb3I/OiBudW1iZXIpOiBQcm9taXNlPE1vbml0TG9nQ2h1bms+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc1N0YXJ0ZWRBdDogbW9uaXRMb2dCdWZmZXIucHJvY2Vzc1N0YXJ0ZWRBdCxcbiAgICAgIC4uLm1vbml0TG9nQnVmZmVyLmFmdGVyKGN1cnNvciwgUkVTUE9OU0VfRU5UUllfTElNSVQpLFxuICAgICAgdml0YWxzOiBjdXJyZW50Vml0YWxzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIO2UhOuhnOyEuOyKpCDsoJXsoIEg7KCV67O0IOKAlCDtj7Trp4Eg67aI7ZWE7JqULCDtjpjsnbTsp4Dri7kgMe2ajCDsobDtmowuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIG1vbml0SW5mbygpOiBQcm9taXNlPE1vbml0U2VydmVySW5mbz4ge1xuICAgIGNvbnN0IHBvb2wgPSByZXNvbHZlT3BlbkFJV29ya2VyUG9vbENvbmZpZygpO1xuICAgIGNvbnN0IGhvc3QgPSBwcm9jZXNzLmVudi5IT1NUID8/IFwibG9jYWxob3N0XCI7XG4gICAgY29uc3QgcG9ydCA9IHByb2Nlc3MuZW52LlBPUlQgPz8gXCI0NDkwMFwiO1xuICAgIGNvbnN0IGNvbm4gPSBhY3RpdmVEYkNvbm5lY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmVyVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWAsXG4gICAgICBkYkhvc3Q6IGNvbm4uaG9zdCA/PyBcImxvY2FsaG9zdFwiLFxuICAgICAgZGJOYW1lOiBjb25uLmRhdGFiYXNlID8/IFwicWdyaWRcIixcbiAgICAgIG9wZW5haToge1xuICAgICAgICBtaW5Xb3JrZXJzUGVyVG9rZW46IHBvb2wubWluV29ya2Vyc1BlclRva2VuLFxuICAgICAgICBtYXhXb3JrZXJzUGVyVG9rZW46IHBvb2wubWF4V29ya2Vyc1BlclRva2VuLFxuICAgICAgICBhdXRvc2NhbGU6IHBvb2wuYXV0b3NjYWxlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8vIGRpc3BhdGNoZXIg66+47LSI6riw7ZmUKOu2gO2MhSDsp4Htm4QpIOyLnCAwIOycvOuhnCDsnZHri7XtlZzri6Qg4oCUIOqwgOuyvOyatCDsiqTrg4Xsg7fsnbTrnbwg7Jik66WY66GcIOunjOuTpOyngCDslYrripTri6QuXG5mdW5jdGlvbiBjdXJyZW50Vml0YWxzKCk6IE1vbml0Vml0YWxzIHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuYWlXb3JrZXJDb3VudDogUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LndvcmtlckNvdW50ID8/IDAsXG4gICAgb3BlbmFpUmVhZHlXb3JrZXJDb3VudDogUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LnJlYWR5V29ya2VyQ291bnQgPz8gMCxcbiAgICBvcGVuYWlRdWV1ZUxlbmd0aDogUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LnF1ZXVlTGVuZ3RoID8/IDAsXG4gICAgb3BlbmFpV29ya2Vyc0J5VG9rZW46IFFncmlkRGlzcGF0Y2hlci5vcGVuYWlEaXNwYXRjaGVyPy53b3JrZXJDb3VudHNCeVRva2VuID8/IFtdLFxuICAgIGFudGhyb3BpY1Rva2VuQ291bnQ6IFFncmlkRGlzcGF0Y2hlci5hbnRocm9waWNEaXNwYXRjaGVyPy50b2tlbkNvdW50ID8/IDAsXG4gICAgYW50aHJvcGljVG9rZW5OYW1lczogUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXI/LnRva2VuTmFtZXMgPz8gW10sXG4gIH07XG59XG5cbi8vIOyLpOygnCDtmZzshLEga25leCDsl7DqsrDsl5DshJwg7J2964qU64ukIOKAlCBkZXYg7ISc67KE7J2YIO2Gte2VqSDthYzsiqTtirgg65+s64SI6rCAIHByb2Nlc3MuZW52LlNPTkFNVV9EQl9OQU1FIOydhFxuLy8g7YWM7Iqk7Yq4IERCIOydtOumhOycvOuhnCDrja7slrTsk7Drr4DroZwgZW52IOuKlCDsi6DrorDtlaAg7IiYIOyXhuuLpC4gREIg66+47LSI6riw7ZmUKOu2gO2MhSDsoIQpIOyLnOyXkOunjCBlbnYg7Y+067CxLlxuZnVuY3Rpb24gYWN0aXZlRGJDb25uZWN0aW9uKCk6IHsgaG9zdD86IHN0cmluZzsgZGF0YWJhc2U/OiBzdHJpbmcgfSB7XG4gIHRyeSB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IERCLmdldERCQ29uZmlnKFwid1wiKS5jb25uZWN0aW9uO1xuICAgIGlmICh0eXBlb2YgY29ubmVjdGlvbiA9PT0gXCJvYmplY3RcIiAmJiBjb25uZWN0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbiBhcyB7IGhvc3Q/OiBzdHJpbmc7IGRhdGFiYXNlPzogc3RyaW5nIH07XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBEQiBjb25maWcg66+47LSI6riw7ZmUIOKAlCBlbnYg7Y+067Cx7Jy866GcIOynhO2WiVxuICB9XG4gIHJldHVybiB7IGhvc3Q6IHByb2Nlc3MuZW52LlNPTkFNVV9EQl9IT1NULCBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX05BTUUgfTtcbn1cblxuZXhwb3J0IGNvbnN0IE1vbml0RnJhbWUgPSBuZXcgTW9uaXRGcmFtZUNsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFjQSxNQUFNLHVCQUF1QjtBQUU3QixJQUFNLGtCQUFOLGNBQThCLGVBQWU7Q0FDM0MsY0FBYztFQUNaLE1BQU0sT0FBTztDQUNmO0NBRUEsTUFDTSxVQUFVLFFBQXlDO0VBQ3ZELE9BQU87R0FDTCxrQkFBa0IsZUFBZTtHQUNqQyxHQUFHLGVBQWUsTUFBTSxRQUFRLG9CQUFvQjtHQUNwRCxRQUFRLGNBQWM7RUFDeEI7Q0FDRjtDQUdBLE1BQ00sWUFBc0M7RUFDMUMsTUFBTSxPQUFPLDhCQUE4QjtFQUMzQyxNQUFNLE9BQU8sUUFBUSxJQUFJLFFBQVE7RUFDakMsTUFBTSxPQUFPLFFBQVEsSUFBSSxRQUFRO0VBQ2pDLE1BQU0sT0FBTyxtQkFBbUI7RUFDaEMsT0FBTztHQUNMLFdBQVcsVUFBVSxLQUFLLEdBQUc7R0FDN0IsUUFBUSxLQUFLLFFBQVE7R0FDckIsUUFBUSxLQUFLLFlBQVk7R0FDekIsUUFBUTtJQUNOLG9CQUFvQixLQUFLO0lBQ3pCLG9CQUFvQixLQUFLO0lBQ3pCLFdBQVcsS0FBSztHQUNsQjtFQUNGO0NBQ0Y7QUFDRjs7Q0EzQkcsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxnQkFBZ0I7Q0FBRSxDQUFDOzs7Ozs7Q0FVL0QsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxnQkFBZ0I7Q0FBRSxDQUFDOzs7OztBQW9CbEUsU0FBUyxnQkFBNkI7Q0FDcEMsT0FBTztFQUNMLG1CQUFtQixnQkFBZ0Isa0JBQWtCLGVBQWU7RUFDcEUsd0JBQXdCLGdCQUFnQixrQkFBa0Isb0JBQW9CO0VBQzlFLG1CQUFtQixnQkFBZ0Isa0JBQWtCLGVBQWU7RUFDcEUsc0JBQXNCLGdCQUFnQixrQkFBa0IsdUJBQXVCLENBQUM7RUFDaEYscUJBQXFCLGdCQUFnQixxQkFBcUIsY0FBYztFQUN4RSxxQkFBcUIsZ0JBQWdCLHFCQUFxQixjQUFjLENBQUM7Q0FDM0U7QUFDRjtBQUlBLFNBQVMscUJBQTJEO0NBQ2xFLElBQUk7RUFDRixNQUFNLGFBQWEsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0VBQ3ZDLElBQUksT0FBTyxlQUFlLFlBQVksZUFBZSxNQUNuRCxPQUFPO0NBRVgsUUFBUSxDQUVSO0NBQ0EsT0FBTztFQUFFLE1BQU0sUUFBUSxJQUFJO0VBQWdCLFVBQVUsUUFBUSxJQUFJO0NBQWU7QUFDbEY7QUFFQSxNQUFhLGFBQWEsSUFBSSxnQkFBZ0IifQ==
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vbml0L21vbml0LmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9uaXQg4oCUIOuMgOyLnOuztOuTnCBNb25pdCDtg63smqkg7ZSE66Gc7IS47IqkIOuhnOq3uCDqtIDsuKEgQVBJLlxuICpcbiAqIOydveq4sCDsoITsmqkuIHJpbmcgYnVmZmVyIOulvCDslofqsowg7KeB7KCRIOydveycvOupsCjrspTsmqkg7L+866asIOq4sOqzhCDsl4bsnbQpLFxuICogcmVxdWVzdCBsb2cg66W8IOuCqOq4sOyngCDslYrripTri6QuIOygkeq3vCDqsr3qs4TripQg64uk66W4IOuMgOyLnOuztOuTnCBBUEkg7JmAIOuPmeydvO2VmOuLpC5cbiAqL1xuaW1wb3J0IHsgYXBpLCBCYXNlRnJhbWVDbGFzcywgREIgfSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IHJlc29sdmVPcGVuQUlUcmFuc3BvcnRLaW5kIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9vcGVuYWkvb3BlbmFpLXRyYW5zcG9ydC1jb25maWdcIjtcbmltcG9ydCB7IFFncmlkRGlzcGF0Y2hlciB9IGZyb20gXCIuLi9xZ3JpZC9xZ3JpZC5kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBSZXF1ZXN0TG9nTW9kZWwgfSBmcm9tIFwiLi4vcmVxdWVzdC1sb2cvcmVxdWVzdC1sb2cubW9kZWxcIjtcbmltcG9ydCB7IG1vbml0TG9nQnVmZmVyIH0gZnJvbSBcIi4vbG9nLWJ1ZmZlclwiO1xuaW1wb3J0IHtcbiAgdHlwZSBNb25pdExvZ0NodW5rLFxuICB0eXBlIE1vbml0U2VydmVySW5mbyxcbiAgdHlwZSBNb25pdFN0YXRzLFxuICB0eXBlIE1vbml0Vml0YWxzLFxufSBmcm9tIFwiLi9tb25pdC50eXBlc1wiO1xuXG4vLyDsnZHri7Xri7kg7JeU7Yq466asIOyDge2VnCDigJQg7Y+066eBIO2BtOudvOydtOyWuO2KuOuKlCDri6TsnYwg7Y+07JeQ7IScIOydtOyWtOyEnCDrlLDrnbzsnqHripTri6QuXG5jb25zdCBSRVNQT05TRV9FTlRSWV9MSU1JVCA9IDFfMDAwO1xuXG5jbGFzcyBNb25pdEZyYW1lQ2xhc3MgZXh0ZW5kcyBCYXNlRnJhbWVDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiTW9uaXRcIik7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyBtb25pdExvZ3MoY3Vyc29yPzogbnVtYmVyKTogUHJvbWlzZTxNb25pdExvZ0NodW5rPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NTdGFydGVkQXQ6IG1vbml0TG9nQnVmZmVyLnByb2Nlc3NTdGFydGVkQXQsXG4gICAgICAuLi5tb25pdExvZ0J1ZmZlci5hZnRlcihjdXJzb3IsIFJFU1BPTlNFX0VOVFJZX0xJTUlUKSxcbiAgICAgIHZpdGFsczogY3VycmVudFZpdGFscygpLFxuICAgIH07XG4gIH1cblxuICAvLyDtlITroZzshLjsiqQg7KCV7KCBIOygleuztCDigJQg7Y+066eBIOu2iO2VhOyalCwg7Y6Y7J207KeA64u5IDHtmowg7KGw7ZqMLlxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyBtb25pdEluZm8oKTogUHJvbWlzZTxNb25pdFNlcnZlckluZm8+IHtcbiAgICBjb25zdCB0cmFuc3BvcnQgPSByZXNvbHZlT3BlbkFJVHJhbnNwb3J0S2luZCgpO1xuICAgIGNvbnN0IGhvc3QgPSBwcm9jZXNzLmVudi5IT1NUID8/IFwibG9jYWxob3N0XCI7XG4gICAgY29uc3QgcG9ydCA9IHByb2Nlc3MuZW52LlBPUlQgPz8gXCI0NDkwMFwiO1xuICAgIGNvbnN0IGNvbm4gPSBhY3RpdmVEYkNvbm5lY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmVyVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWAsXG4gICAgICBkYkhvc3Q6IGNvbm4uaG9zdCA/PyBcImxvY2FsaG9zdFwiLFxuICAgICAgZGJOYW1lOiBjb25uLmRhdGFiYXNlID8/IFwicWdyaWRcIixcbiAgICAgIG9wZW5haTogeyB0cmFuc3BvcnQgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8g7LWc6re8IDHsi5zqsIQgcHJvdmlkZXIg67OEIOyalOyyrS/smKTrpZgv7LqQ7IucIO2GteqzhC4gdml0YWxzIOyZgCDri6zrpqwgcmVxdWVzdF9sb2dzIOulvCDtg4Drr4DroZxcbiAgLy8g67aE66as65CcIGVuZHBvaW50IOuhnCDrkZDqs6Ag7Ju57JeQ7IScIOuNlCDripDsiqjtlZwg7KO86riw66GcIO2PtOunge2VnOuLpC4g7J296riwIOyghOyaqeydtOupsCByZXF1ZXN0IGxvZyDrpbxcbiAgLy8g64Ko6riw7KeAIOyViuuKlCBtb25pdCDqsr3qs4TripQg64+Z7J287ZWY64ukLlxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyBtb25pdFN0YXRzKCk6IFByb21pc2U8TW9uaXRTdGF0cz4ge1xuICAgIGNvbnN0IHdpbmRvd01pbnV0ZXMgPSA2MDtcbiAgICBjb25zdCBzaW5jZSA9IG5ldyBEYXRlKERhdGUubm93KCkgLSB3aW5kb3dNaW51dGVzICogNjBfMDAwKTtcbiAgICByZXR1cm4geyB3aW5kb3dNaW51dGVzLCBwcm92aWRlcnM6IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5wcm92aWRlclN0YXRzU2luY2Uoc2luY2UpIH07XG4gIH1cbn1cblxuLy8gZGlzcGF0Y2hlciDrr7jstIjquLDtmZQo67aA7YyFIOynge2bhCkg7IucIDAg7Jy866GcIOydkeuLte2VnOuLpCDigJQg6rCA67K87Jq0IOyKpOuDheyDt+ydtOudvCDsmKTrpZjroZwg66eM65Ok7KeAIOyViuuKlOuLpC5cbmZ1bmN0aW9uIGN1cnJlbnRWaXRhbHMoKTogTW9uaXRWaXRhbHMge1xuICByZXR1cm4ge1xuICAgIG9wZW5haUluRmxpZ2h0OiBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcj8uaW5GbGlnaHQgPz8gMCxcbiAgICBvcGVuYWlRdW90YUJ5VG9rZW46IFFncmlkRGlzcGF0Y2hlci5vcGVuYWlEaXNwYXRjaGVyPy5xdW90YUJ5VG9rZW4gPz8gW10sXG4gICAgYW50aHJvcGljVG9rZW5Db3VudDogUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXI/LnRva2VuQ291bnQgPz8gMCxcbiAgICBhbnRocm9waWNUb2tlbk5hbWVzOiBRZ3JpZERpc3BhdGNoZXIuYW50aHJvcGljRGlzcGF0Y2hlcj8udG9rZW5OYW1lcyA/PyBbXSxcbiAgICBhbnRocm9waWNJbkZsaWdodDogUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXI/LmluRmxpZ2h0ID8/IDAsXG4gIH07XG59XG5cbi8vIOyLpOygnCDtmZzshLEga25leCDsl7DqsrDsl5DshJwg7J2964qU64ukIOKAlCBkZXYg7ISc67KE7J2YIO2Gte2VqSDthYzsiqTtirgg65+s64SI6rCAIHByb2Nlc3MuZW52LlNPTkFNVV9EQl9OQU1FIOydhFxuLy8g7YWM7Iqk7Yq4IERCIOydtOumhOycvOuhnCDrja7slrTsk7Drr4DroZwgZW52IOuKlCDsi6DrorDtlaAg7IiYIOyXhuuLpC4gREIg66+47LSI6riw7ZmUKOu2gO2MhSDsoIQpIOyLnOyXkOunjCBlbnYg7Y+067CxLlxuZnVuY3Rpb24gYWN0aXZlRGJDb25uZWN0aW9uKCk6IHsgaG9zdD86IHN0cmluZzsgZGF0YWJhc2U/OiBzdHJpbmcgfSB7XG4gIHRyeSB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IERCLmdldERCQ29uZmlnKFwid1wiKS5jb25uZWN0aW9uO1xuICAgIGlmICh0eXBlb2YgY29ubmVjdGlvbiA9PT0gXCJvYmplY3RcIiAmJiBjb25uZWN0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbiBhcyB7IGhvc3Q/OiBzdHJpbmc7IGRhdGFiYXNlPzogc3RyaW5nIH07XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBEQiBjb25maWcg66+47LSI6riw7ZmUIOKAlCBlbnYg7Y+067Cx7Jy866GcIOynhO2WiVxuICB9XG4gIHJldHVybiB7IGhvc3Q6IHByb2Nlc3MuZW52LlNPTkFNVV9EQl9IT1NULCBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuU09OQU1VX0RCX05BTUUgfTtcbn1cblxuZXhwb3J0IGNvbnN0IE1vbml0RnJhbWUgPSBuZXcgTW9uaXRGcmFtZUNsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLE1BQU0sdUJBQXVCO0FBRTdCLElBQU0sa0JBQU4sY0FBOEIsZUFBZTtDQUMzQyxjQUFjO0VBQ1osTUFBTSxPQUFPO0NBQ2Y7Q0FFQSxNQUNNLFVBQVUsUUFBeUM7RUFDdkQsT0FBTztHQUNMLGtCQUFrQixlQUFlO0dBQ2pDLEdBQUcsZUFBZSxNQUFNLFFBQVEsb0JBQW9CO0dBQ3BELFFBQVEsY0FBYztFQUN4QjtDQUNGO0NBR0EsTUFDTSxZQUFzQztFQUMxQyxNQUFNLFlBQVksMkJBQTJCO0VBQzdDLE1BQU0sT0FBTyxRQUFRLElBQUksUUFBUTtFQUNqQyxNQUFNLE9BQU8sUUFBUSxJQUFJLFFBQVE7RUFDakMsTUFBTSxPQUFPLG1CQUFtQjtFQUNoQyxPQUFPO0dBQ0wsV0FBVyxVQUFVLEtBQUssR0FBRztHQUM3QixRQUFRLEtBQUssUUFBUTtHQUNyQixRQUFRLEtBQUssWUFBWTtHQUN6QixRQUFRLEVBQUUsVUFBVTtFQUN0QjtDQUNGO0NBS0EsTUFDTSxhQUFrQztFQUN0QyxNQUFNLGdCQUFnQjtFQUN0QixNQUFNLHdCQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxnQkFBZ0IsR0FBTTtFQUMxRCxPQUFPO0dBQUU7R0FBZSxXQUFXLE1BQU0sZ0JBQWdCLG1CQUFtQixLQUFLO0VBQUU7Q0FDckY7QUFDRjs7Q0FqQ0csSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxnQkFBZ0I7Q0FBRSxDQUFDOzs7Ozs7Q0FVL0QsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxnQkFBZ0I7Q0FBRSxDQUFDOzs7Ozs7Q0FpQi9ELElBQUk7RUFBRSxZQUFZO0VBQU8sU0FBUyxDQUFDLFNBQVMsZ0JBQWdCO0NBQUUsQ0FBQzs7Ozs7QUFTbEUsU0FBUyxnQkFBNkI7Q0FDcEMsT0FBTztFQUNMLGdCQUFnQixnQkFBZ0Isa0JBQWtCLFlBQVk7RUFDOUQsb0JBQW9CLGdCQUFnQixrQkFBa0IsZ0JBQWdCLENBQUM7RUFDdkUscUJBQXFCLGdCQUFnQixxQkFBcUIsY0FBYztFQUN4RSxxQkFBcUIsZ0JBQWdCLHFCQUFxQixjQUFjLENBQUM7RUFDekUsbUJBQW1CLGdCQUFnQixxQkFBcUIsWUFBWTtDQUN0RTtBQUNGO0FBSUEsU0FBUyxxQkFBMkQ7Q0FDbEUsSUFBSTtFQUNGLE1BQU0sYUFBYSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7RUFDdkMsSUFBSSxPQUFPLGVBQWUsWUFBWSxlQUFlLE1BQ25ELE9BQU87Q0FFWCxRQUFRLENBRVI7Q0FDQSxPQUFPO0VBQUUsTUFBTSxRQUFRLElBQUk7RUFBZ0IsVUFBVSxRQUFRLElBQUk7Q0FBZTtBQUNsRjtBQUVBLE1BQWEsYUFBYSxJQUFJLGdCQUFnQiJ9
@@ -8,15 +8,17 @@ const MonitLogEntry = z.object({
8
8
  text: z.string()
9
9
  });
10
10
  const MonitVitals = z.object({
11
- openaiWorkerCount: z.number(),
12
- openaiReadyWorkerCount: z.number(),
13
- openaiQueueLength: z.number(),
14
- openaiWorkersByToken: z.array(z.object({
11
+ openaiInFlight: z.number(),
12
+ openaiQuotaByToken: z.array(z.object({
15
13
  name: z.string(),
16
- count: z.number()
14
+ usedPercent: z.number().nullable(),
15
+ threshold: z.number().nullable(),
16
+ blocked: z.boolean(),
17
+ resetsAt: z.number().nullable()
17
18
  })),
18
19
  anthropicTokenCount: z.number(),
19
- anthropicTokenNames: z.array(z.string())
20
+ anthropicTokenNames: z.array(z.string()),
21
+ anthropicInFlight: z.number()
20
22
  });
21
23
  const MonitLogChunk = z.object({
22
24
  processStartedAt: z.number(),
@@ -29,13 +31,20 @@ const MonitServerInfo = z.object({
29
31
  serverUrl: z.string(),
30
32
  dbHost: z.string(),
31
33
  dbName: z.string(),
32
- openai: z.object({
33
- minWorkersPerToken: z.number(),
34
- maxWorkersPerToken: z.number(),
35
- autoscale: z.boolean()
36
- })
34
+ openai: z.object({ transport: z.string() })
35
+ });
36
+ const MonitProviderStats = z.object({
37
+ provider: z.string(),
38
+ requests: z.number(),
39
+ errors: z.number(),
40
+ inputTokens: z.number(),
41
+ cacheReadTokens: z.number()
42
+ });
43
+ const MonitStats = z.object({
44
+ windowMinutes: z.number(),
45
+ providers: z.array(MonitProviderStats)
37
46
  });
38
47
  //#endregion
39
- export { MonitLogChunk, MonitLogEntry, MonitServerInfo, MonitVitals };
48
+ export { MonitLogChunk, MonitLogEntry, MonitProviderStats, MonitServerInfo, MonitStats, MonitVitals };
40
49
 
41
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vbml0L21vbml0LnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBNb25pdCAo7ZSE66Gc7IS47IqkIOuhnOq3uCDqtIDsuKEpIOKUgOKUgOKUgFxuLy9cbi8vIHRpbWVzdGFtcC9wcm9jZXNzU3RhcnRlZEF0IOydgCBlcG9jaCBtcyDsiKvsnpDri6QuIHdlYiDsoITsl60gZGF0ZVJldml2ZXIg6rCAIElTTyDrrLjsnpDsl7TsnYRcbi8vIERhdGUg66GcIOuzgO2ZmO2VmOuvgOuhnCwg7Iir7J6Q66eM7J20IOyerOyLnOyekSDqsJDsp4AocHJvY2Vzc1N0YXJ0ZWRBdCDrj5nrk7HshLEp7JmAIOy7pOyEnCDruYTqtZDrpbwg67O07KG07ZWc64ukLlxuLy8g7J20IO2MjOydvOydgCB3ZWIg7Jy866GcIOq3uOuMgOuhnCBzeW5jIOuQmOuvgOuhnCDshJzrsoQg7KCE7JqpIGltcG9ydCDrpbwg65GQ7KeAIOyViuuKlOuLpC5cblxuZXhwb3J0IGNvbnN0IE1vbml0TG9nRW50cnkgPSB6Lm9iamVjdCh7XG4gIHNlcTogei5udW1iZXIoKSxcbiAgdGltZXN0YW1wOiB6Lm51bWJlcigpLFxuICBsZXZlbDogei5zdHJpbmcoKSxcbiAgY2F0ZWdvcnk6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIE1vbml0TG9nRW50cnkgPSB6LmluZmVyPHR5cGVvZiBNb25pdExvZ0VudHJ5PjtcblxuLy8g7Y+066eB7JeQIO2OuOyKue2VmOuKlCDrnbzsnbTruIwg7Lm07Jq07Yq4IOKAlCDquYrsnYAg7JuM7LukL+2BkCDsp4Tri6jsnYAgYXVkaXQg64yA7Iuc67O065OcKOuzhOuPhCnsnZgg66qr7J206rOgLFxuLy8g7Jes6riw64qUIFwi7KeA6riIIOuqhyDqsJwg64+M6rOgIO2BkOqwgCDsjJPsnbTrgphcIuunjCDqsIDrs43qsowg64u17ZWc64ukLlxuZXhwb3J0IGNvbnN0IE1vbml0Vml0YWxzID0gei5vYmplY3Qoe1xuICBvcGVuYWlXb3JrZXJDb3VudDogei5udW1iZXIoKSxcbiAgb3BlbmFpUmVhZHlXb3JrZXJDb3VudDogei5udW1iZXIoKSxcbiAgb3BlbmFpUXVldWVMZW5ndGg6IHoubnVtYmVyKCksXG4gIC8vIO2GoO2BsOuzhCDtmITsnqwg7JuM7LukIOyImCDigJQgYXV0b3NjYWxlIOuhnCDripjqs6Ag7KO864qUIOqyg+ydhCDthqDtgbAg64uo7JyE66GcIOuzuOuLpFxuICBvcGVuYWlXb3JrZXJzQnlUb2tlbjogei5hcnJheSh6Lm9iamVjdCh7IG5hbWU6IHouc3RyaW5nKCksIGNvdW50OiB6Lm51bWJlcigpIH0pKSxcbiAgYW50aHJvcGljVG9rZW5Db3VudDogei5udW1iZXIoKSxcbiAgLy8gZnJlc2gtc3Bhd24g7J206528IOybjOy7pCDsiJjripQg7JeG64ukIOKAlCDtkoDsl5Ag7Ja065akIO2GoO2BsOydtCDsnojripTsp4Drp4wg67O07Jes7KSA64ukXG4gIGFudGhyb3BpY1Rva2VuTmFtZXM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbmV4cG9ydCB0eXBlIE1vbml0Vml0YWxzID0gei5pbmZlcjx0eXBlb2YgTW9uaXRWaXRhbHM+O1xuXG5leHBvcnQgY29uc3QgTW9uaXRMb2dDaHVuayA9IHoub2JqZWN0KHtcbiAgcHJvY2Vzc1N0YXJ0ZWRBdDogei5udW1iZXIoKSxcbiAgZW50cmllczogei5hcnJheShNb25pdExvZ0VudHJ5KSxcbiAgbmV4dEN1cnNvcjogei5udW1iZXIoKSxcbiAgLy8g7Zi47Lac7J6Q7J2YIOy7pOyEnOqwgCBidWZmZXIgZXZpY3Rpb24g7JeQIOuwgOugpCDsnKDsi6TrkJwg65287J24IOyImFxuICBkcm9wcGVkOiB6Lm51bWJlcigpLFxuICB2aXRhbHM6IE1vbml0Vml0YWxzLFxufSk7XG5leHBvcnQgdHlwZSBNb25pdExvZ0NodW5rID0gei5pbmZlcjx0eXBlb2YgTW9uaXRMb2dDaHVuaz47XG5cbi8vIO2UhOuhnOyEuOyKpCDri6jsnIQg7KCV7KCBIO2ZmOqyvSDsoJXrs7Qg4oCUIOyWtOuKkCDshJzrsoQvREIg66W8IOuztOqzoCDsnojripTsp4Ag7ZWc64iI7JeQIO2ZleyduO2VmOuKlCDsmqnrj4QuXG4vLyDruYTrsIDqsJIoREIg67mE67CA67KI7Zi4LCDthqDtgbAp7J2AIOygiOuMgCDsi6Psp4Ag7JWK64qU64ukLlxuZXhwb3J0IGNvbnN0IE1vbml0U2VydmVySW5mbyA9IHoub2JqZWN0KHtcbiAgc2VydmVyVXJsOiB6LnN0cmluZygpLFxuICBkYkhvc3Q6IHouc3RyaW5nKCksXG4gIGRiTmFtZTogei5zdHJpbmcoKSxcbiAgb3BlbmFpOiB6Lm9iamVjdCh7XG4gICAgbWluV29ya2Vyc1BlclRva2VuOiB6Lm51bWJlcigpLFxuICAgIG1heFdvcmtlcnNQZXJUb2tlbjogei5udW1iZXIoKSxcbiAgICBhdXRvc2NhbGU6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pO1xuZXhwb3J0IHR5cGUgTW9uaXRTZXJ2ZXJJbmZvID0gei5pbmZlcjx0eXBlb2YgTW9uaXRTZXJ2ZXJJbmZvPjtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFRQSxNQUFhLGdCQUFnQixFQUFFLE9BQU87Q0FDcEMsS0FBSyxFQUFFLE9BQU87Q0FDZCxXQUFXLEVBQUUsT0FBTztDQUNwQixPQUFPLEVBQUUsT0FBTztDQUNoQixVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUM1QixNQUFNLEVBQUUsT0FBTztBQUNqQixDQUFDO0FBS0QsTUFBYSxjQUFjLEVBQUUsT0FBTztDQUNsQyxtQkFBbUIsRUFBRSxPQUFPO0NBQzVCLHdCQUF3QixFQUFFLE9BQU87Q0FDakMsbUJBQW1CLEVBQUUsT0FBTztDQUU1QixzQkFBc0IsRUFBRSxNQUFNLEVBQUUsT0FBTztFQUFFLE1BQU0sRUFBRSxPQUFPO0VBQUcsT0FBTyxFQUFFLE9BQU87Q0FBRSxDQUFDLENBQUM7Q0FDL0UscUJBQXFCLEVBQUUsT0FBTztDQUU5QixxQkFBcUIsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO0FBQ3pDLENBQUM7QUFHRCxNQUFhLGdCQUFnQixFQUFFLE9BQU87Q0FDcEMsa0JBQWtCLEVBQUUsT0FBTztDQUMzQixTQUFTLEVBQUUsTUFBTSxhQUFhO0NBQzlCLFlBQVksRUFBRSxPQUFPO0NBRXJCLFNBQVMsRUFBRSxPQUFPO0NBQ2xCLFFBQVE7QUFDVixDQUFDO0FBS0QsTUFBYSxrQkFBa0IsRUFBRSxPQUFPO0NBQ3RDLFdBQVcsRUFBRSxPQUFPO0NBQ3BCLFFBQVEsRUFBRSxPQUFPO0NBQ2pCLFFBQVEsRUFBRSxPQUFPO0NBQ2pCLFFBQVEsRUFBRSxPQUFPO0VBQ2Ysb0JBQW9CLEVBQUUsT0FBTztFQUM3QixvQkFBb0IsRUFBRSxPQUFPO0VBQzdCLFdBQVcsRUFBRSxRQUFRO0NBQ3ZCLENBQUM7QUFDSCxDQUFDIn0=
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vbml0L21vbml0LnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBNb25pdCAo7ZSE66Gc7IS47IqkIOuhnOq3uCDqtIDsuKEpIOKUgOKUgOKUgFxuLy9cbi8vIHRpbWVzdGFtcC9wcm9jZXNzU3RhcnRlZEF0IOydgCBlcG9jaCBtcyDsiKvsnpDri6QuIHdlYiDsoITsl60gZGF0ZVJldml2ZXIg6rCAIElTTyDrrLjsnpDsl7TsnYRcbi8vIERhdGUg66GcIOuzgO2ZmO2VmOuvgOuhnCwg7Iir7J6Q66eM7J20IOyerOyLnOyekSDqsJDsp4AocHJvY2Vzc1N0YXJ0ZWRBdCDrj5nrk7HshLEp7JmAIOy7pOyEnCDruYTqtZDrpbwg67O07KG07ZWc64ukLlxuLy8g7J20IO2MjOydvOydgCB3ZWIg7Jy866GcIOq3uOuMgOuhnCBzeW5jIOuQmOuvgOuhnCDshJzrsoQg7KCE7JqpIGltcG9ydCDrpbwg65GQ7KeAIOyViuuKlOuLpC5cblxuZXhwb3J0IGNvbnN0IE1vbml0TG9nRW50cnkgPSB6Lm9iamVjdCh7XG4gIHNlcTogei5udW1iZXIoKSxcbiAgdGltZXN0YW1wOiB6Lm51bWJlcigpLFxuICBsZXZlbDogei5zdHJpbmcoKSxcbiAgY2F0ZWdvcnk6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIE1vbml0TG9nRW50cnkgPSB6LmluZmVyPHR5cGVvZiBNb25pdExvZ0VudHJ5PjtcblxuLy8g7Y+066eB7JeQIO2OuOyKue2VmOuKlCDrnbzsnbTruIwg7Lm07Jq07Yq4IOKAlCDquYrsnYAg7Yag7YGwIOynhOuLqOydgCBhdWRpdCDrjIDsi5zrs7Trk5wo67OE64+EKeydmCDrqqvsnbTqs6AsXG4vLyDsl6zquLDripQgXCLsp4DquIgg7JqU7LKt7J20IOuqhyDqsJwg64KY6rCAIOyeiOqzoCDsv7zthLDqsIAg7Ja866eI64KYIOywvOuCmFwi66eMIOqwgOuzjeqyjCDri7XtlZzri6QuXG5leHBvcnQgY29uc3QgTW9uaXRWaXRhbHMgPSB6Lm9iamVjdCh7XG4gIC8vIOyngOq4iCDrgpjqsIAg7J6I64qUIOuPmeyLnCDsmpTssq0g7IiYIOKAlCDsg4HtlZwg7JeG7J2MKEFudGhyb3BpYyDqs7wg64+Z7J287ZWcIHN0YXRlbGVzcyDsi6Ttlokg66qo6424KS5cbiAgLy8g7Yag7YGw67OEIOyIq+yekOuKlCDrhbjstpztlZjsp4Ag7JWK64qU64ukOiBBbnRocm9waWMg7Lmp6rO8IOuPmeydvO2VmOqyjCDsnbTrpoQg64KY7Je07J20IOq4sOuzuOydtOqzoCxcbiAgLy8g7Yag7YGwIOuLqOychOuhnCDsnZjrr7gg7J6I64qUIOyDge2DnOuKlCDsv7zthLAg7Iqk64OF7IO37J20IOunoeuKlOuLpC5cbiAgb3BlbmFpSW5GbGlnaHQ6IHoubnVtYmVyKCksXG4gIC8vIO2GoO2BsOuzhCDsv7zthLAg7Iqk64OF7IO3IOKAlCBkaXNwYXRjaGVyIOydmCA2MOy0iCByYXRlLWxpbWl0cyDsupDsi5zsl5DshJzrp4wg7J2964qU64ukKOu5hOyLoOyEoOydtOuptCBudWxsKS5cbiAgLy8gdGhyZXNob2xkIOuvuOyEpOyglSDthqDtgbDsnYAg7L+87YSwIO2MkOygleydhCDrj4zsp4Ag7JWK7JWEIHVzZWRQZXJjZW50IOqwgCDqs4Tsho0gbnVsbCDsnbwg7IiYIOyeiOuLpC5cbiAgb3BlbmFpUXVvdGFCeVRva2VuOiB6LmFycmF5KFxuICAgIHoub2JqZWN0KHtcbiAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICB1c2VkUGVyY2VudDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgICAgdGhyZXNob2xkOiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgICBibG9ja2VkOiB6LmJvb2xlYW4oKSxcbiAgICAgIC8vIG1zIGVwb2NoIOKAlCBkaXNwYXRjaGVyIOqwgCB3aGFtIOydmCB1bml4IOy0iOulvCDsoJXqt5ztmZTtlbTshJwg64K066Ck7KSA64ukXG4gICAgICByZXNldHNBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgIH0pLFxuICApLFxuICBhbnRocm9waWNUb2tlbkNvdW50OiB6Lm51bWJlcigpLFxuICAvLyBmcmVzaC1zcGF3biDsnbTrnbwg7IOB7KO8IO2UhOuhnOyEuOyKpOqwgCDsl4bri6Qg4oCUIO2SgOyXkCDslrTrlqQg7Yag7YGw7J20IOyeiOuKlOyngOunjCDrs7Tsl6zspIDri6RcbiAgYW50aHJvcGljVG9rZW5OYW1lczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgLy8g7KeA6riIIOyLpO2WiSDspJHsnbggQ2xhdWRlIENvZGUg7ZSE66Gc7IS47IqkIOyImFxuICBhbnRocm9waWNJbkZsaWdodDogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgTW9uaXRWaXRhbHMgPSB6LmluZmVyPHR5cGVvZiBNb25pdFZpdGFscz47XG5cbmV4cG9ydCBjb25zdCBNb25pdExvZ0NodW5rID0gei5vYmplY3Qoe1xuICBwcm9jZXNzU3RhcnRlZEF0OiB6Lm51bWJlcigpLFxuICBlbnRyaWVzOiB6LmFycmF5KE1vbml0TG9nRW50cnkpLFxuICBuZXh0Q3Vyc29yOiB6Lm51bWJlcigpLFxuICAvLyDtmLjstpzsnpDsnZgg7Luk7ISc6rCAIGJ1ZmZlciBldmljdGlvbiDsl5Ag67CA66CkIOycoOyLpOuQnCDrnbzsnbgg7IiYXG4gIGRyb3BwZWQ6IHoubnVtYmVyKCksXG4gIHZpdGFsczogTW9uaXRWaXRhbHMsXG59KTtcbmV4cG9ydCB0eXBlIE1vbml0TG9nQ2h1bmsgPSB6LmluZmVyPHR5cGVvZiBNb25pdExvZ0NodW5rPjtcblxuLy8g7ZSE66Gc7IS47IqkIOuLqOychCDsoJXsoIEg7ZmY6rK9IOygleuztCDigJQg7Ja064qQIOyEnOuyhC9EQiDrpbwg67O06rOgIOyeiOuKlOyngCDtlZzriIjsl5Ag7ZmV7J247ZWY64qUIOyaqeuPhC5cbi8vIOu5hOuwgOqwkihEQiDruYTrsIDrsojtmLgsIO2GoO2BsCnsnYAg7KCI64yAIOyLo+yngCDslYrripTri6QuXG5leHBvcnQgY29uc3QgTW9uaXRTZXJ2ZXJJbmZvID0gei5vYmplY3Qoe1xuICBzZXJ2ZXJVcmw6IHouc3RyaW5nKCksXG4gIGRiSG9zdDogei5zdHJpbmcoKSxcbiAgZGJOYW1lOiB6LnN0cmluZygpLFxuICAvLyBwZXJtaXQv7YGQIOygnOqxsCDtm4Qg64Ko7J2AIOygleyggSDshKTsoJXsnYAg7KCE7IahIOuwqeyLneu/kOydtOuLpC4g64+Z7Iuc7ISxIOyDge2VnOydgCDsl4bri6QuXG4gIG9wZW5haTogei5vYmplY3Qoe1xuICAgIHRyYW5zcG9ydDogei5zdHJpbmcoKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIE1vbml0U2VydmVySW5mbyA9IHouaW5mZXI8dHlwZW9mIE1vbml0U2VydmVySW5mbz47XG5cbi8vIOy1nOq3vCAx7Iuc6rCEIHByb3ZpZGVyIOuzhCDsmpTssq0g7Ya16rOEIOKAlCByZXF1ZXN0X2xvZ3Mg66W8IOynkeqzhO2VnOuLpC4gdml0YWxzIOyZgCDri6zrpqwgREIg66W8XG4vLyDtg4Drr4DroZwg67OE64+EIGVuZHBvaW50IOuhnCDrtoTrpqztlbQg642UIOuKkOyKqO2VnCDso7zquLDroZwg7Y+066eB7ZWc64ukLlxuZXhwb3J0IGNvbnN0IE1vbml0UHJvdmlkZXJTdGF0cyA9IHoub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCksIC8vIFwib3BlbmFpXCIgfCBcImFudGhyb3BpY1wiIHwgXCJ1bmtub3duXCJcbiAgcmVxdWVzdHM6IHoubnVtYmVyKCksXG4gIGVycm9yczogei5udW1iZXIoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgTW9uaXRQcm92aWRlclN0YXRzID0gei5pbmZlcjx0eXBlb2YgTW9uaXRQcm92aWRlclN0YXRzPjtcblxuZXhwb3J0IGNvbnN0IE1vbml0U3RhdHMgPSB6Lm9iamVjdCh7XG4gIHdpbmRvd01pbnV0ZXM6IHoubnVtYmVyKCksXG4gIHByb3ZpZGVyczogei5hcnJheShNb25pdFByb3ZpZGVyU3RhdHMpLFxufSk7XG5leHBvcnQgdHlwZSBNb25pdFN0YXRzID0gei5pbmZlcjx0eXBlb2YgTW9uaXRTdGF0cz47XG4iXSwibWFwcGluZ3MiOiI7O0FBUUEsTUFBYSxnQkFBZ0IsRUFBRSxPQUFPO0NBQ3BDLEtBQUssRUFBRSxPQUFPO0NBQ2QsV0FBVyxFQUFFLE9BQU87Q0FDcEIsT0FBTyxFQUFFLE9BQU87Q0FDaEIsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7Q0FDNUIsTUFBTSxFQUFFLE9BQU87QUFDakIsQ0FBQztBQUtELE1BQWEsY0FBYyxFQUFFLE9BQU87Q0FJbEMsZ0JBQWdCLEVBQUUsT0FBTztDQUd6QixvQkFBb0IsRUFBRSxNQUNwQixFQUFFLE9BQU87RUFDUCxNQUFNLEVBQUUsT0FBTztFQUNmLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0VBQ2pDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0VBQy9CLFNBQVMsRUFBRSxRQUFRO0VBRW5CLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2hDLENBQUMsQ0FDSDtDQUNBLHFCQUFxQixFQUFFLE9BQU87Q0FFOUIscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUV2QyxtQkFBbUIsRUFBRSxPQUFPO0FBQzlCLENBQUM7QUFHRCxNQUFhLGdCQUFnQixFQUFFLE9BQU87Q0FDcEMsa0JBQWtCLEVBQUUsT0FBTztDQUMzQixTQUFTLEVBQUUsTUFBTSxhQUFhO0NBQzlCLFlBQVksRUFBRSxPQUFPO0NBRXJCLFNBQVMsRUFBRSxPQUFPO0NBQ2xCLFFBQVE7QUFDVixDQUFDO0FBS0QsTUFBYSxrQkFBa0IsRUFBRSxPQUFPO0NBQ3RDLFdBQVcsRUFBRSxPQUFPO0NBQ3BCLFFBQVEsRUFBRSxPQUFPO0NBQ2pCLFFBQVEsRUFBRSxPQUFPO0NBRWpCLFFBQVEsRUFBRSxPQUFPLEVBQ2YsV0FBVyxFQUFFLE9BQU8sRUFDdEIsQ0FBQztBQUNILENBQUM7QUFLRCxNQUFhLHFCQUFxQixFQUFFLE9BQU87Q0FDekMsVUFBVSxFQUFFLE9BQU87Q0FDbkIsVUFBVSxFQUFFLE9BQU87Q0FDbkIsUUFBUSxFQUFFLE9BQU87Q0FDakIsYUFBYSxFQUFFLE9BQU87Q0FDdEIsaUJBQWlCLEVBQUUsT0FBTztBQUM1QixDQUFDO0FBR0QsTUFBYSxhQUFhLEVBQUUsT0FBTztDQUNqQyxlQUFlLEVBQUUsT0FBTztDQUN4QixXQUFXLEVBQUUsTUFBTSxrQkFBa0I7QUFDdkMsQ0FBQyJ9
@@ -1,7 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  //#region src/application/qgrid/conv-routing.ts
3
3
  /**
4
- * conv-routing — conversation(=codex thread) 재사용을 위한 thread 좌표 검증/구성.
4
+ * conv-routing — 대화 연속성(cache affinity) 좌표 검증/구성.
5
5
  *
6
6
  * 목표: thread(=conversation_id=prompt_cache_key)를 재사용해 OpenAI prompt caching 적중.
7
7
  * - 후속 turn: 기존 thread 에 delta(마지막 user / tool 결과)만 보냄 (history inject 없음).
@@ -10,8 +10,8 @@ import { createHash } from "node:crypto";
10
10
  * 식별: 서버 발급 불투명 thread 좌표(QgridThreadCoord)를 클라가 그대로 회송.
11
11
  * 검증: systemHash(다른 대화 오접속 차단) + (dispatcher의) epoch/worker 생존.
12
12
  */
13
- function systemHash(system) {
14
- return createHash("sha256").update(system ?? "").digest("hex").slice(0, 16);
13
+ function systemHash(system, modelNamespace) {
14
+ return createHash("sha256").update(modelNamespace === void 0 ? system ?? "" : `${modelNamespace}\0${system ?? ""}`).digest("hex").slice(0, 16);
15
15
  }
16
16
  function toolResultsToText(toolResults) {
17
17
  return `${toolResults.map((tr) => {
@@ -20,21 +20,25 @@ function toolResultsToText(toolResults) {
20
20
  return `Tool result for call ${tr.toolCallId}${name}${errMark}: ${tr.output}`;
21
21
  }).join("\n")}\n\nNow continue answering the user's request using these results.`;
22
22
  }
23
- function decideConvRouting(input) {
24
- const sysHash = systemHash(input.system);
23
+ function decideConvRouting(input, options = {}) {
24
+ const sysHash = systemHash(input.system, options.directOpenAI ? options.modelNamespace ?? input.model ?? "openai" : void 0);
25
25
  const history = input.history ? JSON.parse(input.history) : void 0;
26
26
  const coord = input.runContext?.threadCoord;
27
- const eligible = coord !== void 0 && coord.systemHash === sysHash;
27
+ const directCoordEligible = options.directOpenAI === true && coord?.epoch === -1 && coord.systemHash === sysHash && input.cacheAffinityKey !== void 0 && coord.threadId === input.cacheAffinityKey;
28
+ const legacyReuseEligible = options.directOpenAI !== true && coord !== void 0 && coord.systemHash === sysHash;
29
+ const cacheKey = options.directOpenAI ? input.cacheAffinityKey : void 0;
28
30
  return {
29
- reuse: eligible && coord ? {
31
+ reuse: legacyReuseEligible && coord ? {
30
32
  workerId: coord.workerId,
31
33
  threadId: coord.threadId,
32
34
  epoch: coord.epoch
33
35
  } : void 0,
34
- reuseInput: eligible ? buildDeltaInput(input) : void 0,
36
+ reuseInput: legacyReuseEligible ? buildDeltaInput(input) : void 0,
35
37
  coldInput: buildDeltaInput(input),
36
38
  coldHistory: history,
37
- systemHash: sysHash
39
+ systemHash: sysHash,
40
+ promptCacheKey: cacheKey,
41
+ preferredTokenId: directCoordEligible ? coord.workerId : void 0
38
42
  };
39
43
  }
40
44
  function buildDeltaInput(input) {
@@ -69,7 +73,13 @@ function buildDeltaInput(input) {
69
73
  text_elements: []
70
74
  }];
71
75
  }
72
- function issueConvContext(threadCoord, decision) {
76
+ function issueConvContext(threadCoord, decision, preferredTokenId = threadCoord.workerId) {
77
+ if (decision.promptCacheKey) return {
78
+ workerId: preferredTokenId,
79
+ threadId: decision.promptCacheKey,
80
+ epoch: -1,
81
+ systemHash: decision.systemHash
82
+ };
73
83
  return {
74
84
  workerId: threadCoord.workerId,
75
85
  threadId: threadCoord.threadId,
@@ -80,4 +90,4 @@ function issueConvContext(threadCoord, decision) {
80
90
  //#endregion
81
91
  export { decideConvRouting, issueConvContext, systemHash };
82
92
 
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udi1yb3V0aW5nLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9jb252LXJvdXRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBjb252LXJvdXRpbmcg4oCUIGNvbnZlcnNhdGlvbig9Y29kZXggdGhyZWFkKSDsnqzsgqzsmqnsnYQg7JyE7ZWcIHRocmVhZCDsooztkZwg6rKA7KadL+q1rOyEsS5cbiAqXG4gKiDrqqntkZw6IHRocmVhZCg9Y29udmVyc2F0aW9uX2lkPXByb21wdF9jYWNoZV9rZXkp66W8IOyerOyCrOyaqe2VtCBPcGVuQUkgcHJvbXB0IGNhY2hpbmcg7KCB7KSRLlxuICogLSDtm4Tsho0gdHVybjog6riw7KG0IHRocmVhZCDsl5AgZGVsdGEo66eI7KeA66eJIHVzZXIgLyB0b29sIOqysOqzvCnrp4wg67O064OEIChoaXN0b3J5IGluamVjdCDsl4bsnYwpLlxuICogLSDssqsgdHVybiAvIOqygOymnSDsi6TtjKg6IOyDiCB0aHJlYWQgKyBoaXN0b3J5IGluamVjdCAo7Y+067CxLCDsoJXtmZXshLEg67O07KG0KS5cbiAqXG4gKiDsi53rs4Q6IOyEnOuyhCDrsJzquIkg67aI7Yis66qFIHRocmVhZCDsooztkZwoUWdyaWRUaHJlYWRDb29yZCnrpbwg7YG065286rCAIOq3uOuMgOuhnCDtmozshqEuXG4gKiDqsoDspp06IHN5c3RlbUhhc2go64uk66W4IOuMgO2ZlCDsmKTsoJHsho0g7LCo64uoKSArIChkaXNwYXRjaGVy7J2YKSBlcG9jaC93b3JrZXIg7IOd7KG0LlxuICovXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4uLy4uL2NvZGV4LXByb3RvY29sL3NlcmRlX2pzb24vSnNvblZhbHVlXCI7XG5pbXBvcnQgeyB0eXBlIFVzZXJJbnB1dCB9IGZyb20gXCIuLi8uLi9jb2RleC1wcm90b2NvbC92Mi9Vc2VySW5wdXRcIjtcbmltcG9ydCB7IHR5cGUgUmV1c2VUaHJlYWRDb29yZCB9IGZyb20gXCIuLi8uLi91dGlscy9wcm92aWRlcnMvY29tbW9uL3Byb3ZpZGVyLWRpc3BhdGNoZXJcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRUaHJlYWRDb29yZCwgdHlwZSBRdWVyeUlucHV0LCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0IH0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbUhhc2goc3lzdGVtPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIilcbiAgICAudXBkYXRlKHN5c3RlbSA/PyBcIlwiKVxuICAgIC5kaWdlc3QoXCJoZXhcIilcbiAgICAuc2xpY2UoMCwgMTYpO1xufVxuXG4vLyB0b29sIOqysOqzvOulvCDri6TsnYwgdHVybiDsnZggaW5wdXQgdGV4dCDroZwg67OA7ZmYIChjb2RleCB0dXJuL3N0YXJ0LmlucHV0IOydgCBVc2VySW5wdXQg66eMIOuwm+ydjCkuXG5mdW5jdGlvbiB0b29sUmVzdWx0c1RvVGV4dCh0b29sUmVzdWx0czogUWdyaWRUb29sUmVzdWx0SW5wdXRbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gdG9vbFJlc3VsdHMubWFwKCh0cikgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSB0ci50b29sTmFtZSA/IGAgKCR7dHIudG9vbE5hbWV9KWAgOiBcIlwiO1xuICAgIGNvbnN0IGVyck1hcmsgPSB0ci5pc0Vycm9yID8gXCIgW2Vycm9yXVwiIDogXCJcIjtcbiAgICByZXR1cm4gYFRvb2wgcmVzdWx0IGZvciBjYWxsICR7dHIudG9vbENhbGxJZH0ke25hbWV9JHtlcnJNYXJrfTogJHt0ci5vdXRwdXR9YDtcbiAgfSk7XG4gIHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcblxcbk5vdyBjb250aW51ZSBhbnN3ZXJpbmcgdGhlIHVzZXIncyByZXF1ZXN0IHVzaW5nIHRoZXNlIHJlc3VsdHMuYDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252RGVjaXNpb24ge1xuICAvLyBkaXNwYXRjaGVyIOuhnCDrhJjquLggcmV1c2Ug7KKM7ZGcICjqsoDspp0g7Ya16rO8IOyLnOyXkOunjCkuIGRpc3BhdGNoZXIg6rCAIGVwb2NoL3dvcmtlciDsg53sobQg7J6s6rKA7KadIO2bhCDtj7TrsLEg6rCA64qlLlxuICByZXVzZT86IFJldXNlVGhyZWFkQ29vcmQ7XG4gIC8vIOyerOyCrOyaqSDshLHqs7Ug7IucIHR1cm4vc3RhcnQg7JeQIOuztOuCvCBpbnB1dCDigJQgZGVsdGEo66eI7KeA66eJIHVzZXIvdG9vbCDqsrDqs7wp66eMLiByZXVzZSDqsIAg7J6I7J2EIOuVjOunjCDshKTsoJUuXG4gIHJldXNlSW5wdXQ/OiBBcnJheTxVc2VySW5wdXQ+O1xuICAvLyDssqsgdHVybiAvIOyerOyCrOyaqSDtj7TrsLEg7IucIOuztOuCvCBpbnB1dCDigJQg7KCE7LK0IHByb21wdC4g7ZWt7IOBIOyEpOyglSjtj7TrsLEg7JWI7KCE66edKS5cbiAgY29sZElucHV0OiBBcnJheTxVc2VySW5wdXQ+O1xuICAvLyDsg4ggdGhyZWFkIOydvCDrlYwgaW5qZWN0IO2VoCDsoITssrQgaGlzdG9yeS4g7J6s7IKs7JqpIOyEseqztSDsi5zsl5QgZGlzcGF0Y2hlciDqsIAg7JWIIOyTtOuLpCh0aHJlYWQg6rCAIOydtOuvuCDriITsoIEpLlxuICBjb2xkSGlzdG9yeT86IEFycmF5PEpzb25WYWx1ZT47XG4gIC8vIOydtCDsmpTssq0g7Iuc7KCQ7J2YIHN5c3RlbSDtlbTsi5wgKOydkeuLteyXkOyEnCB0aHJlYWQg7KKM7ZGcIOuwnOq4iSDsi5wg7IKs7JqpKS5cbiAgc3lzdGVtSGFzaDogc3RyaW5nO1xufVxuXG4vLyB0aHJlYWQg7KKM7ZGcICsg65Ok7Ja07JioIOyalOyyreycvOuhnCBcIuyerOyCrOyaqSDqsIDriqXtlZzqsIBcIuulvCDtjJDsoJXtlZjqs6AsIHJldXNlL2NvbGQg7JaR7Kq9IHBheWxvYWQg66W8IOq1rOyEse2VnOuLpC5cbi8vIGRpc3BhdGNoZXIg64uo7J2YIGVwb2NoL3dvcmtlciDsg53sobQg6rKA7Kad7J2AIOyXrOq4sOyEnCDrqrsg7ZWY66+A66GcKOyDge2DnCDsl4bsnYwpIHJldXNlIOyijO2RnCArIOuRkCBwYXlsb2FkIOulvFxuLy8g66qo65GQIOuEmOq4sOqzoCwgZGlzcGF0Y2hlciDsnZggYWNxdWlyZVJldXNlV29ya2VyIOqysOqzvOyXkCDrlLDrnbwgcmV1c2UoZGVsdGEpIOuYkOuKlCBjb2xkKOyghOyytCkg66W8IOqzoOuluOuLpC5cbi8vIOyWkeyqveydhCDri6Qg65Ok6rOgIOqwgOyVvCByZXVzZSDqsIAg7Iuk7Yyo66GcIO2PtOuwseuPvOuPhCDsoITssrQgaGlzdG9yeSDroZwg66y466el7J2EIOuzteq1rO2VoCDsiJgg7J6I64ukLlxuZXhwb3J0IGZ1bmN0aW9uIGRlY2lkZUNvbnZSb3V0aW5nKGlucHV0OiBRdWVyeUlucHV0KTogQ29udkRlY2lzaW9uIHtcbiAgY29uc3Qgc3lzSGFzaCA9IHN5c3RlbUhhc2goaW5wdXQuc3lzdGVtKTtcbiAgY29uc3QgaGlzdG9yeTogQXJyYXk8SnNvblZhbHVlPiB8IHVuZGVmaW5lZCA9IGlucHV0Lmhpc3RvcnlcbiAgICA/IChKU09OLnBhcnNlKGlucHV0Lmhpc3RvcnkpIGFzIEFycmF5PEpzb25WYWx1ZT4pXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgY29vcmQgPSBpbnB1dC5ydW5Db250ZXh0Py50aHJlYWRDb29yZDtcblxuICAvLyDsnqzsgqzsmqkg7J6Q6rKpOiDsooztkZwg7KG07J6sICsgc3lzdGVtIOuPmeydvC4gc2Vzc2lvbktleSDqsqnrpqwgKyBzeXN0ZW1IYXNoIOuhnCDrjIDtmZQg64+Z7J287ISx7J20XG4gIC8vIOuztOyepeuQmOqzoCwg6rO17Ya1IHByZWZpeCDripQgY29kZXgg6rCAIHByb21wdF9jYWNoZV9rZXkg6rOg7KCV7Jy866GcIOyVjOyVhOyEnCDsupDsi5ztlZzri6QuXG4gIGNvbnN0IGVsaWdpYmxlID0gY29vcmQgIT09IHVuZGVmaW5lZCAmJiBjb29yZC5zeXN0ZW1IYXNoID09PSBzeXNIYXNoO1xuXG4gIHJldHVybiB7XG4gICAgcmV1c2U6XG4gICAgICBlbGlnaWJsZSAmJiBjb29yZFxuICAgICAgICA/IHsgd29ya2VySWQ6IGNvb3JkLndvcmtlcklkLCB0aHJlYWRJZDogY29vcmQudGhyZWFkSWQsIGVwb2NoOiBjb29yZC5lcG9jaCB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIC8vIOyerOyCrOyaqSB0dXJuIOydgCBkZWx0YSjrp4jsp4Drp4kgdXNlci90b29sIOqysOqzvCnrp4wg4oCUIHRocmVhZCDqsIAg7J2066+4IOydtOyghCB0dXJuIOuTpOydhCDriITsoIEuXG4gICAgcmV1c2VJbnB1dDogZWxpZ2libGUgPyBidWlsZERlbHRhSW5wdXQoaW5wdXQpIDogdW5kZWZpbmVkLFxuICAgIC8vIOyyqyB0dXJuIC8g7Y+067CxOiDsoITssrQgcHJvbXB0ICsgaGlzdG9yeSBpbmplY3QuIHRvb2wg6rKw6rO8IGZvbGxvdy11cCDsnbQgY29sZCDroZwg65ao7Ja07KC464+EXG4gICAgLy8g7Iuk7ZaJIHVzZXIg7KSE7JeQ64qUIFwi7J20IOqysOqzvOuhnCDqs4Tsho0g64u17ZWY6528XCLripQgY29udGludWF0aW9uIOydtCDrk6TslrTqsIDslbwg7ZWc64ukLlxuICAgIGNvbGRJbnB1dDogYnVpbGREZWx0YUlucHV0KGlucHV0KSxcbiAgICBjb2xkSGlzdG9yeTogaGlzdG9yeSxcbiAgICBzeXN0ZW1IYXNoOiBzeXNIYXNoLFxuICB9O1xufVxuXG4vLyDtm4Tsho0gdHVybiDsnZggaW5wdXQ6IHRvb2wg6rKw6rO86rCAIOyeiOycvOuptCDqt7jqsbggdGV4dCDroZwsIOyXhuycvOuptCDrp4jsp4Drp4kgdXNlcihwcm9tcHQpLlxuZnVuY3Rpb24gYnVpbGREZWx0YUlucHV0KGlucHV0OiBRdWVyeUlucHV0KTogQXJyYXk8VXNlcklucHV0PiB7XG4gIGlmIChpbnB1dC50b29sUmVzdWx0cyAmJiBpbnB1dC50b29sUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiB0b29sUmVzdWx0c1RvVGV4dChpbnB1dC50b29sUmVzdWx0cyksIHRleHRfZWxlbWVudHM6IFtdIH1dO1xuICB9XG4gIGlmIChpbnB1dC5pbnB1dCAmJiBpbnB1dC5pbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgaGFzVGV4dCA9IGlucHV0LmlucHV0LnNvbWUoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gXCJ0ZXh0XCIpO1xuICAgIGNvbnN0IHBhcnRzOiBBcnJheTxVc2VySW5wdXQ+ID0gaW5wdXQuaW5wdXQubWFwKChwYXJ0KSA9PiB7XG4gICAgICBpZiAocGFydC50eXBlID09PSBcInRleHRcIikge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInRleHRcIiwgdGV4dDogcGFydC50ZXh0LCB0ZXh0X2VsZW1lbnRzOiBwYXJ0LnRleHRfZWxlbWVudHMgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHR5cGU6IFwiaW1hZ2VcIiwgdXJsOiBwYXJ0LnVybCB9O1xuICAgIH0pO1xuICAgIGlmICghaGFzVGV4dCAmJiBpbnB1dC5wcm9tcHQubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBpbnB1dC5wcm9tcHQsIHRleHRfZWxlbWVudHM6IFtdIH0sIC4uLnBhcnRzXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9XG4gIHJldHVybiBbeyB0eXBlOiBcInRleHRcIiwgdGV4dDogaW5wdXQucHJvbXB0LCB0ZXh0X2VsZW1lbnRzOiBbXSB9XTtcbn1cblxuLy8g7J2R64u1IHRocmVhZENvb3JkICsg7JqU7LKtIOyLnOygkCDsoJXrs7TroZwg64uk7J2MIHRocmVhZCDsooztkZzrpbwg67Cc6riJ7ZWc64ukLlxuZXhwb3J0IGZ1bmN0aW9uIGlzc3VlQ29udkNvbnRleHQoXG4gIHRocmVhZENvb3JkOiBSZXVzZVRocmVhZENvb3JkLFxuICBkZWNpc2lvbjogQ29udkRlY2lzaW9uLFxuKTogUWdyaWRUaHJlYWRDb29yZCB7XG4gIHJldHVybiB7XG4gICAgd29ya2VySWQ6IHRocmVhZENvb3JkLndvcmtlcklkLFxuICAgIHRocmVhZElkOiB0aHJlYWRDb29yZC50aHJlYWRJZCxcbiAgICBlcG9jaDogdGhyZWFkQ29vcmQuZXBvY2gsXG4gICAgc3lzdGVtSGFzaDogZGVjaXNpb24uc3lzdGVtSGFzaCxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBaUJBLFNBQWdCLFdBQVcsUUFBeUI7Q0FDbEQsT0FBTyxXQUFXLFFBQVEsQ0FBQyxDQUN4QixPQUFPLFVBQVUsRUFBRSxDQUFDLENBQ3BCLE9BQU8sS0FBSyxDQUFDLENBQ2IsTUFBTSxHQUFHLEVBQUU7QUFDaEI7QUFHQSxTQUFTLGtCQUFrQixhQUE2QztDQU10RSxPQUFPLEdBTE8sWUFBWSxLQUFLLE9BQU87RUFDcEMsTUFBTSxPQUFPLEdBQUcsV0FBVyxLQUFLLEdBQUcsU0FBUyxLQUFLO0VBQ2pELE1BQU0sVUFBVSxHQUFHLFVBQVUsYUFBYTtFQUMxQyxPQUFPLHdCQUF3QixHQUFHLGFBQWEsT0FBTyxRQUFRLElBQUksR0FBRztDQUN2RSxDQUNVLENBQUEsQ0FBTSxLQUFLLElBQUksRUFBRTtBQUM3QjtBQW1CQSxTQUFnQixrQkFBa0IsT0FBaUM7Q0FDakUsTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNO0NBQ3ZDLE1BQU0sVUFBd0MsTUFBTSxVQUMvQyxLQUFLLE1BQU0sTUFBTSxPQUFPLElBQ3pCO0NBRUosTUFBTSxRQUFRLE1BQU0sWUFBWTtDQUloQyxNQUFNLFdBQVcsVUFBVSxVQUFhLE1BQU0sZUFBZTtDQUU3RCxPQUFPO0VBQ0wsT0FDRSxZQUFZLFFBQ1I7R0FBRSxVQUFVLE1BQU07R0FBVSxVQUFVLE1BQU07R0FBVSxPQUFPLE1BQU07RUFBTSxJQUN6RTtFQUVOLFlBQVksV0FBVyxnQkFBZ0IsS0FBSyxJQUFJO0VBR2hELFdBQVcsZ0JBQWdCLEtBQUs7RUFDaEMsYUFBYTtFQUNiLFlBQVk7Q0FDZDtBQUNGO0FBR0EsU0FBUyxnQkFBZ0IsT0FBcUM7Q0FDNUQsSUFBSSxNQUFNLGVBQWUsTUFBTSxZQUFZLFNBQVMsR0FDbEQsT0FBTyxDQUFDO0VBQUUsTUFBTTtFQUFRLE1BQU0sa0JBQWtCLE1BQU0sV0FBVztFQUFHLGVBQWUsQ0FBQztDQUFFLENBQUM7Q0FFekYsSUFBSSxNQUFNLFNBQVMsTUFBTSxNQUFNLFNBQVMsR0FBRztFQUN6QyxNQUFNLFVBQVUsTUFBTSxNQUFNLE1BQU0sU0FBUyxLQUFLLFNBQVMsTUFBTTtFQUMvRCxNQUFNLFFBQTBCLE1BQU0sTUFBTSxLQUFLLFNBQVM7R0FDeEQsSUFBSSxLQUFLLFNBQVMsUUFDaEIsT0FBTztJQUFFLE1BQU07SUFBUSxNQUFNLEtBQUs7SUFBTSxlQUFlLEtBQUs7R0FBYztHQUU1RSxPQUFPO0lBQUUsTUFBTTtJQUFTLEtBQUssS0FBSztHQUFJO0VBQ3hDLENBQUM7RUFDRCxJQUFJLENBQUMsV0FBVyxNQUFNLE9BQU8sU0FBUyxHQUNwQyxPQUFPLENBQUM7R0FBRSxNQUFNO0dBQVEsTUFBTSxNQUFNO0dBQVEsZUFBZSxDQUFDO0VBQUUsR0FBRyxHQUFHLEtBQUs7RUFFM0UsT0FBTztDQUNUO0NBQ0EsT0FBTyxDQUFDO0VBQUUsTUFBTTtFQUFRLE1BQU0sTUFBTTtFQUFRLGVBQWUsQ0FBQztDQUFFLENBQUM7QUFDakU7QUFHQSxTQUFnQixpQkFDZCxhQUNBLFVBQ2tCO0NBQ2xCLE9BQU87RUFDTCxVQUFVLFlBQVk7RUFDdEIsVUFBVSxZQUFZO0VBQ3RCLE9BQU8sWUFBWTtFQUNuQixZQUFZLFNBQVM7Q0FDdkI7QUFDRiJ9
93
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udi1yb3V0aW5nLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9jb252LXJvdXRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBjb252LXJvdXRpbmcg4oCUIOuMgO2ZlCDsl7Dsho3shLEoY2FjaGUgYWZmaW5pdHkpIOyijO2RnCDqsoDspp0v6rWs7ISxLlxuICpcbiAqIOuqqe2RnDogdGhyZWFkKD1jb252ZXJzYXRpb25faWQ9cHJvbXB0X2NhY2hlX2tleSnrpbwg7J6s7IKs7Jqp7ZW0IE9wZW5BSSBwcm9tcHQgY2FjaGluZyDsoIHspJEuXG4gKiAtIO2bhOyGjSB0dXJuOiDquLDsobQgdGhyZWFkIOyXkCBkZWx0YSjrp4jsp4Drp4kgdXNlciAvIHRvb2wg6rKw6rO8KeunjCDrs7Trg4QgKGhpc3RvcnkgaW5qZWN0IOyXhuydjCkuXG4gKiAtIOyyqyB0dXJuIC8g6rKA7KadIOyLpO2MqDog7IOIIHRocmVhZCArIGhpc3RvcnkgaW5qZWN0ICjtj7TrsLEsIOygle2ZleyEsSDrs7TsobQpLlxuICpcbiAqIOyLneuzhDog7ISc67KEIOuwnOq4iSDrtojtiKzrqoUgdGhyZWFkIOyijO2RnChRZ3JpZFRocmVhZENvb3JkKeulvCDtgbTrnbzqsIAg6re464yA66GcIO2ajOyGoS5cbiAqIOqygOymnTogc3lzdGVtSGFzaCjri6Trpbgg64yA7ZmUIOyYpOygkeyGjSDssKjri6gpICsgKGRpc3BhdGNoZXLsnZgpIGVwb2NoL3dvcmtlciDsg53sobQuXG4gKi9cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHsgdHlwZSBSZXVzZVRocmVhZENvb3JkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vcHJvdmlkZXItZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgdHlwZSBKc29uVmFsdWUsIHR5cGUgVXNlcklucHV0IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vcHJvdmlkZXItdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRUaHJlYWRDb29yZCwgdHlwZSBRdWVyeUlucHV0LCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0IH0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbUhhc2goc3lzdGVtPzogc3RyaW5nLCBtb2RlbE5hbWVzcGFjZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gICAgLnVwZGF0ZShtb2RlbE5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gKHN5c3RlbSA/PyBcIlwiKSA6IGAke21vZGVsTmFtZXNwYWNlfVxcMCR7c3lzdGVtID8/IFwiXCJ9YClcbiAgICAuZGlnZXN0KFwiaGV4XCIpXG4gICAgLnNsaWNlKDAsIDE2KTtcbn1cblxuLy8gdG9vbCDqsrDqs7zrpbwg64uk7J2MIHR1cm4g7J2YIGlucHV0IHRleHQg66GcIOuzgO2ZmCAocHJvdmlkZXIg7J6F66Cl7J2AIFVzZXJJbnB1dCDrp4wg67Cb7J2MKS5cbmZ1bmN0aW9uIHRvb2xSZXN1bHRzVG9UZXh0KHRvb2xSZXN1bHRzOiBRZ3JpZFRvb2xSZXN1bHRJbnB1dFtdKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSB0b29sUmVzdWx0cy5tYXAoKHRyKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRyLnRvb2xOYW1lID8gYCAoJHt0ci50b29sTmFtZX0pYCA6IFwiXCI7XG4gICAgY29uc3QgZXJyTWFyayA9IHRyLmlzRXJyb3IgPyBcIiBbZXJyb3JdXCIgOiBcIlwiO1xuICAgIHJldHVybiBgVG9vbCByZXN1bHQgZm9yIGNhbGwgJHt0ci50b29sQ2FsbElkfSR7bmFtZX0ke2Vyck1hcmt9OiAke3RyLm91dHB1dH1gO1xuICB9KTtcbiAgcmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuXFxuTm93IGNvbnRpbnVlIGFuc3dlcmluZyB0aGUgdXNlcidzIHJlcXVlc3QgdXNpbmcgdGhlc2UgcmVzdWx0cy5gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZEZWNpc2lvbiB7XG4gIC8vIGRpc3BhdGNoZXIg66GcIOuEmOq4uCByZXVzZSDsooztkZwgKOqygOymnSDthrXqs7wg7Iuc7JeQ66eMKS4gZGlzcGF0Y2hlciDqsIAgZXBvY2gvd29ya2VyIOyDneyhtCDsnqzqsoDspp0g7ZuEIO2PtOuwsSDqsIDriqUuXG4gIHJldXNlPzogUmV1c2VUaHJlYWRDb29yZDtcbiAgLy8g7J6s7IKs7JqpIOyEseqztSDsi5wgdHVybi9zdGFydCDsl5Ag67O064K8IGlucHV0IOKAlCBkZWx0YSjrp4jsp4Drp4kgdXNlci90b29sIOqysOqzvCnrp4wuIHJldXNlIOqwgCDsnojsnYQg65WM66eMIOyEpOyglS5cbiAgcmV1c2VJbnB1dD86IEFycmF5PFVzZXJJbnB1dD47XG4gIC8vIOyyqyB0dXJuIC8g7J6s7IKs7JqpIO2PtOuwsSDsi5wg67O064K8IGlucHV0IOKAlCDsoITssrQgcHJvbXB0LiDtla3sg4Eg7ISk7KCVKO2PtOuwsSDslYjsoITrp50pLlxuICBjb2xkSW5wdXQ6IEFycmF5PFVzZXJJbnB1dD47XG4gIC8vIOyDiCB0aHJlYWQg7J28IOuVjCBpbmplY3Qg7ZWgIOyghOyytCBoaXN0b3J5LiDsnqzsgqzsmqkg7ISx6rO1IOyLnOyXlCBkaXNwYXRjaGVyIOqwgCDslYgg7JO064ukKHRocmVhZCDqsIAg7J2066+4IOuIhOyggSkuXG4gIGNvbGRIaXN0b3J5PzogQXJyYXk8SnNvblZhbHVlPjtcbiAgLy8g7J20IOyalOyyrSDsi5zsoJDsnZggc3lzdGVtIO2VtOyLnCAo7J2R64u17JeQ7IScIHRocmVhZCDsooztkZwg67Cc6riJIOyLnCDsgqzsmqkpLlxuICBzeXN0ZW1IYXNoOiBzdHJpbmc7XG4gIC8vIERpcmVjdC1wcm92aWRlciBjYWNoZSBhZmZpbml0eS4gUHJlc2VuY2UgbWFya3MgdGhlIGVwb2NoPS0xIGNvb3JkaW5hdGUgc2VtYW50aWNzLlxuICBwcm9tcHRDYWNoZUtleT86IHN0cmluZztcbiAgcHJlZmVycmVkVG9rZW5JZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252Um91dGluZ09wdGlvbnMge1xuICBkaXJlY3RPcGVuQUk/OiBib29sZWFuO1xuICBtb2RlbE5hbWVzcGFjZT86IHN0cmluZztcbn1cblxuLy8gdGhyZWFkIOyijO2RnCArIOuTpOyWtOyYqCDsmpTssq3snLzroZwgXCLsnqzsgqzsmqkg6rCA64ql7ZWc6rCAXCLrpbwg7YyQ7KCV7ZWY6rOgLCByZXVzZS9jb2xkIOyWkeyqvSBwYXlsb2FkIOulvCDqtazshLHtlZzri6QuXG4vLyBkaXNwYXRjaGVyIOuLqOydmCBlcG9jaC93b3JrZXIg7IOd7KG0IOqygOymneydgCDsl6zquLDshJwg66q7IO2VmOuvgOuhnCjsg4Htg5wg7JeG7J2MKSByZXVzZSDsooztkZwgKyDrkZAgcGF5bG9hZCDrpbxcbi8vIOuqqOuRkCDrhJjquLDqs6AsIGRpc3BhdGNoZXIg7J2YIGFjcXVpcmVSZXVzZVdvcmtlciDqsrDqs7zsl5Ag65Sw6528IHJldXNlKGRlbHRhKSDrmJDripQgY29sZCjsoITssrQpIOulvCDqs6Drpbjri6QuXG4vLyDslpHsqr3snYQg64ukIOuTpOqzoCDqsIDslbwgcmV1c2Ug6rCAIOyLpO2MqOuhnCDtj7TrsLHrj7zrj4Qg7KCE7LK0IGhpc3Rvcnkg66GcIOusuOunpeydhCDrs7XqtaztlaAg7IiYIOyeiOuLpC5cbmV4cG9ydCBmdW5jdGlvbiBkZWNpZGVDb252Um91dGluZyhcbiAgaW5wdXQ6IFF1ZXJ5SW5wdXQsXG4gIG9wdGlvbnM6IENvbnZSb3V0aW5nT3B0aW9ucyA9IHt9LFxuKTogQ29udkRlY2lzaW9uIHtcbiAgY29uc3Qgc3lzSGFzaCA9IHN5c3RlbUhhc2goXG4gICAgaW5wdXQuc3lzdGVtLFxuICAgIG9wdGlvbnMuZGlyZWN0T3BlbkFJID8gKG9wdGlvbnMubW9kZWxOYW1lc3BhY2UgPz8gaW5wdXQubW9kZWwgPz8gXCJvcGVuYWlcIikgOiB1bmRlZmluZWQsXG4gICk7XG4gIGNvbnN0IGhpc3Rvcnk6IEFycmF5PEpzb25WYWx1ZT4gfCB1bmRlZmluZWQgPSBpbnB1dC5oaXN0b3J5XG4gICAgPyAoSlNPTi5wYXJzZShpbnB1dC5oaXN0b3J5KSBhcyBBcnJheTxKc29uVmFsdWU+KVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNvb3JkID0gaW5wdXQucnVuQ29udGV4dD8udGhyZWFkQ29vcmQ7XG5cbiAgLy8g7J6s7IKs7JqpIOyekOqyqTog7KKM7ZGcIOyhtOyerCArIHN5c3RlbSDrj5nsnbwuIHNlc3Npb25LZXkg6rKp66asICsgc3lzdGVtSGFzaCDroZwg64yA7ZmUIOuPmeydvOyEseydtFxuICAvLyDrs7TsnqXrkJjqs6AsIOqzte2GtSBwcmVmaXgg64qUIOuwseyXlOuTnOqwgCBwcm9tcHRfY2FjaGVfa2V5IOqzoOygleycvOuhnCDslYzslYTshJwg7LqQ7Iuc7ZWc64ukLlxuICBjb25zdCBkaXJlY3RDb29yZEVsaWdpYmxlID1cbiAgICBvcHRpb25zLmRpcmVjdE9wZW5BSSA9PT0gdHJ1ZSAmJlxuICAgIGNvb3JkPy5lcG9jaCA9PT0gLTEgJiZcbiAgICBjb29yZC5zeXN0ZW1IYXNoID09PSBzeXNIYXNoICYmXG4gICAgaW5wdXQuY2FjaGVBZmZpbml0eUtleSAhPT0gdW5kZWZpbmVkICYmXG4gICAgY29vcmQudGhyZWFkSWQgPT09IGlucHV0LmNhY2hlQWZmaW5pdHlLZXk7XG4gIGNvbnN0IGxlZ2FjeVJldXNlRWxpZ2libGUgPVxuICAgIG9wdGlvbnMuZGlyZWN0T3BlbkFJICE9PSB0cnVlICYmIGNvb3JkICE9PSB1bmRlZmluZWQgJiYgY29vcmQuc3lzdGVtSGFzaCA9PT0gc3lzSGFzaDtcbiAgLy8gYWZmaW5pdHkg66W8IOyalOyyre2VmOyngCDslYrsnYAgb25lLXNob3Qg7JqU7LKt7JeQIOyehOydmCDtgqTrpbwg67aZ7J2066m0IHRyYW5zcG9ydCDqsIAg6re4IOyGjOy8k+ydhFxuICAvLyBhZmZpbml0eSDshozsvJPsnLzroZwg7Jik7J247ZW0IOyerOyCrOyaqeuQmOyngCDslYrsnYQg7Jew6rKw7J2EIOqzhOyGjSDrtpnrk6TslrQg65GU64ukIOKGkiDtgqTrpbwg67mE7JuMIOuRlOuLpC5cbiAgY29uc3QgY2FjaGVLZXkgPSBvcHRpb25zLmRpcmVjdE9wZW5BSSA/IGlucHV0LmNhY2hlQWZmaW5pdHlLZXkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICByZXVzZTpcbiAgICAgIGxlZ2FjeVJldXNlRWxpZ2libGUgJiYgY29vcmRcbiAgICAgICAgPyB7IHdvcmtlcklkOiBjb29yZC53b3JrZXJJZCwgdGhyZWFkSWQ6IGNvb3JkLnRocmVhZElkLCBlcG9jaDogY29vcmQuZXBvY2ggfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAvLyDsnqzsgqzsmqkgdHVybiDsnYAgZGVsdGEo66eI7KeA66eJIHVzZXIvdG9vbCDqsrDqs7wp66eMIOKAlCB0aHJlYWQg6rCAIOydtOuvuCDsnbTsoIQgdHVybiDrk6TsnYQg64iE7KCBLlxuICAgIHJldXNlSW5wdXQ6IGxlZ2FjeVJldXNlRWxpZ2libGUgPyBidWlsZERlbHRhSW5wdXQoaW5wdXQpIDogdW5kZWZpbmVkLFxuICAgIC8vIOyyqyB0dXJuIC8g7Y+067CxOiDsoITssrQgcHJvbXB0ICsgaGlzdG9yeSBpbmplY3QuIHRvb2wg6rKw6rO8IGZvbGxvdy11cCDsnbQgY29sZCDroZwg65ao7Ja07KC464+EXG4gICAgLy8g7Iuk7ZaJIHVzZXIg7KSE7JeQ64qUIFwi7J20IOqysOqzvOuhnCDqs4Tsho0g64u17ZWY6528XCLripQgY29udGludWF0aW9uIOydtCDrk6TslrTqsIDslbwg7ZWc64ukLlxuICAgIGNvbGRJbnB1dDogYnVpbGREZWx0YUlucHV0KGlucHV0KSxcbiAgICBjb2xkSGlzdG9yeTogaGlzdG9yeSxcbiAgICBzeXN0ZW1IYXNoOiBzeXNIYXNoLFxuICAgIHByb21wdENhY2hlS2V5OiBjYWNoZUtleSxcbiAgICBwcmVmZXJyZWRUb2tlbklkOiBkaXJlY3RDb29yZEVsaWdpYmxlID8gY29vcmQud29ya2VySWQgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8vIO2bhOyGjSB0dXJuIOydmCBpbnB1dDogdG9vbCDqsrDqs7zqsIAg7J6I7Jy866m0IOq3uOqxuCB0ZXh0IOuhnCwg7JeG7Jy866m0IOuniOyngOuniSB1c2VyKHByb21wdCkuXG5mdW5jdGlvbiBidWlsZERlbHRhSW5wdXQoaW5wdXQ6IFF1ZXJ5SW5wdXQpOiBBcnJheTxVc2VySW5wdXQ+IHtcbiAgaWYgKGlucHV0LnRvb2xSZXN1bHRzICYmIGlucHV0LnRvb2xSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IHRvb2xSZXN1bHRzVG9UZXh0KGlucHV0LnRvb2xSZXN1bHRzKSwgdGV4dF9lbGVtZW50czogW10gfV07XG4gIH1cbiAgaWYgKGlucHV0LmlucHV0ICYmIGlucHV0LmlucHV0Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBoYXNUZXh0ID0gaW5wdXQuaW5wdXQuc29tZSgocGFydCkgPT4gcGFydC50eXBlID09PSBcInRleHRcIik7XG4gICAgY29uc3QgcGFydHM6IEFycmF5PFVzZXJJbnB1dD4gPSBpbnB1dC5pbnB1dC5tYXAoKHBhcnQpID0+IHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09IFwidGV4dFwiKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBwYXJ0LnRleHQsIHRleHRfZWxlbWVudHM6IHBhcnQudGV4dF9lbGVtZW50cyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogXCJpbWFnZVwiLCB1cmw6IHBhcnQudXJsIH07XG4gICAgfSk7XG4gICAgaWYgKCFoYXNUZXh0ICYmIGlucHV0LnByb21wdC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGlucHV0LnByb21wdCwgdGV4dF9lbGVtZW50czogW10gfSwgLi4ucGFydHNdO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHM7XG4gIH1cbiAgcmV0dXJuIFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBpbnB1dC5wcm9tcHQsIHRleHRfZWxlbWVudHM6IFtdIH1dO1xufVxuXG4vLyDsnZHri7UgdGhyZWFkQ29vcmQgKyDsmpTssq0g7Iuc7KCQIOygleuztOuhnCDri6TsnYwgdGhyZWFkIOyijO2RnOulvCDrsJzquIntlZzri6QuXG5leHBvcnQgZnVuY3Rpb24gaXNzdWVDb252Q29udGV4dChcbiAgdGhyZWFkQ29vcmQ6IFJldXNlVGhyZWFkQ29vcmQsXG4gIGRlY2lzaW9uOiBDb252RGVjaXNpb24sXG4gIHByZWZlcnJlZFRva2VuSWQgPSB0aHJlYWRDb29yZC53b3JrZXJJZCxcbik6IFFncmlkVGhyZWFkQ29vcmQge1xuICBpZiAoZGVjaXNpb24ucHJvbXB0Q2FjaGVLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd29ya2VySWQ6IHByZWZlcnJlZFRva2VuSWQsXG4gICAgICB0aHJlYWRJZDogZGVjaXNpb24ucHJvbXB0Q2FjaGVLZXksXG4gICAgICBlcG9jaDogLTEsXG4gICAgICBzeXN0ZW1IYXNoOiBkZWNpc2lvbi5zeXN0ZW1IYXNoLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3b3JrZXJJZDogdGhyZWFkQ29vcmQud29ya2VySWQsXG4gICAgdGhyZWFkSWQ6IHRocmVhZENvb3JkLnRocmVhZElkLFxuICAgIGVwb2NoOiB0aHJlYWRDb29yZC5lcG9jaCxcbiAgICBzeXN0ZW1IYXNoOiBkZWNpc2lvbi5zeXN0ZW1IYXNoLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFnQkEsU0FBZ0IsV0FBVyxRQUFpQixnQkFBaUM7Q0FDM0UsT0FBTyxXQUFXLFFBQVEsQ0FBQyxDQUN4QixPQUFPLG1CQUFtQixTQUFhLFVBQVUsS0FBTSxHQUFHLGVBQWUsSUFBSSxVQUFVLElBQUksQ0FBQyxDQUM1RixPQUFPLEtBQUssQ0FBQyxDQUNiLE1BQU0sR0FBRyxFQUFFO0FBQ2hCO0FBR0EsU0FBUyxrQkFBa0IsYUFBNkM7Q0FNdEUsT0FBTyxHQUxPLFlBQVksS0FBSyxPQUFPO0VBQ3BDLE1BQU0sT0FBTyxHQUFHLFdBQVcsS0FBSyxHQUFHLFNBQVMsS0FBSztFQUNqRCxNQUFNLFVBQVUsR0FBRyxVQUFVLGFBQWE7RUFDMUMsT0FBTyx3QkFBd0IsR0FBRyxhQUFhLE9BQU8sUUFBUSxJQUFJLEdBQUc7Q0FDdkUsQ0FDVSxDQUFBLENBQU0sS0FBSyxJQUFJLEVBQUU7QUFDN0I7QUEyQkEsU0FBZ0Isa0JBQ2QsT0FDQSxVQUE4QixDQUFDLEdBQ2pCO0NBQ2QsTUFBTSxVQUFVLFdBQ2QsTUFBTSxRQUNOLFFBQVEsZUFBZ0IsUUFBUSxrQkFBa0IsTUFBTSxTQUFTLFdBQVksTUFDL0U7Q0FDQSxNQUFNLFVBQXdDLE1BQU0sVUFDL0MsS0FBSyxNQUFNLE1BQU0sT0FBTyxJQUN6QjtDQUVKLE1BQU0sUUFBUSxNQUFNLFlBQVk7Q0FJaEMsTUFBTSxzQkFDSixRQUFRLGlCQUFpQixRQUN6QixPQUFPLFVBQVUsTUFDakIsTUFBTSxlQUFlLFdBQ3JCLE1BQU0scUJBQXFCLFVBQzNCLE1BQU0sYUFBYSxNQUFNO0NBQzNCLE1BQU0sc0JBQ0osUUFBUSxpQkFBaUIsUUFBUSxVQUFVLFVBQWEsTUFBTSxlQUFlO0NBRy9FLE1BQU0sV0FBVyxRQUFRLGVBQWUsTUFBTSxtQkFBbUI7Q0FFakUsT0FBTztFQUNMLE9BQ0UsdUJBQXVCLFFBQ25CO0dBQUUsVUFBVSxNQUFNO0dBQVUsVUFBVSxNQUFNO0dBQVUsT0FBTyxNQUFNO0VBQU0sSUFDekU7RUFFTixZQUFZLHNCQUFzQixnQkFBZ0IsS0FBSyxJQUFJO0VBRzNELFdBQVcsZ0JBQWdCLEtBQUs7RUFDaEMsYUFBYTtFQUNiLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsa0JBQWtCLHNCQUFzQixNQUFNLFdBQVc7Q0FDM0Q7QUFDRjtBQUdBLFNBQVMsZ0JBQWdCLE9BQXFDO0NBQzVELElBQUksTUFBTSxlQUFlLE1BQU0sWUFBWSxTQUFTLEdBQ2xELE9BQU8sQ0FBQztFQUFFLE1BQU07RUFBUSxNQUFNLGtCQUFrQixNQUFNLFdBQVc7RUFBRyxlQUFlLENBQUM7Q0FBRSxDQUFDO0NBRXpGLElBQUksTUFBTSxTQUFTLE1BQU0sTUFBTSxTQUFTLEdBQUc7RUFDekMsTUFBTSxVQUFVLE1BQU0sTUFBTSxNQUFNLFNBQVMsS0FBSyxTQUFTLE1BQU07RUFDL0QsTUFBTSxRQUEwQixNQUFNLE1BQU0sS0FBSyxTQUFTO0dBQ3hELElBQUksS0FBSyxTQUFTLFFBQ2hCLE9BQU87SUFBRSxNQUFNO0lBQVEsTUFBTSxLQUFLO0lBQU0sZUFBZSxLQUFLO0dBQWM7R0FFNUUsT0FBTztJQUFFLE1BQU07SUFBUyxLQUFLLEtBQUs7R0FBSTtFQUN4QyxDQUFDO0VBQ0QsSUFBSSxDQUFDLFdBQVcsTUFBTSxPQUFPLFNBQVMsR0FDcEMsT0FBTyxDQUFDO0dBQUUsTUFBTTtHQUFRLE1BQU0sTUFBTTtHQUFRLGVBQWUsQ0FBQztFQUFFLEdBQUcsR0FBRyxLQUFLO0VBRTNFLE9BQU87Q0FDVDtDQUNBLE9BQU8sQ0FBQztFQUFFLE1BQU07RUFBUSxNQUFNLE1BQU07RUFBUSxlQUFlLENBQUM7Q0FBRSxDQUFDO0FBQ2pFO0FBR0EsU0FBZ0IsaUJBQ2QsYUFDQSxVQUNBLG1CQUFtQixZQUFZLFVBQ2I7Q0FDbEIsSUFBSSxTQUFTLGdCQUNYLE9BQU87RUFDTCxVQUFVO0VBQ1YsVUFBVSxTQUFTO0VBQ25CLE9BQU87RUFDUCxZQUFZLFNBQVM7Q0FDdkI7Q0FFRixPQUFPO0VBQ0wsVUFBVSxZQUFZO0VBQ3RCLFVBQVUsWUFBWTtFQUN0QixPQUFPLFlBQVk7RUFDbkIsWUFBWSxTQUFTO0NBQ3ZCO0FBQ0YifQ==
@@ -1,5 +1,5 @@
1
- import { getLogger } from "@logtape/logtape";
2
1
  import { createHash, randomBytes } from "node:crypto";
2
+ import { getLogger } from "@logtape/logtape";
3
3
  //#region src/application/qgrid/oauth.ts
4
4
  /**
5
5
  * OAuth 유틸 — Claude Code 소스의 OAuth 플로우 그대로 재현
@@ -1,8 +1,8 @@
1
1
  import { SD } from "../../i18n/sd.generated.js";
2
+ import { RequestLogModel } from "../request-log/request-log.model.js";
2
3
  import { isRestartPending } from "../../utils/server-restart.js";
3
4
  import { estimateImageGenerationCostMicroUsd, imageGenerationCostMethod } from "./qgrid-image-generation.js";
4
5
  import { buildImageGenerationToolSteps, formatResponseForLog, getImageParts } from "./qgrid-response-format.js";
5
- import { RequestLogModel } from "../request-log/request-log.model.js";
6
6
  import { ServiceUnavailableException } from "sonamu";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  //#region src/application/qgrid/qgrid-run-lifecycle.ts
@@ -63,6 +63,14 @@ function filterHistoryForStorage(rawHistory) {
63
63
  return;
64
64
  }
65
65
  }
66
+ function isParseableJson(text) {
67
+ try {
68
+ JSON.parse(text);
69
+ return true;
70
+ } catch {
71
+ return false;
72
+ }
73
+ }
66
74
  /**
67
75
  * logger-enabled query/stream 응답 전후에 호출.
68
76
  *
@@ -87,7 +95,8 @@ async function beforeQuery(args) {
87
95
  project_name: args.projectName,
88
96
  history: filterHistoryForStorage(args.history),
89
97
  tools: args.tools?.length ? args.tools : void 0,
90
- is_image_generation: args.imageGeneration
98
+ is_image_generation: args.imageGeneration,
99
+ json_schema: args.jsonSchema ?? null
91
100
  });
92
101
  }
93
102
  if (isRestartPending()) {
@@ -144,9 +153,11 @@ async function afterQuery(requestLogId, stepIndex, args, result) {
144
153
  return { runContext: { requestLogId } };
145
154
  }
146
155
  const agg = await RequestLogModel.aggregateStepUsage(requestLogId);
156
+ const responseText = formatResponseForLog(result);
147
157
  await RequestLogModel.finishRun(requestLogId, {
148
158
  status: "succeeded",
149
- response: formatResponseForLog(result),
159
+ response: responseText,
160
+ response_json_ok: args.jsonSchema ? isParseableJson(responseText) : null,
150
161
  token_name: result.tokenName,
151
162
  input_tokens: agg.input_tokens,
152
163
  output_tokens: agg.output_tokens,
@@ -264,4 +275,4 @@ async function performStaleRunCleanup() {
264
275
  //#endregion
265
276
  export { afterQuery, assertNativeRunAdmission, beforeQuery, finishActiveNativeRunsForRestart, finishRunAborted, finishRunWithError, resetNativeRunRegistryForTests };
266
277
 
267
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcnVuLWxpZmVjeWNsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvcWdyaWQtcnVuLWxpZmVjeWNsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi8uLi9pMThuL3NkLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgaXNSZXN0YXJ0UGVuZGluZyB9IGZyb20gXCIuLi8uLi91dGlscy9zZXJ2ZXItcmVzdGFydFwiO1xuaW1wb3J0IHsgUmVxdWVzdExvZ01vZGVsIH0gZnJvbSBcIi4uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsXCI7XG5pbXBvcnQge1xuICBlc3RpbWF0ZUltYWdlR2VuZXJhdGlvbkNvc3RNaWNyb1VzZCxcbiAgaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZCxcbn0gZnJvbSBcIi4vcWdyaWQtaW1hZ2UtZ2VuZXJhdGlvblwiO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMsXG4gIGZvcm1hdFJlc3BvbnNlRm9yTG9nLFxuICBnZXRJbWFnZVBhcnRzLFxufSBmcm9tIFwiLi9xZ3JpZC1yZXNwb25zZS1mb3JtYXRcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRSdW5Db250ZXh0LCB0eXBlIFF1ZXJ5SW5wdXQsIHR5cGUgUXVlcnlPdXRwdXQgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJydW4tbGlmZWN5Y2xlXCJdKTtcbmNvbnN0IFNUQUxFX1JVTl9USFJFU0hPTERfTVMgPSAzMCAqIDYwICogMTAwMDtcbmNvbnN0IFNUQUxFX0NMRUFOVVBfSU5URVJWQUxfTVMgPSA2MCAqIDEwMDA7XG5sZXQgc3RhbGVDbGVhbnVwSW5GbGlnaHQ6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG5sZXQgbGFzdFN0YWxlQ2xlYW51cFN0YXJ0ZWRBdCA9IDA7XG5jb25zdCBhY3RpdmVOYXRpdmVSdW5SZWZzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbmNvbnN0IGludGVycnVwdGVkTmF0aXZlUnVuSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5jb25zdCBhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzID0gbmV3IE1hcDxudW1iZXIsIFNldDxQcm9taXNlPHZvaWQ+Pj4oKTtcblxuZnVuY3Rpb24gcmVzdGFydFVuYXZhaWxhYmxlKCk6IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiB7XG4gIHJldHVybiBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwicWdyaWQucmVzdGFydFBlbmRpbmdcIikoKSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTmF0aXZlUnVuKHJlcXVlc3RMb2dJZDogbnVtYmVyKTogdm9pZCB7XG4gIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuc2V0KHJlcXVlc3RMb2dJZCwgKGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gMCkgKyAxKTtcbn1cblxuZnVuY3Rpb24gcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQ6IG51bWJlcik6IHZvaWQge1xuICBjb25zdCByZWZzID0gYWN0aXZlTmF0aXZlUnVuUmVmcy5nZXQocmVxdWVzdExvZ0lkKTtcbiAgaWYgKHJlZnMgPT09IHVuZGVmaW5lZCB8fCByZWZzIDw9IDEpIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIGVsc2UgYWN0aXZlTmF0aXZlUnVuUmVmcy5zZXQocmVxdWVzdExvZ0lkLCByZWZzIC0gMSk7XG59XG5cbmZ1bmN0aW9uIHRyYWNrTmF0aXZlRmluYWxpemVyPFQ+KHJlcXVlc3RMb2dJZDogbnVtYmVyLCBmaW5hbGl6ZTogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvcGVyYXRpb24gPSBmaW5hbGl6ZSgpO1xuICBjb25zdCBzZXR0bGVkID0gb3BlcmF0aW9uLnRoZW4oXG4gICAgKCkgPT4gdW5kZWZpbmVkLFxuICAgICgpID0+IHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgZmluYWxpemVycyA9IGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gbmV3IFNldDxQcm9taXNlPHZvaWQ+PigpO1xuICBmaW5hbGl6ZXJzLmFkZChzZXR0bGVkKTtcbiAgYWN0aXZlTmF0aXZlRmluYWxpemVycy5zZXQocmVxdWVzdExvZ0lkLCBmaW5hbGl6ZXJzKTtcbiAgdm9pZCBzZXR0bGVkLnRoZW4oKCkgPT4ge1xuICAgIGZpbmFsaXplcnMuZGVsZXRlKHNldHRsZWQpO1xuICAgIGlmIChmaW5hbGl6ZXJzLnNpemUgPT09IDApIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH0pO1xuICByZXR1cm4gb3BlcmF0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmF0aXZlUnVuQWRtaXNzaW9uKCk6IHZvaWQge1xuICBpZiAoaXNSZXN0YXJ0UGVuZGluZygpKSB0aHJvdyByZXN0YXJ0VW5hdmFpbGFibGUoKTtcbn1cblxuZnVuY3Rpb24gd2l0aFByb3ZpZGVyUHJlZml4KFxuICByb3V0ZU1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIW1vZGVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAobW9kZWwuaW5jbHVkZXMoXCIvXCIpKSByZXR1cm4gbW9kZWw7XG4gIGNvbnN0IHNsYXNoID0gcm91dGVNb2RlbD8uaW5kZXhPZihcIi9cIikgPz8gLTE7XG4gIGNvbnN0IHByb3ZpZGVyID0gc2xhc2ggPiAwID8gcm91dGVNb2RlbD8uc2xpY2UoMCwgc2xhc2gpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcHJvdmlkZXIgPyBgJHtwcm92aWRlcn0vJHttb2RlbH1gIDogbW9kZWw7XG59XG5cbi8qKlxuICogaGlzdG9yeeuKlCDsm5Drs7gg6re464yA66GcIOyggOyepe2VmOq4sOuztOuLpOuKlCwgcnVuIOu2hOyEneyXkCDtlYTsmpTtlZwgdXNlci9hc3Npc3RhbnQg7KCV67O066eMIO2VhO2EsOunge2VtOyEnCDsoIDsnqVcbiAqL1xuZnVuY3Rpb24gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UocmF3SGlzdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gIGlmICghcmF3SGlzdG9yeSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IEpTT04ucGFyc2UocmF3SGlzdG9yeSkgYXMgdW5rbm93bltdO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0gfHwgdHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIChyZWNvcmQucm9sZSA9PT0gXCJ1c2VyXCIgfHwgcmVjb3JkLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPiAwID8gZmlsdGVyZWQgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUnVuTGlmZWN5Y2xlUmVzdWx0ID0ge1xuICBydW5Db250ZXh0PzogUWdyaWRSdW5Db250ZXh0O1xufTtcblxuLyoqXG4gKiBsb2dnZXItZW5hYmxlZCBxdWVyeS9zdHJlYW0g7J2R64u1IOyghO2bhOyXkCDtmLjstpwuXG4gKlxuICogMSkgYmVmb3JlUXVlcnk6IHJ1biDsg53shLEv6rOE7IaNICsgdG9vbCByZXN1bHQg7JmE66OMICsgc3RhbGUgdG9vbC13YWl0IGNsZWFudXBcbiAqIDIpIGFmdGVyUXVlcnk6IGdlbmVyYXRlIHN0ZXAgKyB0b29sLWNhbGwgc3RlcCArIGZpbmlzaC9rZWVwLW9wZW5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJlZm9yZVF1ZXJ5KGFyZ3M6IFF1ZXJ5SW5wdXQpOiBQcm9taXNlPHtcbiAgcmVxdWVzdExvZ0lkOiBudW1iZXI7XG4gIHN0ZXBJbmRleDogbnVtYmVyO1xufT4ge1xuICBhc3NlcnROYXRpdmVSdW5BZG1pc3Npb24oKTtcblxuICBsZXQgcmVxdWVzdExvZ0lkOiBudW1iZXI7XG4gIGxldCBzdGVwSW5kZXggPSAwO1xuXG4gIC8vIHJlcXVlc3RMb2dJZCDqsIAg7J6I7J2EIOuVjOunjCDquLDsobQgcnVuIOyXsOyepS4gdGhyZWFkQ29vcmQg66eMIOyeiOuKlCBjb252IOuKlCDsg4ggcnVuIOycvOuhnCDsi5zsnpEuXG4gIC8vIGNvbnRpbnVhdGlvbiDsnYAgY3JlYXRlUnVuIOydhCDqsbTrhIjrm7Drr4DroZwgcnVuIOydmCB0b29scyDripQg7LKrIOyKpO2FnSDsnqXssKnrtoTsnLzroZwg6rOg7KCV65Cc64ukIOKAlFxuICAvLyBBSSBTREsgcHJlcGFyZVN0ZXAvYWN0aXZlVG9vbHMg66GcIOyKpO2FneuniOuLpCDtiLTshYvsnbQg67CU64CM7Ja064+EIOuhnOq3uOyXkOuKlCDrsJjsmIHrkJjsp4Ag7JWK64qU64ukLlxuICBpZiAoYXJncy5ydW5Db250ZXh0Py5yZXF1ZXN0TG9nSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcXVlc3RMb2dJZCA9IGFyZ3MucnVuQ29udGV4dC5yZXF1ZXN0TG9nSWQ7XG4gICAgLy8gY2xlYW51cOqzvCDqsJnsnYAgREIgYWR2aXNvcnkgbG9ja+ydhCDsnqHqs6AgdG9vbCDqsrDqs7wg67CY7JiBICsg64uk7J2MIHN0ZXAg7JiI7JW97J2EIO2VnFxuICAgIC8vIHRyYW5zYWN0aW9u7JeQ7IScIOyymOumrO2VnOuLpC4g7Jes65+sIHFncmlkIO2UhOuhnOyEuOyKpCDsgqzsnbTsl5DshJzrj4Qgc3RhbGUgZXhwaXJ56rCAXG4gICAgLy8g64+E7LCpIOykkeyduCBmb2xsb3ctdXDsnYQgZXJyb3LroZwg642u7Ja07JOw7KeAIOuqu+2VnOuLpC5cbiAgICBzdGVwSW5kZXggPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuY29udGludWVUb29sUnVuKHJlcXVlc3RMb2dJZCwgYXJncy50b29sUmVzdWx0cyA/PyBbXSk7XG4gICAgYXdhaXQgY2xlYW51cFN0YWxlUnVucygpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IGNsZWFudXBTdGFsZVJ1bnMoKTtcbiAgICByZXF1ZXN0TG9nSWQgPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuY3JlYXRlUnVuKHtcbiAgICAgIHVzZXJfcHJvbXB0OiBhcmdzLnByb21wdCxcbiAgICAgIHN5c3RlbV9wcm9tcHQ6IGFyZ3Muc3lzdGVtLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IGFyZ3MubW9kZWwsXG4gICAgICBlZmZvcnQ6IGFyZ3MuZWZmb3J0LFxuICAgICAgcHJvamVjdF9uYW1lOiBhcmdzLnByb2plY3ROYW1lLFxuICAgICAgaGlzdG9yeTogZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UoYXJncy5oaXN0b3J5KSxcbiAgICAgIHRvb2xzOiBhcmdzLnRvb2xzPy5sZW5ndGggPyBhcmdzLnRvb2xzIDogdW5kZWZpbmVkLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogYXJncy5pbWFnZUdlbmVyYXRpb24sXG4gICAgfSk7XG4gIH1cblxuICAvLyBEQiDspIDruYQg7KSR7JeQIOyerOyLnOyekeydtCDsi5zsnpHrkJDri6TrqbQgcHJvdmlkZXIg7Iuk7ZaJ7Jy866GcIOuEmOyWtOqwgOyngCDslYrripTri6QuXG4gIC8vIOydtCDsmpTssq3snYAg7J6s7Iuc7J6RIHNuYXBzaG907JeQIOyXhuyXiOycvOuvgOuhnCDrsKnquIgg7KSA67mE7ZWcIHJ1buydhCDsp4HsoJEg66eI6rCQ7ZWc64ukLlxuICBpZiAoaXNSZXN0YXJ0UGVuZGluZygpKSB7XG4gICAgYXdhaXQgZmluaXNoVGVybWluYWxSdW4ocmVxdWVzdExvZ0lkLCBcImVycm9yXCIsIFwic2VydmVyIHJlc3RhcnRlZFwiKTtcbiAgICB0aHJvdyByZXN0YXJ0VW5hdmFpbGFibGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyTmF0aXZlUnVuKHJlcXVlc3RMb2dJZCk7XG4gIHJldHVybiB7IHJlcXVlc3RMb2dJZCwgc3RlcEluZGV4IH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZnRlclF1ZXJ5KFxuICByZXF1ZXN0TG9nSWQ6IG51bWJlcixcbiAgc3RlcEluZGV4OiBudW1iZXIsXG4gIGFyZ3M6IFF1ZXJ5SW5wdXQsXG4gIHJlc3VsdDogUXVlcnlPdXRwdXQsXG4pOiBQcm9taXNlPFJ1bkxpZmVjeWNsZVJlc3VsdD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybiB7fTtcblxuICByZXR1cm4gdHJhY2tOYXRpdmVGaW5hbGl6ZXIocmVxdWVzdExvZ0lkLCBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHByb3ZpZGVy6rCAIGNhbm9uaWNhbCBtb2RlbOydhCDrj4zroKTspJjrj4Qg7JqU7LKtIHJvdXRlIOyekOyytChbMW1dIOuTsSnripQg67O07KG07ZWc64ukLlxuICAgICAgY29uc3QgcmVxdWVzdGVkTW9kZWxOYW1lID0gd2l0aFByb3ZpZGVyUHJlZml4KFxuICAgICAgICBhcmdzLm1vZGVsLFxuICAgICAgICBhcmdzLm1vZGVsID8/IHJlc3VsdC5yZXF1ZXN0ZWRNb2RlbCA/PyByZXN1bHQubW9kZWwsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VydmVkTW9kZWxOYW1lID0gd2l0aFByb3ZpZGVyUHJlZml4KGFyZ3MubW9kZWwsIHJlc3VsdC5tb2RlbCk7XG5cbiAgICAgIC8vIGdlbmVyYXRlIHN0ZXAg6riw66GdXG4gICAgICBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYXBwZW5kU3RlcChyZXF1ZXN0TG9nSWQsIHtcbiAgICAgICAgc3RlcF9pbmRleDogc3RlcEluZGV4LFxuICAgICAgICB0eXBlOiBcImdlbmVyYXRlXCIsXG4gICAgICAgIG1vZGVsX25hbWU6IHNlcnZlZE1vZGVsTmFtZSxcbiAgICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IHJlcXVlc3RlZE1vZGVsTmFtZSxcbiAgICAgICAgZmFsbGJhY2tfY291bnQ6IHJlc3VsdC5tb2RlbEZhbGxiYWNrcz8ubGVuZ3RoID8/IDAsXG4gICAgICAgIGlucHV0X3Rva2VuczogcmVzdWx0LnVzYWdlLmlucHV0X3Rva2VucyxcbiAgICAgICAgb3V0cHV0X3Rva2VuczogcmVzdWx0LnVzYWdlLm91dHB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25fNW1faW5wdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9jcmVhdGlvbl8xaF9pbnB1dF90b2tlbnMsXG4gICAgICAgIGNvc3RfdXNkOiBNYXRoLnJvdW5kKHJlc3VsdC5jb3N0VXNkICogMV8wMDBfMDAwKSxcbiAgICAgICAgY29zdF9zb3VyY2U6IHJlc3VsdC5jb3N0U291cmNlLFxuICAgICAgICBkdXJhdGlvbl9tczogcmVzdWx0LmR1cmF0aW9uTXMsXG4gICAgICAgIHR0ZnRfbXM6IHJlc3VsdC50dGZ0TXMsXG4gICAgICAgIGZpbmlzaF9yZWFzb246IHJlc3VsdC5maW5pc2hSZWFzb24sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaW1hZ2VQYXJ0cyA9IGdldEltYWdlUGFydHMocmVzdWx0KTtcbiAgICAgIGNvbnN0IGltYWdlQ29zdE1pY3JvVXNkID0gZXN0aW1hdGVJbWFnZUdlbmVyYXRpb25Db3N0TWljcm9Vc2QoXG4gICAgICAgIHJlc3VsdCxcbiAgICAgICAgYXJncy5pbWFnZUdlbmVyYXRpb25PcHRpb25zLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBidWlsZEltYWdlR2VuZXJhdGlvblRvb2xTdGVwcyhhcmdzLCBpbWFnZVBhcnRzLCBzdGVwSW5kZXgpKSB7XG4gICAgICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5hcHBlbmRTdGVwKHJlcXVlc3RMb2dJZCwgc3RlcCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHQuZmluaXNoUmVhc29uID09PSBcInRvb2wtY2FsbHNcIikge1xuICAgICAgICAvLyB0b29sLWNhbGwgc3RlcOydhCDsponsi5wg6riw66Gd7ZWY6rOgLCDri6TsnYwgZm9sbG93LXVw7J20IOqwmeydgCByb3fsl5Ag6rKw6rO866W8IOyxhOyatOuLpC5cbiAgICAgICAgY29uc3QgdG9vbENhbGxzID0gcmVzdWx0LmNvbnRlbnQuZmlsdGVyKChjKSA9PiBjLnR5cGUgPT09IFwidG9vbC1jYWxsXCIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvb2xDYWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHRjID0gdG9vbENhbGxzW2ldITtcbiAgICAgICAgICBpZiAodGMudHlwZSAhPT0gXCJ0b29sLWNhbGxcIikgY29udGludWU7XG4gICAgICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFwcGVuZFN0ZXAocmVxdWVzdExvZ0lkLCB7XG4gICAgICAgICAgICBzdGVwX2luZGV4OiBzdGVwSW5kZXgsXG4gICAgICAgICAgICB0eXBlOiBcInRvb2xfY2FsbFwiLFxuICAgICAgICAgICAgdG9vbF9jYWxsX2luZGV4OiBpbWFnZVBhcnRzLmxlbmd0aCArIGksXG4gICAgICAgICAgICB0b29sX2NhbGxfaWQ6IHRjLnRvb2xDYWxsSWQsXG4gICAgICAgICAgICB0b29sX25hbWU6IHRjLnRvb2xOYW1lLFxuICAgICAgICAgICAgdG9vbF9hcmdzOiB0Yy5pbnB1dCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHJ1bkNvbnRleHQ6IHsgcmVxdWVzdExvZ0lkIH0gfTtcbiAgICAgIH1cblxuICAgICAgLy8gZmluaXNoUmVhc29uID09PSBcInN0b3BcIiDihpIgcnVuIOyiheujjCAo7KCE7LK0IHN0ZXAgdXNhZ2Ug7ZWp7IKwKVxuICAgICAgY29uc3QgYWdnID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFnZ3JlZ2F0ZVN0ZXBVc2FnZShyZXF1ZXN0TG9nSWQpO1xuICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmZpbmlzaFJ1bihyZXF1ZXN0TG9nSWQsIHtcbiAgICAgICAgc3RhdHVzOiBcInN1Y2NlZWRlZFwiLFxuICAgICAgICByZXNwb25zZTogZm9ybWF0UmVzcG9uc2VGb3JMb2cocmVzdWx0KSxcbiAgICAgICAgdG9rZW5fbmFtZTogcmVzdWx0LnRva2VuTmFtZSxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiBhZ2cuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2cub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IGFnZy5jYWNoZV9yZWFkX3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBhZ2cuY2FjaGVfY3JlYXRpb25fdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IGFnZy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogYWdnLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2VucyxcbiAgICAgICAgZHVyYXRpb25fbXM6IGFnZy5kdXJhdGlvbl9tcyxcbiAgICAgICAgLy8gbXVsdGktc3RlcCBydW4g67aA66qo7J2YIOuqqOuNuOydgCDstZzsooUgdHVybuydhCDshJzruZntlZwg66qo64247J2064ukLlxuICAgICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogcmVxdWVzdGVkTW9kZWxOYW1lLFxuICAgICAgICBtb2RlbF9uYW1lOiBzZXJ2ZWRNb2RlbE5hbWUsXG4gICAgICAgIGZhbGxiYWNrX2NvdW50OiBhZ2cuZmFsbGJhY2tfY291bnQsXG4gICAgICAgIGNvc3RfdXNkOiBhZ2cuY29zdF91c2QsXG4gICAgICAgIGNvc3Rfc291cmNlOiBhZ2cuY29zdF9zb3VyY2UsXG4gICAgICAgIGltYWdlX2Nvc3RfdXNkOiBpbWFnZUNvc3RNaWNyb1VzZCxcbiAgICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6XG4gICAgICAgICAgaW1hZ2VDb3N0TWljcm9Vc2QgIT09IG51bGxcbiAgICAgICAgICAgID8gaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZChhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIGhpc3Rvcnk6IGZpbHRlckhpc3RvcnlGb3JTdG9yYWdlKGFyZ3MuaGlzdG9yeSksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICByZWxlYXNlTmF0aXZlUnVuKHJlcXVlc3RMb2dJZCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaFJ1bldpdGhFcnJvcihcbiAgcmVxdWVzdExvZ0lkOiBudW1iZXIsXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICBhcmdzPzogUXVlcnlJbnB1dCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybjtcbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiZXJyb3JcIiwgZXJyb3JNZXNzYWdlLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5pc2hSdW5BYm9ydGVkKHJlcXVlc3RMb2dJZDogbnVtYmVyLCBhcmdzPzogUXVlcnlJbnB1dCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybjtcbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiYWJvcnRlZFwiLCBcImNsaWVudCBkaXNjb25uZWN0ZWRcIiwgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJlbGVhc2VOYXRpdmVSdW4ocmVxdWVzdExvZ0lkKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKiog7ZiE7J6sIOydtCDtlITroZzshLjsiqTqsIAgcHJvdmlkZXLrpbwg7Iuk7ZaJIOykkeyduCBuYXRpdmUgcnVu66eMIOyerOyLnOyekSDsmKTrpZjroZwg66eI6rCQ7ZWc64ukLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaEFjdGl2ZU5hdGl2ZVJ1bnNGb3JSZXN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXF1ZXN0TG9nSWRzID0gWy4uLmFjdGl2ZU5hdGl2ZVJ1blJlZnMua2V5cygpXTtcbiAgZm9yIChjb25zdCByZXF1ZXN0TG9nSWQgb2YgcmVxdWVzdExvZ0lkcykge1xuICAgIGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmFkZChyZXF1ZXN0TG9nSWQpO1xuICAgIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICByZXF1ZXN0TG9nSWRzLm1hcChhc3luYyAocmVxdWVzdExvZ0lkKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzLmdldChyZXF1ZXN0TG9nSWQpID8/IFtdKTtcbiAgICAgIGF3YWl0IGZpbmlzaFRlcm1pbmFsUnVuKHJlcXVlc3RMb2dJZCwgXCJlcnJvclwiLCBcInNlcnZlciByZXN0YXJ0ZWRcIik7XG4gICAgfSksXG4gICk7XG59XG5cbi8qKiDtlITroZzshLjsiqQg7KCE7JetIHJlZ2lzdHJ566W8IOqyqeumrO2VtOyVvCDtlZjripQg64uo7JyEIO2FjOyKpO2KuCDsoITsmqkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXROYXRpdmVSdW5SZWdpc3RyeUZvclRlc3RzKCk6IHZvaWQge1xuICBhY3RpdmVOYXRpdmVSdW5SZWZzLmNsZWFyKCk7XG4gIGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmNsZWFyKCk7XG4gIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuY2xlYXIoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluaXNoVGVybWluYWxSdW4oXG4gIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICBzdGF0dXM6IFwiZXJyb3JcIiB8IFwiYWJvcnRlZFwiLFxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyxcbiAgYXJncz86IFF1ZXJ5SW5wdXQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBsZXQgYWdncmVnYXRlOiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIFJlcXVlc3RMb2dNb2RlbC5hZ2dyZWdhdGVTdGVwVXNhZ2U+PiB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgYWdncmVnYXRlID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFnZ3JlZ2F0ZVN0ZXBVc2FnZShyZXF1ZXN0TG9nSWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgYWdncmVnYXRlU3RlcFVzYWdlIGZhaWxlZCB3aGlsZSBmaW5pc2hpbmcgJHtzdGF0dXN9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5maW5pc2hSdW4ocmVxdWVzdExvZ0lkLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICBoaXN0b3J5OiBhcmdzID8gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UoYXJncy5oaXN0b3J5KSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihhZ2dyZWdhdGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBpbnB1dF90b2tlbnM6IGFnZ3JlZ2F0ZS5pbnB1dF90b2tlbnMsXG4gICAgICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2dyZWdhdGUub3V0cHV0X3Rva2VucyxcbiAgICAgICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBhZ2dyZWdhdGUuY2FjaGVfcmVhZF90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnMsXG4gICAgICAgICAgICBkdXJhdGlvbl9tczogYWdncmVnYXRlLmR1cmF0aW9uX21zLFxuICAgICAgICAgICAgZmFsbGJhY2tfY291bnQ6IGFnZ3JlZ2F0ZS5mYWxsYmFja19jb3VudCxcbiAgICAgICAgICAgIGNvc3RfdXNkOiBhZ2dyZWdhdGUuY29zdF91c2QsXG4gICAgICAgICAgICBjb3N0X3NvdXJjZTogYWdncmVnYXRlLmNvc3Rfc291cmNlLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoYGZpbmlzaFRlcm1pbmFsUnVuKCR7c3RhdHVzfSkgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFudXBTdGFsZVJ1bnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChzdGFsZUNsZWFudXBJbkZsaWdodCkge1xuICAgIGF3YWl0IHN0YWxlQ2xlYW51cEluRmxpZ2h0O1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGlmIChub3cgLSBsYXN0U3RhbGVDbGVhbnVwU3RhcnRlZEF0IDwgU1RBTEVfQ0xFQU5VUF9JTlRFUlZBTF9NUykgcmV0dXJuO1xuICBsYXN0U3RhbGVDbGVhbnVwU3RhcnRlZEF0ID0gbm93O1xuXG4gIGNvbnN0IGNsZWFudXAgPSBwZXJmb3JtU3RhbGVSdW5DbGVhbnVwKCk7XG4gIHN0YWxlQ2xlYW51cEluRmxpZ2h0ID0gY2xlYW51cDtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjbGVhbnVwO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChzdGFsZUNsZWFudXBJbkZsaWdodCA9PT0gY2xlYW51cCkgc3RhbGVDbGVhbnVwSW5GbGlnaHQgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVN0YWxlUnVuQ2xlYW51cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBcInRvb2wtY2FsbCBydW46IG5vIGZvbGxvdy11cCB3aXRoaW4gMzAgbWludXRlc1wiO1xuICAgIGNvbnN0IHN0YWxlSWRzID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmV4cGlyZVN0YWxlVG9vbFdhaXRpbmdSdW5zKFxuICAgICAgU1RBTEVfUlVOX1RIUkVTSE9MRF9NUyxcbiAgICAgIGVycm9yTWVzc2FnZSxcbiAgICApO1xuICAgIGNvbnN0IGNsZWFuZWRDb3VudCA9IHN0YWxlSWRzLmxlbmd0aDtcbiAgICBpZiAoY2xlYW5lZENvdW50ID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYGNsZWFuZWQgdXAgJHtjbGVhbmVkQ291bnR9IHN0YWxlIHJ1bm5pbmcgcmVxdWVzdCBsb2dzYCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBzdGFsZSBjbGVhbnVwIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWlCQSxNQUFNLFNBQVMsVUFBVSxDQUFDLFNBQVMsZUFBZSxDQUFDO0FBQ25ELE1BQU0seUJBQXlCLE9BQVU7QUFDekMsTUFBTSw0QkFBNEIsS0FBSztBQUN2QyxJQUFJO0FBQ0osSUFBSSw0QkFBNEI7QUFDaEMsTUFBTSxzQ0FBc0IsSUFBSSxJQUFvQjtBQUNwRCxNQUFNLDBDQUEwQixJQUFJLElBQVk7QUFDaEQsTUFBTSx5Q0FBeUIsSUFBSSxJQUFnQztBQUVuRSxTQUFTLHFCQUFrRDtDQUN6RCxPQUFPLElBQUksNEJBQTRCLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0FBRUEsU0FBUyxrQkFBa0IsY0FBNEI7Q0FDckQsb0JBQW9CLElBQUksZUFBZSxvQkFBb0IsSUFBSSxZQUFZLEtBQUssS0FBSyxDQUFDO0FBQ3hGO0FBRUEsU0FBUyxpQkFBaUIsY0FBNEI7Q0FDcEQsTUFBTSxPQUFPLG9CQUFvQixJQUFJLFlBQVk7Q0FDakQsSUFBSSxTQUFTLFVBQWEsUUFBUSxHQUFHLG9CQUFvQixPQUFPLFlBQVk7TUFDdkUsb0JBQW9CLElBQUksY0FBYyxPQUFPLENBQUM7QUFDckQ7QUFFQSxTQUFT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
278
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcnVuLWxpZmVjeWNsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvcWdyaWQtcnVuLWxpZmVjeWNsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi8uLi9pMThuL3NkLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgaXNSZXN0YXJ0UGVuZGluZyB9IGZyb20gXCIuLi8uLi91dGlscy9zZXJ2ZXItcmVzdGFydFwiO1xuaW1wb3J0IHsgUmVxdWVzdExvZ01vZGVsIH0gZnJvbSBcIi4uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsXCI7XG5pbXBvcnQge1xuICBlc3RpbWF0ZUltYWdlR2VuZXJhdGlvbkNvc3RNaWNyb1VzZCxcbiAgaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZCxcbn0gZnJvbSBcIi4vcWdyaWQtaW1hZ2UtZ2VuZXJhdGlvblwiO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMsXG4gIGZvcm1hdFJlc3BvbnNlRm9yTG9nLFxuICBnZXRJbWFnZVBhcnRzLFxufSBmcm9tIFwiLi9xZ3JpZC1yZXNwb25zZS1mb3JtYXRcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRSdW5Db250ZXh0LCB0eXBlIFF1ZXJ5SW5wdXQsIHR5cGUgUXVlcnlPdXRwdXQgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJydW4tbGlmZWN5Y2xlXCJdKTtcbmNvbnN0IFNUQUxFX1JVTl9USFJFU0hPTERfTVMgPSAzMCAqIDYwICogMTAwMDtcbmNvbnN0IFNUQUxFX0NMRUFOVVBfSU5URVJWQUxfTVMgPSA2MCAqIDEwMDA7XG5sZXQgc3RhbGVDbGVhbnVwSW5GbGlnaHQ6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG5sZXQgbGFzdFN0YWxlQ2xlYW51cFN0YXJ0ZWRBdCA9IDA7XG5jb25zdCBhY3RpdmVOYXRpdmVSdW5SZWZzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbmNvbnN0IGludGVycnVwdGVkTmF0aXZlUnVuSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5jb25zdCBhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzID0gbmV3IE1hcDxudW1iZXIsIFNldDxQcm9taXNlPHZvaWQ+Pj4oKTtcblxuZnVuY3Rpb24gcmVzdGFydFVuYXZhaWxhYmxlKCk6IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiB7XG4gIHJldHVybiBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwicWdyaWQucmVzdGFydFBlbmRpbmdcIikoKSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTmF0aXZlUnVuKHJlcXVlc3RMb2dJZDogbnVtYmVyKTogdm9pZCB7XG4gIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuc2V0KHJlcXVlc3RMb2dJZCwgKGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gMCkgKyAxKTtcbn1cblxuZnVuY3Rpb24gcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQ6IG51bWJlcik6IHZvaWQge1xuICBjb25zdCByZWZzID0gYWN0aXZlTmF0aXZlUnVuUmVmcy5nZXQocmVxdWVzdExvZ0lkKTtcbiAgaWYgKHJlZnMgPT09IHVuZGVmaW5lZCB8fCByZWZzIDw9IDEpIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIGVsc2UgYWN0aXZlTmF0aXZlUnVuUmVmcy5zZXQocmVxdWVzdExvZ0lkLCByZWZzIC0gMSk7XG59XG5cbmZ1bmN0aW9uIHRyYWNrTmF0aXZlRmluYWxpemVyPFQ+KHJlcXVlc3RMb2dJZDogbnVtYmVyLCBmaW5hbGl6ZTogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvcGVyYXRpb24gPSBmaW5hbGl6ZSgpO1xuICBjb25zdCBzZXR0bGVkID0gb3BlcmF0aW9uLnRoZW4oXG4gICAgKCkgPT4gdW5kZWZpbmVkLFxuICAgICgpID0+IHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgZmluYWxpemVycyA9IGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gbmV3IFNldDxQcm9taXNlPHZvaWQ+PigpO1xuICBmaW5hbGl6ZXJzLmFkZChzZXR0bGVkKTtcbiAgYWN0aXZlTmF0aXZlRmluYWxpemVycy5zZXQocmVxdWVzdExvZ0lkLCBmaW5hbGl6ZXJzKTtcbiAgdm9pZCBzZXR0bGVkLnRoZW4oKCkgPT4ge1xuICAgIGZpbmFsaXplcnMuZGVsZXRlKHNldHRsZWQpO1xuICAgIGlmIChmaW5hbGl6ZXJzLnNpemUgPT09IDApIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH0pO1xuICByZXR1cm4gb3BlcmF0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmF0aXZlUnVuQWRtaXNzaW9uKCk6IHZvaWQge1xuICBpZiAoaXNSZXN0YXJ0UGVuZGluZygpKSB0aHJvdyByZXN0YXJ0VW5hdmFpbGFibGUoKTtcbn1cblxuZnVuY3Rpb24gd2l0aFByb3ZpZGVyUHJlZml4KFxuICByb3V0ZU1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIW1vZGVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAobW9kZWwuaW5jbHVkZXMoXCIvXCIpKSByZXR1cm4gbW9kZWw7XG4gIGNvbnN0IHNsYXNoID0gcm91dGVNb2RlbD8uaW5kZXhPZihcIi9cIikgPz8gLTE7XG4gIGNvbnN0IHByb3ZpZGVyID0gc2xhc2ggPiAwID8gcm91dGVNb2RlbD8uc2xpY2UoMCwgc2xhc2gpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcHJvdmlkZXIgPyBgJHtwcm92aWRlcn0vJHttb2RlbH1gIDogbW9kZWw7XG59XG5cbi8qKlxuICogaGlzdG9yeeuKlCDsm5Drs7gg6re464yA66GcIOyggOyepe2VmOq4sOuztOuLpOuKlCwgcnVuIOu2hOyEneyXkCDtlYTsmpTtlZwgdXNlci9hc3Npc3RhbnQg7KCV67O066eMIO2VhO2EsOunge2VtOyEnCDsoIDsnqVcbiAqL1xuZnVuY3Rpb24gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UocmF3SGlzdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gIGlmICghcmF3SGlzdG9yeSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IEpTT04ucGFyc2UocmF3SGlzdG9yeSkgYXMgdW5rbm93bltdO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0gfHwgdHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIChyZWNvcmQucm9sZSA9PT0gXCJ1c2VyXCIgfHwgcmVjb3JkLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPiAwID8gZmlsdGVyZWQgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQYXJzZWFibGVKc29uKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEpTT04ucGFyc2UodGV4dCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBSdW5MaWZlY3ljbGVSZXN1bHQgPSB7XG4gIHJ1bkNvbnRleHQ/OiBRZ3JpZFJ1bkNvbnRleHQ7XG59O1xuXG4vKipcbiAqIGxvZ2dlci1lbmFibGVkIHF1ZXJ5L3N0cmVhbSDsnZHri7Ug7KCE7ZuE7JeQIO2YuOy2nC5cbiAqXG4gKiAxKSBiZWZvcmVRdWVyeTogcnVuIOyDneyEsS/qs4Tsho0gKyB0b29sIHJlc3VsdCDsmYTro4wgKyBzdGFsZSB0b29sLXdhaXQgY2xlYW51cFxuICogMikgYWZ0ZXJRdWVyeTogZ2VuZXJhdGUgc3RlcCArIHRvb2wtY2FsbCBzdGVwICsgZmluaXNoL2tlZXAtb3BlblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmVmb3JlUXVlcnkoYXJnczogUXVlcnlJbnB1dCk6IFByb21pc2U8e1xuICByZXF1ZXN0TG9nSWQ6IG51bWJlcjtcbiAgc3RlcEluZGV4OiBudW1iZXI7XG59PiB7XG4gIGFzc2VydE5hdGl2ZVJ1bkFkbWlzc2lvbigpO1xuXG4gIGxldCByZXF1ZXN0TG9nSWQ6IG51bWJlcjtcbiAgbGV0IHN0ZXBJbmRleCA9IDA7XG5cbiAgLy8gcmVxdWVzdExvZ0lkIOqwgCDsnojsnYQg65WM66eMIOq4sOyhtCBydW4g7Jew7J6lLiB0aHJlYWRDb29yZCDrp4wg7J6I64qUIGNvbnYg64qUIOyDiCBydW4g7Jy866GcIOyLnOyekS5cbiAgLy8gY29udGludWF0aW9uIOydgCBjcmVhdGVSdW4g7J2EIOqxtOuEiOubsOuvgOuhnCBydW4g7J2YIHRvb2xzIOuKlCDssqsg7Iqk7YWdIOyepeywqeu2hOycvOuhnCDqs6DsoJXrkJzri6Qg4oCUXG4gIC8vIEFJIFNESyBwcmVwYXJlU3RlcC9hY3RpdmVUb29scyDroZwg7Iqk7YWd66eI64ukIO2ItOyFi+ydtCDrsJTrgIzslrTrj4Qg66Gc6re47JeQ64qUIOuwmOyYgeuQmOyngCDslYrripTri6QuXG4gIGlmIChhcmdzLnJ1bkNvbnRleHQ/LnJlcXVlc3RMb2dJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVxdWVzdExvZ0lkID0gYXJncy5ydW5Db250ZXh0LnJlcXVlc3RMb2dJZDtcbiAgICAvLyBjbGVhbnVw6rO8IOqwmeydgCBEQiBhZHZpc29yeSBsb2Nr7J2EIOyeoeqzoCB0b29sIOqysOqzvCDrsJjsmIEgKyDri6TsnYwgc3RlcCDsmIjslb3snYQg7ZWcXG4gICAgLy8gdHJhbnNhY3Rpb27sl5DshJwg7LKY66as7ZWc64ukLiDsl6zrn6wgcWdyaWQg7ZSE66Gc7IS47IqkIOyCrOydtOyXkOyEnOuPhCBzdGFsZSBleHBpcnnqsIBcbiAgICAvLyDrj4TssKkg7KSR7J24IGZvbGxvdy11cOydhCBlcnJvcuuhnCDrja7slrTsk7Dsp4Ag66q77ZWc64ukLlxuICAgIHN0ZXBJbmRleCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jb250aW51ZVRvb2xSdW4ocmVxdWVzdExvZ0lkLCBhcmdzLnRvb2xSZXN1bHRzID8/IFtdKTtcbiAgICBhd2FpdCBjbGVhbnVwU3RhbGVSdW5zKCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY2xlYW51cFN0YWxlUnVucygpO1xuICAgIHJlcXVlc3RMb2dJZCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jcmVhdGVSdW4oe1xuICAgICAgdXNlcl9wcm9tcHQ6IGFyZ3MucHJvbXB0LFxuICAgICAgc3lzdGVtX3Byb21wdDogYXJncy5zeXN0ZW0sXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogYXJncy5tb2RlbCxcbiAgICAgIGVmZm9ydDogYXJncy5lZmZvcnQsXG4gICAgICBwcm9qZWN0X25hbWU6IGFyZ3MucHJvamVjdE5hbWUsXG4gICAgICBoaXN0b3J5OiBmaWx0ZXJIaXN0b3J5Rm9yU3RvcmFnZShhcmdzLmhpc3RvcnkpLFxuICAgICAgdG9vbHM6IGFyZ3MudG9vbHM/Lmxlbmd0aCA/IGFyZ3MudG9vbHMgOiB1bmRlZmluZWQsXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBhcmdzLmltYWdlR2VuZXJhdGlvbixcbiAgICAgIGpzb25fc2NoZW1hOiBhcmdzLmpzb25TY2hlbWEgPz8gbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIERCIOykgOu5hCDspJHsl5Ag7J6s7Iuc7J6R7J20IOyLnOyekeuQkOuLpOuptCBwcm92aWRlciDsi6TtlonsnLzroZwg64SY7Ja06rCA7KeAIOyViuuKlOuLpC5cbiAgLy8g7J20IOyalOyyreydgCDsnqzsi5zsnpEgc25hcHNob3Tsl5Ag7JeG7JeI7Jy866+A66GcIOuwqeq4iCDspIDruYTtlZwgcnVu7J2EIOyngeygkSDrp4jqsJDtlZzri6QuXG4gIGlmIChpc1Jlc3RhcnRQZW5kaW5nKCkpIHtcbiAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiZXJyb3JcIiwgXCJzZXJ2ZXIgcmVzdGFydGVkXCIpO1xuICAgIHRocm93IHJlc3RhcnRVbmF2YWlsYWJsZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJOYXRpdmVSdW4ocmVxdWVzdExvZ0lkKTtcbiAgcmV0dXJuIHsgcmVxdWVzdExvZ0lkLCBzdGVwSW5kZXggfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFmdGVyUXVlcnkoXG4gIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICBzdGVwSW5kZXg6IG51bWJlcixcbiAgYXJnczogUXVlcnlJbnB1dCxcbiAgcmVzdWx0OiBRdWVyeU91dHB1dCxcbik6IFByb21pc2U8UnVuTGlmZWN5Y2xlUmVzdWx0PiB7XG4gIGlmIChpbnRlcnJ1cHRlZE5hdGl2ZVJ1bklkcy5oYXMocmVxdWVzdExvZ0lkKSkgcmV0dXJuIHt9O1xuXG4gIHJldHVybiB0cmFja05hdGl2ZUZpbmFsaXplcihyZXF1ZXN0TG9nSWQsIGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gcHJvdmlkZXLqsIAgY2Fub25pY2FsIG1vZGVs7J2EIOuPjOugpOykmOuPhCDsmpTssq0gcm91dGUg7J6Q7LK0KFsxbV0g65OxKeuKlCDrs7TsobTtlZzri6QuXG4gICAgICBjb25zdCByZXF1ZXN0ZWRNb2RlbE5hbWUgPSB3aXRoUHJvdmlkZXJQcmVmaXgoXG4gICAgICAgIGFyZ3MubW9kZWwsXG4gICAgICAgIGFyZ3MubW9kZWwgPz8gcmVzdWx0LnJlcXVlc3RlZE1vZGVsID8/IHJlc3VsdC5tb2RlbCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzZXJ2ZWRNb2RlbE5hbWUgPSB3aXRoUHJvdmlkZXJQcmVmaXgoYXJncy5tb2RlbCwgcmVzdWx0Lm1vZGVsKTtcblxuICAgICAgLy8gZ2VuZXJhdGUgc3RlcCDquLDroZ1cbiAgICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5hcHBlbmRTdGVwKHJlcXVlc3RMb2dJZCwge1xuICAgICAgICBzdGVwX2luZGV4OiBzdGVwSW5kZXgsXG4gICAgICAgIHR5cGU6IFwiZ2VuZXJhdGVcIixcbiAgICAgICAgbW9kZWxfbmFtZTogc2VydmVkTW9kZWxOYW1lLFxuICAgICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogcmVxdWVzdGVkTW9kZWxOYW1lLFxuICAgICAgICBmYWxsYmFja19jb3VudDogcmVzdWx0Lm1vZGVsRmFsbGJhY2tzPy5sZW5ndGggPz8gMCxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiByZXN1bHQudXNhZ2UuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiByZXN1bHQudXNhZ2Uub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2VucyxcbiAgICAgICAgY29zdF91c2Q6IE1hdGgucm91bmQocmVzdWx0LmNvc3RVc2QgKiAxXzAwMF8wMDApLFxuICAgICAgICBjb3N0X3NvdXJjZTogcmVzdWx0LmNvc3RTb3VyY2UsXG4gICAgICAgIGR1cmF0aW9uX21zOiByZXN1bHQuZHVyYXRpb25NcyxcbiAgICAgICAgdHRmdF9tczogcmVzdWx0LnR0ZnRNcyxcbiAgICAgICAgZmluaXNoX3JlYXNvbjogcmVzdWx0LmZpbmlzaFJlYXNvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbWFnZVBhcnRzID0gZ2V0SW1hZ2VQYXJ0cyhyZXN1bHQpO1xuICAgICAgY29uc3QgaW1hZ2VDb3N0TWljcm9Vc2QgPSBlc3RpbWF0ZUltYWdlR2VuZXJhdGlvbkNvc3RNaWNyb1VzZChcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBzdGVwIG9mIGJ1aWxkSW1hZ2VHZW5lcmF0aW9uVG9vbFN0ZXBzKGFyZ3MsIGltYWdlUGFydHMsIHN0ZXBJbmRleCkpIHtcbiAgICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFwcGVuZFN0ZXAocmVxdWVzdExvZ0lkLCBzdGVwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5maW5pc2hSZWFzb24gPT09IFwidG9vbC1jYWxsc1wiKSB7XG4gICAgICAgIC8vIHRvb2wtY2FsbCBzdGVw7J2EIOymieyLnCDquLDroZ3tlZjqs6AsIOuLpOydjCBmb2xsb3ctdXDsnbQg6rCZ7J2AIHJvd+yXkCDqsrDqs7zrpbwg7LGE7Jq064ukLlxuICAgICAgICBjb25zdCB0b29sQ2FsbHMgPSByZXN1bHQuY29udGVudC5maWx0ZXIoKGMpID0+IGMudHlwZSA9PT0gXCJ0b29sLWNhbGxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9vbENhbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdGMgPSB0b29sQ2FsbHNbaV0hO1xuICAgICAgICAgIGlmICh0Yy50eXBlICE9PSBcInRvb2wtY2FsbFwiKSBjb250aW51ZTtcbiAgICAgICAgICBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYXBwZW5kU3RlcChyZXF1ZXN0TG9nSWQsIHtcbiAgICAgICAgICAgIHN0ZXBfaW5kZXg6IHN0ZXBJbmRleCxcbiAgICAgICAgICAgIHR5cGU6IFwidG9vbF9jYWxsXCIsXG4gICAgICAgICAgICB0b29sX2NhbGxfaW5kZXg6IGltYWdlUGFydHMubGVuZ3RoICsgaSxcbiAgICAgICAgICAgIHRvb2xfY2FsbF9pZDogdGMudG9vbENhbGxJZCxcbiAgICAgICAgICAgIHRvb2xfbmFtZTogdGMudG9vbE5hbWUsXG4gICAgICAgICAgICB0b29sX2FyZ3M6IHRjLmlucHV0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgcnVuQ29udGV4dDogeyByZXF1ZXN0TG9nSWQgfSB9O1xuICAgICAgfVxuXG4gICAgICAvLyBmaW5pc2hSZWFzb24gPT09IFwic3RvcFwiIOKGkiBydW4g7KKF66OMICjsoITssrQgc3RlcCB1c2FnZSDtlansgrApXG4gICAgICBjb25zdCBhZ2cgPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYWdncmVnYXRlU3RlcFVzYWdlKHJlcXVlc3RMb2dJZCk7XG4gICAgICBjb25zdCByZXNwb25zZVRleHQgPSBmb3JtYXRSZXNwb25zZUZvckxvZyhyZXN1bHQpO1xuICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmZpbmlzaFJ1bihyZXF1ZXN0TG9nSWQsIHtcbiAgICAgICAgc3RhdHVzOiBcInN1Y2NlZWRlZFwiLFxuICAgICAgICByZXNwb25zZTogcmVzcG9uc2VUZXh0LFxuICAgICAgICAvLyBzdHJ1Y3R1cmVkIOyalOyyreunjCDtjJDsoJXtlZzri6QuIGRldGkg67Cw7LmY7J2YIGJyb2tlbiBKU09OIOulmOulvCDrqqnroZ3sl5DshJwg67CU66GcXG4gICAgICAgIC8vIOq1rOuzhO2VmOq4sCDsnITtlZwg6riw66Gd7J2066mwLCDruYRzdHJ1Y3R1cmVkIOyalOyyreydgCBudWxsIOuhnCDrgqjripTri6QuXG4gICAgICAgIHJlc3BvbnNlX2pzb25fb2s6IGFyZ3MuanNvblNjaGVtYSA/IGlzUGFyc2VhYmxlSnNvbihyZXNwb25zZVRleHQpIDogbnVsbCxcbiAgICAgICAgdG9rZW5fbmFtZTogcmVzdWx0LnRva2VuTmFtZSxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiBhZ2cuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2cub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IGFnZy5jYWNoZV9yZWFkX3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBhZ2cuY2FjaGVfY3JlYXRpb25fdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IGFnZy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogYWdnLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2VucyxcbiAgICAgICAgZHVyYXRpb25fbXM6IGFnZy5kdXJhdGlvbl9tcyxcbiAgICAgICAgLy8gbXVsdGktc3RlcCBydW4g67aA66qo7J2YIOuqqOuNuOydgCDstZzsooUgdHVybuydhCDshJzruZntlZwg66qo64247J2064ukLlxuICAgICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogcmVxdWVzdGVkTW9kZWxOYW1lLFxuICAgICAgICBtb2RlbF9uYW1lOiBzZXJ2ZWRNb2RlbE5hbWUsXG4gICAgICAgIGZhbGxiYWNrX2NvdW50OiBhZ2cuZmFsbGJhY2tfY291bnQsXG4gICAgICAgIGNvc3RfdXNkOiBhZ2cuY29zdF91c2QsXG4gICAgICAgIGNvc3Rfc291cmNlOiBhZ2cuY29zdF9zb3VyY2UsXG4gICAgICAgIGltYWdlX2Nvc3RfdXNkOiBpbWFnZUNvc3RNaWNyb1VzZCxcbiAgICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6XG4gICAgICAgICAgaW1hZ2VDb3N0TWljcm9Vc2QgIT09IG51bGxcbiAgICAgICAgICAgID8gaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZChhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIGhpc3Rvcnk6IGZpbHRlckhpc3RvcnlGb3JTdG9yYWdlKGFyZ3MuaGlzdG9yeSksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICByZWxlYXNlTmF0aXZlUnVuKHJlcXVlc3RMb2dJZCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaFJ1bldpdGhFcnJvcihcbiAgcmVxdWVzdExvZ0lkOiBudW1iZXIsXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICBhcmdzPzogUXVlcnlJbnB1dCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybjtcbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiZXJyb3JcIiwgZXJyb3JNZXNzYWdlLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5pc2hSdW5BYm9ydGVkKHJlcXVlc3RMb2dJZDogbnVtYmVyLCBhcmdzPzogUXVlcnlJbnB1dCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybjtcbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiYWJvcnRlZFwiLCBcImNsaWVudCBkaXNjb25uZWN0ZWRcIiwgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJlbGVhc2VOYXRpdmVSdW4ocmVxdWVzdExvZ0lkKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKiog7ZiE7J6sIOydtCDtlITroZzshLjsiqTqsIAgcHJvdmlkZXLrpbwg7Iuk7ZaJIOykkeyduCBuYXRpdmUgcnVu66eMIOyerOyLnOyekSDsmKTrpZjroZwg66eI6rCQ7ZWc64ukLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaEFjdGl2ZU5hdGl2ZVJ1bnNGb3JSZXN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXF1ZXN0TG9nSWRzID0gWy4uLmFjdGl2ZU5hdGl2ZVJ1blJlZnMua2V5cygpXTtcbiAgZm9yIChjb25zdCByZXF1ZXN0TG9nSWQgb2YgcmVxdWVzdExvZ0lkcykge1xuICAgIGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmFkZChyZXF1ZXN0TG9nSWQpO1xuICAgIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICByZXF1ZXN0TG9nSWRzLm1hcChhc3luYyAocmVxdWVzdExvZ0lkKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzLmdldChyZXF1ZXN0TG9nSWQpID8/IFtdKTtcbiAgICAgIGF3YWl0IGZpbmlzaFRlcm1pbmFsUnVuKHJlcXVlc3RMb2dJZCwgXCJlcnJvclwiLCBcInNlcnZlciByZXN0YXJ0ZWRcIik7XG4gICAgfSksXG4gICk7XG59XG5cbi8qKiDtlITroZzshLjsiqQg7KCE7JetIHJlZ2lzdHJ566W8IOqyqeumrO2VtOyVvCDtlZjripQg64uo7JyEIO2FjOyKpO2KuCDsoITsmqkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXROYXRpdmVSdW5SZWdpc3RyeUZvclRlc3RzKCk6IHZvaWQge1xuICBhY3RpdmVOYXRpdmVSdW5SZWZzLmNsZWFyKCk7XG4gIGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmNsZWFyKCk7XG4gIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuY2xlYXIoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluaXNoVGVybWluYWxSdW4oXG4gIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICBzdGF0dXM6IFwiZXJyb3JcIiB8IFwiYWJvcnRlZFwiLFxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyxcbiAgYXJncz86IFF1ZXJ5SW5wdXQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBsZXQgYWdncmVnYXRlOiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIFJlcXVlc3RMb2dNb2RlbC5hZ2dyZWdhdGVTdGVwVXNhZ2U+PiB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgYWdncmVnYXRlID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFnZ3JlZ2F0ZVN0ZXBVc2FnZShyZXF1ZXN0TG9nSWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgYWdncmVnYXRlU3RlcFVzYWdlIGZhaWxlZCB3aGlsZSBmaW5pc2hpbmcgJHtzdGF0dXN9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5maW5pc2hSdW4ocmVxdWVzdExvZ0lkLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICBoaXN0b3J5OiBhcmdzID8gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UoYXJncy5oaXN0b3J5KSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihhZ2dyZWdhdGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBpbnB1dF90b2tlbnM6IGFnZ3JlZ2F0ZS5pbnB1dF90b2tlbnMsXG4gICAgICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2dyZWdhdGUub3V0cHV0X3Rva2VucyxcbiAgICAgICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBhZ2dyZWdhdGUuY2FjaGVfcmVhZF90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnMsXG4gICAgICAgICAgICBkdXJhdGlvbl9tczogYWdncmVnYXRlLmR1cmF0aW9uX21zLFxuICAgICAgICAgICAgZmFsbGJhY2tfY291bnQ6IGFnZ3JlZ2F0ZS5mYWxsYmFja19jb3VudCxcbiAgICAgICAgICAgIGNvc3RfdXNkOiBhZ2dyZWdhdGUuY29zdF91c2QsXG4gICAgICAgICAgICBjb3N0X3NvdXJjZTogYWdncmVnYXRlLmNvc3Rfc291cmNlLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoYGZpbmlzaFRlcm1pbmFsUnVuKCR7c3RhdHVzfSkgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFudXBTdGFsZVJ1bnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChzdGFsZUNsZWFudXBJbkZsaWdodCkge1xuICAgIGF3YWl0IHN0YWxlQ2xlYW51cEluRmxpZ2h0O1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGlmIChub3cgLSBsYXN0U3RhbGVDbGVhbnVwU3RhcnRlZEF0IDwgU1RBTEVfQ0xFQU5VUF9JTlRFUlZBTF9NUykgcmV0dXJuO1xuICBsYXN0U3RhbGVDbGVhbnVwU3RhcnRlZEF0ID0gbm93O1xuXG4gIGNvbnN0IGNsZWFudXAgPSBwZXJmb3JtU3RhbGVSdW5DbGVhbnVwKCk7XG4gIHN0YWxlQ2xlYW51cEluRmxpZ2h0ID0gY2xlYW51cDtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjbGVhbnVwO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChzdGFsZUNsZWFudXBJbkZsaWdodCA9PT0gY2xlYW51cCkgc3RhbGVDbGVhbnVwSW5GbGlnaHQgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVN0YWxlUnVuQ2xlYW51cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBcInRvb2wtY2FsbCBydW46IG5vIGZvbGxvdy11cCB3aXRoaW4gMzAgbWludXRlc1wiO1xuICAgIGNvbnN0IHN0YWxlSWRzID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmV4cGlyZVN0YWxlVG9vbFdhaXRpbmdSdW5zKFxuICAgICAgU1RBTEVfUlVOX1RIUkVTSE9MRF9NUyxcbiAgICAgIGVycm9yTWVzc2FnZSxcbiAgICApO1xuICAgIGNvbnN0IGNsZWFuZWRDb3VudCA9IHN0YWxlSWRzLmxlbmd0aDtcbiAgICBpZiAoY2xlYW5lZENvdW50ID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYGNsZWFuZWQgdXAgJHtjbGVhbmVkQ291bnR9IHN0YWxlIHJ1bm5pbmcgcmVxdWVzdCBsb2dzYCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBzdGFsZSBjbGVhbnVwIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWlCQSxN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