@xeonr/upload-pool-sdk 1.0.0

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 (402) hide show
  1. package/README.md +83 -0
  2. package/dist/errors.d.ts +14 -0
  3. package/dist/errors.d.ts.map +1 -0
  4. package/dist/errors.js +15 -0
  5. package/dist/errors.js.map +1 -0
  6. package/dist/index.d.ts +27 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +27 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/job-context.d.ts +18 -0
  11. package/dist/job-context.d.ts.map +1 -0
  12. package/dist/job-context.js +176 -0
  13. package/dist/job-context.js.map +1 -0
  14. package/dist/pool.d.ts +16 -0
  15. package/dist/pool.d.ts.map +1 -0
  16. package/dist/pool.js +111 -0
  17. package/dist/pool.js.map +1 -0
  18. package/dist/protocol/buf/validate/expression_pb.d.ts +128 -0
  19. package/dist/protocol/buf/validate/expression_pb.d.ts.map +1 -0
  20. package/dist/protocol/buf/validate/expression_pb.js +34 -0
  21. package/dist/protocol/buf/validate/expression_pb.js.map +1 -0
  22. package/dist/protocol/buf/validate/priv/private_pb.d.ts +54 -0
  23. package/dist/protocol/buf/validate/priv/private_pb.d.ts.map +1 -0
  24. package/dist/protocol/buf/validate/priv/private_pb.js +36 -0
  25. package/dist/protocol/buf/validate/priv/private_pb.js.map +1 -0
  26. package/dist/protocol/buf/validate/validate_pb.d.ts +3685 -0
  27. package/dist/protocol/buf/validate/validate_pb.d.ts.map +1 -0
  28. package/dist/protocol/buf/validate/validate_pb.js +223 -0
  29. package/dist/protocol/buf/validate/validate_pb.js.map +1 -0
  30. package/dist/protocol/gnostic/discovery/v1/discovery_pb.d.ts +816 -0
  31. package/dist/protocol/gnostic/discovery/v1/discovery_pb.d.ts.map +1 -0
  32. package/dist/protocol/gnostic/discovery/v1/discovery_pb.js +160 -0
  33. package/dist/protocol/gnostic/discovery/v1/discovery_pb.js.map +1 -0
  34. package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.d.ts +2229 -0
  35. package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.d.ts.map +1 -0
  36. package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.js +320 -0
  37. package/dist/protocol/gnostic/openapi/v2/openapiv2_pb.js.map +1 -0
  38. package/dist/protocol/gnostic/openapi/v3/annotations_pb.d.ts +24 -0
  39. package/dist/protocol/gnostic/openapi/v3/annotations_pb.d.ts.map +1 -0
  40. package/dist/protocol/gnostic/openapi/v3/annotations_pb.js +37 -0
  41. package/dist/protocol/gnostic/openapi/v3/annotations_pb.js.map +1 -0
  42. package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.d.ts +2245 -0
  43. package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.d.ts.map +1 -0
  44. package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.js +410 -0
  45. package/dist/protocol/gnostic/openapi/v3/openapiv3_pb.js.map +1 -0
  46. package/dist/protocol/google/api/annotations_pb.d.ts +14 -0
  47. package/dist/protocol/google/api/annotations_pb.d.ts.map +1 -0
  48. package/dist/protocol/google/api/annotations_pb.js +27 -0
  49. package/dist/protocol/google/api/annotations_pb.js.map +1 -0
  50. package/dist/protocol/google/api/client_pb.d.ts +1034 -0
  51. package/dist/protocol/google/api/client_pb.d.ts.map +1 -0
  52. package/dist/protocol/google/api/client_pb.js +338 -0
  53. package/dist/protocol/google/api/client_pb.js.map +1 -0
  54. package/dist/protocol/google/api/expr/v1alpha1/checked_pb.d.ts +672 -0
  55. package/dist/protocol/google/api/expr/v1alpha1/checked_pb.d.ts.map +1 -0
  56. package/dist/protocol/google/api/expr/v1alpha1/checked_pb.js +176 -0
  57. package/dist/protocol/google/api/expr/v1alpha1/checked_pb.js.map +1 -0
  58. package/dist/protocol/google/api/expr/v1alpha1/eval_pb.d.ts +185 -0
  59. package/dist/protocol/google/api/expr/v1alpha1/eval_pb.d.ts.map +1 -0
  60. package/dist/protocol/google/api/expr/v1alpha1/eval_pb.js +46 -0
  61. package/dist/protocol/google/api/expr/v1alpha1/eval_pb.js.map +1 -0
  62. package/dist/protocol/google/api/expr/v1alpha1/explain_pb.d.ts +68 -0
  63. package/dist/protocol/google/api/expr/v1alpha1/explain_pb.d.ts.map +1 -0
  64. package/dist/protocol/google/api/expr/v1alpha1/explain_pb.js +32 -0
  65. package/dist/protocol/google/api/expr/v1alpha1/explain_pb.js.map +1 -0
  66. package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.d.ts +796 -0
  67. package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.d.ts.map +1 -0
  68. package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.js +128 -0
  69. package/dist/protocol/google/api/expr/v1alpha1/syntax_pb.js.map +1 -0
  70. package/dist/protocol/google/api/expr/v1alpha1/value_pb.d.ts +224 -0
  71. package/dist/protocol/google/api/expr/v1alpha1/value_pb.d.ts.map +1 -0
  72. package/dist/protocol/google/api/expr/v1alpha1/value_pb.js +45 -0
  73. package/dist/protocol/google/api/expr/v1alpha1/value_pb.js.map +1 -0
  74. package/dist/protocol/google/api/expr/v1beta1/decl_pb.d.ts +151 -0
  75. package/dist/protocol/google/api/expr/v1beta1/decl_pb.d.ts.map +1 -0
  76. package/dist/protocol/google/api/expr/v1beta1/decl_pb.js +41 -0
  77. package/dist/protocol/google/api/expr/v1beta1/decl_pb.js.map +1 -0
  78. package/dist/protocol/google/api/expr/v1beta1/eval_pb.d.ts +203 -0
  79. package/dist/protocol/google/api/expr/v1beta1/eval_pb.d.ts.map +1 -0
  80. package/dist/protocol/google/api/expr/v1beta1/eval_pb.js +52 -0
  81. package/dist/protocol/google/api/expr/v1beta1/eval_pb.js.map +1 -0
  82. package/dist/protocol/google/api/expr/v1beta1/expr_pb.d.ts +504 -0
  83. package/dist/protocol/google/api/expr/v1beta1/expr_pb.d.ts.map +1 -0
  84. package/dist/protocol/google/api/expr/v1beta1/expr_pb.js +72 -0
  85. package/dist/protocol/google/api/expr/v1beta1/expr_pb.js.map +1 -0
  86. package/dist/protocol/google/api/expr/v1beta1/source_pb.d.ts +86 -0
  87. package/dist/protocol/google/api/expr/v1beta1/source_pb.d.ts.map +1 -0
  88. package/dist/protocol/google/api/expr/v1beta1/source_pb.js +30 -0
  89. package/dist/protocol/google/api/expr/v1beta1/source_pb.js.map +1 -0
  90. package/dist/protocol/google/api/expr/v1beta1/value_pb.d.ts +224 -0
  91. package/dist/protocol/google/api/expr/v1beta1/value_pb.d.ts.map +1 -0
  92. package/dist/protocol/google/api/expr/v1beta1/value_pb.js +46 -0
  93. package/dist/protocol/google/api/expr/v1beta1/value_pb.js.map +1 -0
  94. package/dist/protocol/google/api/field_behavior_pb.d.ts +122 -0
  95. package/dist/protocol/google/api/field_behavior_pb.d.ts.map +1 -0
  96. package/dist/protocol/google/api/field_behavior_pb.js +136 -0
  97. package/dist/protocol/google/api/field_behavior_pb.js.map +1 -0
  98. package/dist/protocol/google/api/field_info_pb.d.ts +140 -0
  99. package/dist/protocol/google/api/field_info_pb.d.ts.map +1 -0
  100. package/dist/protocol/google/api/field_info_pb.js +108 -0
  101. package/dist/protocol/google/api/field_info_pb.js.map +1 -0
  102. package/dist/protocol/google/api/http_pb.d.ts +441 -0
  103. package/dist/protocol/google/api/http_pb.d.ts.map +1 -0
  104. package/dist/protocol/google/api/http_pb.js +34 -0
  105. package/dist/protocol/google/api/http_pb.js.map +1 -0
  106. package/dist/protocol/google/api/httpbody_pb.d.ts +81 -0
  107. package/dist/protocol/google/api/httpbody_pb.d.ts.map +1 -0
  108. package/dist/protocol/google/api/httpbody_pb.js +25 -0
  109. package/dist/protocol/google/api/httpbody_pb.js.map +1 -0
  110. package/dist/protocol/google/api/launch_stage_pb.d.ts +87 -0
  111. package/dist/protocol/google/api/launch_stage_pb.d.ts.map +1 -0
  112. package/dist/protocol/google/api/launch_stage_pb.js +101 -0
  113. package/dist/protocol/google/api/launch_stage_pb.js.map +1 -0
  114. package/dist/protocol/google/api/resource_pb.d.ts +304 -0
  115. package/dist/protocol/google/api/resource_pb.d.ts.map +1 -0
  116. package/dist/protocol/google/api/resource_pb.js +116 -0
  117. package/dist/protocol/google/api/resource_pb.js.map +1 -0
  118. package/dist/protocol/google/api/routing_pb.d.ts +476 -0
  119. package/dist/protocol/google/api/routing_pb.d.ts.map +1 -0
  120. package/dist/protocol/google/api/routing_pb.js +36 -0
  121. package/dist/protocol/google/api/routing_pb.js.map +1 -0
  122. package/dist/protocol/google/api/visibility_pb.d.ts +128 -0
  123. package/dist/protocol/google/api/visibility_pb.d.ts.map +1 -0
  124. package/dist/protocol/google/api/visibility_pb.js +66 -0
  125. package/dist/protocol/google/api/visibility_pb.js.map +1 -0
  126. package/dist/protocol/google/bytestream/bytestream_pb.d.ts +278 -0
  127. package/dist/protocol/google/bytestream/bytestream_pb.d.ts.map +1 -0
  128. package/dist/protocol/google/bytestream/bytestream_pb.js +77 -0
  129. package/dist/protocol/google/bytestream/bytestream_pb.js.map +1 -0
  130. package/dist/protocol/google/geo/type/viewport_pb.d.ts +66 -0
  131. package/dist/protocol/google/geo/type/viewport_pb.d.ts.map +1 -0
  132. package/dist/protocol/google/geo/type/viewport_pb.js +26 -0
  133. package/dist/protocol/google/geo/type/viewport_pb.js.map +1 -0
  134. package/dist/protocol/google/iam/v1/iam_policy_pb.d.ts +193 -0
  135. package/dist/protocol/google/iam/v1/iam_policy_pb.d.ts.map +1 -0
  136. package/dist/protocol/google/iam/v1/iam_policy_pb.js +76 -0
  137. package/dist/protocol/google/iam/v1/iam_policy_pb.js.map +1 -0
  138. package/dist/protocol/google/iam/v1/options_pb.d.ts +42 -0
  139. package/dist/protocol/google/iam/v1/options_pb.d.ts.map +1 -0
  140. package/dist/protocol/google/iam/v1/options_pb.js +24 -0
  141. package/dist/protocol/google/iam/v1/options_pb.js.map +1 -0
  142. package/dist/protocol/google/iam/v1/policy_pb.d.ts +571 -0
  143. package/dist/protocol/google/iam/v1/policy_pb.d.ts.map +1 -0
  144. package/dist/protocol/google/iam/v1/policy_pb.js +152 -0
  145. package/dist/protocol/google/iam/v1/policy_pb.js.map +1 -0
  146. package/dist/protocol/google/longrunning/operations_pb.d.ts +398 -0
  147. package/dist/protocol/google/longrunning/operations_pb.d.ts.map +1 -0
  148. package/dist/protocol/google/longrunning/operations_pb.js +89 -0
  149. package/dist/protocol/google/longrunning/operations_pb.js.map +1 -0
  150. package/dist/protocol/google/rpc/code_pb.d.ts +228 -0
  151. package/dist/protocol/google/rpc/code_pb.d.ts.map +1 -0
  152. package/dist/protocol/google/rpc/code_pb.js +242 -0
  153. package/dist/protocol/google/rpc/code_pb.js.map +1 -0
  154. package/dist/protocol/google/rpc/context/attribute_context_pb.d.ts +560 -0
  155. package/dist/protocol/google/rpc/context/attribute_context_pb.d.ts.map +1 -0
  156. package/dist/protocol/google/rpc/context/attribute_context_pb.js +55 -0
  157. package/dist/protocol/google/rpc/context/attribute_context_pb.js.map +1 -0
  158. package/dist/protocol/google/rpc/error_details_pb.d.ts +581 -0
  159. package/dist/protocol/google/rpc/error_details_pb.d.ts.map +1 -0
  160. package/dist/protocol/google/rpc/error_details_pb.js +90 -0
  161. package/dist/protocol/google/rpc/error_details_pb.js.map +1 -0
  162. package/dist/protocol/google/rpc/status_pb.d.ts +49 -0
  163. package/dist/protocol/google/rpc/status_pb.d.ts.map +1 -0
  164. package/dist/protocol/google/rpc/status_pb.js +25 -0
  165. package/dist/protocol/google/rpc/status_pb.js.map +1 -0
  166. package/dist/protocol/google/type/calendar_period_pb.d.ts +71 -0
  167. package/dist/protocol/google/type/calendar_period_pb.d.ts.map +1 -0
  168. package/dist/protocol/google/type/calendar_period_pb.js +85 -0
  169. package/dist/protocol/google/type/calendar_period_pb.js.map +1 -0
  170. package/dist/protocol/google/type/color_pb.d.ts +176 -0
  171. package/dist/protocol/google/type/color_pb.d.ts.map +1 -0
  172. package/dist/protocol/google/type/color_pb.js +25 -0
  173. package/dist/protocol/google/type/color_pb.js.map +1 -0
  174. package/dist/protocol/google/type/date_pb.d.ts +56 -0
  175. package/dist/protocol/google/type/date_pb.d.ts.map +1 -0
  176. package/dist/protocol/google/type/date_pb.js +24 -0
  177. package/dist/protocol/google/type/date_pb.js.map +1 -0
  178. package/dist/protocol/google/type/datetime_pb.d.ts +148 -0
  179. package/dist/protocol/google/type/datetime_pb.d.ts.map +1 -0
  180. package/dist/protocol/google/type/datetime_pb.js +30 -0
  181. package/dist/protocol/google/type/datetime_pb.js.map +1 -0
  182. package/dist/protocol/google/type/dayofweek_pb.d.ts +65 -0
  183. package/dist/protocol/google/type/dayofweek_pb.d.ts.map +1 -0
  184. package/dist/protocol/google/type/dayofweek_pb.js +79 -0
  185. package/dist/protocol/google/type/dayofweek_pb.js.map +1 -0
  186. package/dist/protocol/google/type/decimal_pb.d.ts +89 -0
  187. package/dist/protocol/google/type/decimal_pb.d.ts.map +1 -0
  188. package/dist/protocol/google/type/decimal_pb.js +24 -0
  189. package/dist/protocol/google/type/decimal_pb.js.map +1 -0
  190. package/dist/protocol/google/type/expr_pb.d.ts +78 -0
  191. package/dist/protocol/google/type/expr_pb.d.ts.map +1 -0
  192. package/dist/protocol/google/type/expr_pb.js +24 -0
  193. package/dist/protocol/google/type/expr_pb.js.map +1 -0
  194. package/dist/protocol/google/type/fraction_pb.d.ts +32 -0
  195. package/dist/protocol/google/type/fraction_pb.d.ts.map +1 -0
  196. package/dist/protocol/google/type/fraction_pb.js +24 -0
  197. package/dist/protocol/google/type/fraction_pb.js.map +1 -0
  198. package/dist/protocol/google/type/interval_pb.d.ts +43 -0
  199. package/dist/protocol/google/type/interval_pb.d.ts.map +1 -0
  200. package/dist/protocol/google/type/interval_pb.js +25 -0
  201. package/dist/protocol/google/type/interval_pb.js.map +1 -0
  202. package/dist/protocol/google/type/latlng_pb.d.ts +35 -0
  203. package/dist/protocol/google/type/latlng_pb.d.ts.map +1 -0
  204. package/dist/protocol/google/type/latlng_pb.js +24 -0
  205. package/dist/protocol/google/type/latlng_pb.js.map +1 -0
  206. package/dist/protocol/google/type/localized_text_pb.d.ts +35 -0
  207. package/dist/protocol/google/type/localized_text_pb.d.ts.map +1 -0
  208. package/dist/protocol/google/type/localized_text_pb.js +24 -0
  209. package/dist/protocol/google/type/localized_text_pb.js.map +1 -0
  210. package/dist/protocol/google/type/money_pb.d.ts +43 -0
  211. package/dist/protocol/google/type/money_pb.d.ts.map +1 -0
  212. package/dist/protocol/google/type/money_pb.js +24 -0
  213. package/dist/protocol/google/type/money_pb.js.map +1 -0
  214. package/dist/protocol/google/type/month_pb.d.ts +95 -0
  215. package/dist/protocol/google/type/month_pb.d.ts.map +1 -0
  216. package/dist/protocol/google/type/month_pb.js +109 -0
  217. package/dist/protocol/google/type/month_pb.js.map +1 -0
  218. package/dist/protocol/google/type/phone_number_pb.d.ts +145 -0
  219. package/dist/protocol/google/type/phone_number_pb.d.ts.map +1 -0
  220. package/dist/protocol/google/type/phone_number_pb.js +29 -0
  221. package/dist/protocol/google/type/phone_number_pb.js.map +1 -0
  222. package/dist/protocol/google/type/postal_address_pb.d.ts +160 -0
  223. package/dist/protocol/google/type/postal_address_pb.d.ts.map +1 -0
  224. package/dist/protocol/google/type/postal_address_pb.js +24 -0
  225. package/dist/protocol/google/type/postal_address_pb.js.map +1 -0
  226. package/dist/protocol/google/type/quaternion_pb.d.ts +99 -0
  227. package/dist/protocol/google/type/quaternion_pb.d.ts.map +1 -0
  228. package/dist/protocol/google/type/quaternion_pb.js +24 -0
  229. package/dist/protocol/google/type/quaternion_pb.js.map +1 -0
  230. package/dist/protocol/google/type/timeofday_pb.d.ts +52 -0
  231. package/dist/protocol/google/type/timeofday_pb.d.ts.map +1 -0
  232. package/dist/protocol/google/type/timeofday_pb.js +24 -0
  233. package/dist/protocol/google/type/timeofday_pb.js.map +1 -0
  234. package/dist/protocol/uplim/api/v1/account_pb.d.ts +144 -0
  235. package/dist/protocol/uplim/api/v1/account_pb.d.ts.map +1 -0
  236. package/dist/protocol/uplim/api/v1/account_pb.js +100 -0
  237. package/dist/protocol/uplim/api/v1/account_pb.js.map +1 -0
  238. package/dist/protocol/uplim/api/v1/auth_pb.d.ts +231 -0
  239. package/dist/protocol/uplim/api/v1/auth_pb.d.ts.map +1 -0
  240. package/dist/protocol/uplim/api/v1/auth_pb.js +65 -0
  241. package/dist/protocol/uplim/api/v1/auth_pb.js.map +1 -0
  242. package/dist/protocol/uplim/api/v1/buckets_pb.d.ts +1920 -0
  243. package/dist/protocol/uplim/api/v1/buckets_pb.d.ts.map +1 -0
  244. package/dist/protocol/uplim/api/v1/buckets_pb.js +471 -0
  245. package/dist/protocol/uplim/api/v1/buckets_pb.js.map +1 -0
  246. package/dist/protocol/uplim/api/v1/content_type_matcher_pb.d.ts +398 -0
  247. package/dist/protocol/uplim/api/v1/content_type_matcher_pb.d.ts.map +1 -0
  248. package/dist/protocol/uplim/api/v1/content_type_matcher_pb.js +79 -0
  249. package/dist/protocol/uplim/api/v1/content_type_matcher_pb.js.map +1 -0
  250. package/dist/protocol/uplim/api/v1/events_pb.d.ts +767 -0
  251. package/dist/protocol/uplim/api/v1/events_pb.d.ts.map +1 -0
  252. package/dist/protocol/uplim/api/v1/events_pb.js +242 -0
  253. package/dist/protocol/uplim/api/v1/events_pb.js.map +1 -0
  254. package/dist/protocol/uplim/api/v1/integration_admin_pb.d.ts +1059 -0
  255. package/dist/protocol/uplim/api/v1/integration_admin_pb.d.ts.map +1 -0
  256. package/dist/protocol/uplim/api/v1/integration_admin_pb.js +209 -0
  257. package/dist/protocol/uplim/api/v1/integration_admin_pb.js.map +1 -0
  258. package/dist/protocol/uplim/api/v1/integration_install_pb.d.ts +313 -0
  259. package/dist/protocol/uplim/api/v1/integration_install_pb.d.ts.map +1 -0
  260. package/dist/protocol/uplim/api/v1/integration_install_pb.js +129 -0
  261. package/dist/protocol/uplim/api/v1/integration_install_pb.js.map +1 -0
  262. package/dist/protocol/uplim/api/v1/integration_types_pb.d.ts +767 -0
  263. package/dist/protocol/uplim/api/v1/integration_types_pb.d.ts.map +1 -0
  264. package/dist/protocol/uplim/api/v1/integration_types_pb.js +221 -0
  265. package/dist/protocol/uplim/api/v1/integration_types_pb.js.map +1 -0
  266. package/dist/protocol/uplim/api/v1/integrations_pb.d.ts +807 -0
  267. package/dist/protocol/uplim/api/v1/integrations_pb.d.ts.map +1 -0
  268. package/dist/protocol/uplim/api/v1/integrations_pb.js +169 -0
  269. package/dist/protocol/uplim/api/v1/integrations_pb.js.map +1 -0
  270. package/dist/protocol/uplim/api/v1/internal_pb.d.ts +204 -0
  271. package/dist/protocol/uplim/api/v1/internal_pb.d.ts.map +1 -0
  272. package/dist/protocol/uplim/api/v1/internal_pb.js +118 -0
  273. package/dist/protocol/uplim/api/v1/internal_pb.js.map +1 -0
  274. package/dist/protocol/uplim/api/v1/metadata_pb.d.ts +265 -0
  275. package/dist/protocol/uplim/api/v1/metadata_pb.d.ts.map +1 -0
  276. package/dist/protocol/uplim/api/v1/metadata_pb.js +50 -0
  277. package/dist/protocol/uplim/api/v1/metadata_pb.js.map +1 -0
  278. package/dist/protocol/uplim/api/v1/public-buckets_pb.d.ts +64 -0
  279. package/dist/protocol/uplim/api/v1/public-buckets_pb.d.ts.map +1 -0
  280. package/dist/protocol/uplim/api/v1/public-buckets_pb.js +28 -0
  281. package/dist/protocol/uplim/api/v1/public-buckets_pb.js.map +1 -0
  282. package/dist/protocol/uplim/api/v1/public-uploads_pb.d.ts +461 -0
  283. package/dist/protocol/uplim/api/v1/public-uploads_pb.d.ts.map +1 -0
  284. package/dist/protocol/uplim/api/v1/public-uploads_pb.js +139 -0
  285. package/dist/protocol/uplim/api/v1/public-uploads_pb.js.map +1 -0
  286. package/dist/protocol/uplim/api/v1/upload-aliases_pb.d.ts +396 -0
  287. package/dist/protocol/uplim/api/v1/upload-aliases_pb.d.ts.map +1 -0
  288. package/dist/protocol/uplim/api/v1/upload-aliases_pb.js +69 -0
  289. package/dist/protocol/uplim/api/v1/upload-aliases_pb.js.map +1 -0
  290. package/dist/protocol/uplim/api/v1/uploads_pb.d.ts +3736 -0
  291. package/dist/protocol/uplim/api/v1/uploads_pb.d.ts.map +1 -0
  292. package/dist/protocol/uplim/api/v1/uploads_pb.js +732 -0
  293. package/dist/protocol/uplim/api/v1/uploads_pb.js.map +1 -0
  294. package/dist/protocol/uplim/workflow/v1/activities_pb.d.ts +394 -0
  295. package/dist/protocol/uplim/workflow/v1/activities_pb.d.ts.map +1 -0
  296. package/dist/protocol/uplim/workflow/v1/activities_pb.js +122 -0
  297. package/dist/protocol/uplim/workflow/v1/activities_pb.js.map +1 -0
  298. package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.d.ts +486 -0
  299. package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.d.ts.map +1 -0
  300. package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.js +158 -0
  301. package/dist/protocol/uplim/workflow/v1/integration_queue_admin_pb.js.map +1 -0
  302. package/dist/protocol/uplim/workflow/v1/integration_queue_pb.d.ts +289 -0
  303. package/dist/protocol/uplim/workflow/v1/integration_queue_pb.d.ts.map +1 -0
  304. package/dist/protocol/uplim/workflow/v1/integration_queue_pb.js +66 -0
  305. package/dist/protocol/uplim/workflow/v1/integration_queue_pb.js.map +1 -0
  306. package/dist/protocol/uplim/workflow/v1/workflows_pb.d.ts +602 -0
  307. package/dist/protocol/uplim/workflow/v1/workflows_pb.d.ts.map +1 -0
  308. package/dist/protocol/uplim/workflow/v1/workflows_pb.js +194 -0
  309. package/dist/protocol/uplim/workflow/v1/workflows_pb.js.map +1 -0
  310. package/dist/rpc-clients.d.ts +9 -0
  311. package/dist/rpc-clients.d.ts.map +1 -0
  312. package/dist/rpc-clients.js +24 -0
  313. package/dist/rpc-clients.js.map +1 -0
  314. package/dist/sse-client.d.ts +20 -0
  315. package/dist/sse-client.d.ts.map +1 -0
  316. package/dist/sse-client.js +68 -0
  317. package/dist/sse-client.js.map +1 -0
  318. package/dist/types.d.ts +174 -0
  319. package/dist/types.d.ts.map +1 -0
  320. package/dist/types.js +17 -0
  321. package/dist/types.js.map +1 -0
  322. package/package.json +47 -0
  323. package/src/errors.ts +14 -0
  324. package/src/index.ts +41 -0
  325. package/src/job-context.ts +244 -0
  326. package/src/pool.ts +143 -0
  327. package/src/protocol/buf/validate/expression_pb.ts +163 -0
  328. package/src/protocol/buf/validate/priv/private_pb.ts +86 -0
  329. package/src/protocol/buf/validate/validate_pb.ts +3802 -0
  330. package/src/protocol/gnostic/discovery/v1/discovery_pb.ts +1020 -0
  331. package/src/protocol/gnostic/openapi/v2/openapiv2_pb.ts +2679 -0
  332. package/src/protocol/gnostic/openapi/v3/annotations_pb.ts +55 -0
  333. package/src/protocol/gnostic/openapi/v3/openapiv3_pb.ts +2660 -0
  334. package/src/protocol/google/api/annotations_pb.ts +39 -0
  335. package/src/protocol/google/api/client_pb.ts +1183 -0
  336. package/src/protocol/google/api/expr/v1alpha1/checked_pb.ts +751 -0
  337. package/src/protocol/google/api/expr/v1alpha1/eval_pb.ts +222 -0
  338. package/src/protocol/google/api/expr/v1alpha1/explain_pb.ts +98 -0
  339. package/src/protocol/google/api/expr/v1alpha1/syntax_pb.ts +882 -0
  340. package/src/protocol/google/api/expr/v1alpha1/value_pb.ts +260 -0
  341. package/src/protocol/google/api/expr/v1beta1/decl_pb.ts +191 -0
  342. package/src/protocol/google/api/expr/v1beta1/eval_pb.ts +244 -0
  343. package/src/protocol/google/api/expr/v1beta1/expr_pb.ts +565 -0
  344. package/src/protocol/google/api/expr/v1beta1/source_pb.ts +117 -0
  345. package/src/protocol/google/api/expr/v1beta1/value_pb.ts +261 -0
  346. package/src/protocol/google/api/field_behavior_pb.ts +157 -0
  347. package/src/protocol/google/api/field_info_pb.ts +178 -0
  348. package/src/protocol/google/api/http_pb.ts +474 -0
  349. package/src/protocol/google/api/httpbody_pb.ts +108 -0
  350. package/src/protocol/google/api/launch_stage_pb.ts +118 -0
  351. package/src/protocol/google/api/resource_pb.ts +354 -0
  352. package/src/protocol/google/api/routing_pb.ts +507 -0
  353. package/src/protocol/google/api/visibility_pb.ts +169 -0
  354. package/src/protocol/google/bytestream/bytestream_pb.ts +325 -0
  355. package/src/protocol/google/geo/type/viewport_pb.ts +93 -0
  356. package/src/protocol/google/iam/v1/iam_policy_pb.ts +239 -0
  357. package/src/protocol/google/iam/v1/options_pb.ts +66 -0
  358. package/src/protocol/google/iam/v1/policy_pb.ts +644 -0
  359. package/src/protocol/google/longrunning/operations_pb.ts +460 -0
  360. package/src/protocol/google/rpc/code_pb.ts +268 -0
  361. package/src/protocol/google/rpc/context/attribute_context_pb.ts +638 -0
  362. package/src/protocol/google/rpc/error_details_pb.ts +662 -0
  363. package/src/protocol/google/rpc/status_pb.ts +76 -0
  364. package/src/protocol/google/type/calendar_period_pb.ts +102 -0
  365. package/src/protocol/google/type/color_pb.ts +204 -0
  366. package/src/protocol/google/type/date_pb.ts +82 -0
  367. package/src/protocol/google/type/datetime_pb.ts +181 -0
  368. package/src/protocol/google/type/dayofweek_pb.ts +96 -0
  369. package/src/protocol/google/type/decimal_pb.ts +113 -0
  370. package/src/protocol/google/type/expr_pb.ts +105 -0
  371. package/src/protocol/google/type/fraction_pb.ts +57 -0
  372. package/src/protocol/google/type/interval_pb.ts +69 -0
  373. package/src/protocol/google/type/latlng_pb.ts +60 -0
  374. package/src/protocol/google/type/localized_text_pb.ts +60 -0
  375. package/src/protocol/google/type/money_pb.ts +69 -0
  376. package/src/protocol/google/type/month_pb.ts +131 -0
  377. package/src/protocol/google/type/phone_number_pb.ts +171 -0
  378. package/src/protocol/google/type/postal_address_pb.ts +194 -0
  379. package/src/protocol/google/type/quaternion_pb.ts +126 -0
  380. package/src/protocol/google/type/timeofday_pb.ts +79 -0
  381. package/src/protocol/uplim/api/v1/account_pb.ts +178 -0
  382. package/src/protocol/uplim/api/v1/auth_pb.ts +278 -0
  383. package/src/protocol/uplim/api/v1/buckets_pb.ts +2214 -0
  384. package/src/protocol/uplim/api/v1/content_type_matcher_pb.ts +448 -0
  385. package/src/protocol/uplim/api/v1/events_pb.ts +874 -0
  386. package/src/protocol/uplim/api/v1/integration_admin_pb.ts +1237 -0
  387. package/src/protocol/uplim/api/v1/integration_install_pb.ts +386 -0
  388. package/src/protocol/uplim/api/v1/integration_types_pb.ts +896 -0
  389. package/src/protocol/uplim/api/v1/integrations_pb.ts +944 -0
  390. package/src/protocol/uplim/api/v1/internal_pb.ts +234 -0
  391. package/src/protocol/uplim/api/v1/metadata_pb.ts +305 -0
  392. package/src/protocol/uplim/api/v1/public-buckets_pb.ts +83 -0
  393. package/src/protocol/uplim/api/v1/public-uploads_pb.ts +543 -0
  394. package/src/protocol/uplim/api/v1/upload-aliases_pb.ts +468 -0
  395. package/src/protocol/uplim/api/v1/uploads_pb.ts +4294 -0
  396. package/src/protocol/uplim/workflow/v1/activities_pb.ts +488 -0
  397. package/src/protocol/uplim/workflow/v1/integration_queue_admin_pb.ts +594 -0
  398. package/src/protocol/uplim/workflow/v1/integration_queue_pb.ts +353 -0
  399. package/src/protocol/uplim/workflow/v1/workflows_pb.ts +746 -0
  400. package/src/rpc-clients.ts +29 -0
  401. package/src/sse-client.ts +83 -0
  402. package/src/types.ts +169 -0
@@ -0,0 +1,3802 @@
1
+ // Copyright 2023 Buf Technologies, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ // @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=.js"
16
+ // @generated from file buf/validate/validate.proto (package buf.validate, syntax proto3)
17
+ /* eslint-disable */
18
+
19
+ import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
20
+ import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
21
+ import type { Constraint } from "./expression_pb.js";
22
+ import { file_buf_validate_expression } from "./expression_pb.js";
23
+ import { file_buf_validate_priv_private } from "./priv/private_pb.js";
24
+ import type { Duration, FieldOptions, MessageOptions, OneofOptions, Timestamp } from "@bufbuild/protobuf/wkt";
25
+ import { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
26
+ import type { Message } from "@bufbuild/protobuf";
27
+
28
+ /**
29
+ * Describes the file buf/validate/validate.proto.
30
+ */
31
+ export const file_buf_validate_validate: GenFile = /*@__PURE__*/
32
+ fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSJfChJNZXNzYWdlQ29uc3RyYWludHMSFQoIZGlzYWJsZWQYASABKAhIAIgBARIlCgNjZWwYAyADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludEILCglfZGlzYWJsZWQiNgoQT25lb2ZDb25zdHJhaW50cxIVCghyZXF1aXJlZBgBIAEoCEgAiAEBQgsKCV9yZXF1aXJlZCLTCAoQRmllbGRDb25zdHJhaW50cxIlCgNjZWwYFyADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludBIPCgdza2lwcGVkGBggASgIEhAKCHJlcXVpcmVkGBkgASgIEhgKDGlnbm9yZV9lbXB0eRgaIAEoCEICGAESJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMQoJdGltZXN0YW1wGBYgASgLMhwuYnVmLnZhbGlkYXRlLlRpbWVzdGFtcFJ1bGVzSABCBgoEdHlwZSL2FgoKRmxvYXRSdWxlcxJuCgVjb25zdBgBIAEoAkJawkhXClUKC2Zsb2F0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAKIAQESnwEKAmx0GAIgASgCQpABwkiMAQqJAQoIZmxvYXQubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASrwEKA2x0ZRgDIAEoAkKfAcJImwEKmAEKCWZsb2F0Lmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEu8HCgJndBgEIAEoAkLgB8JI3AcKjQEKCGZsb2F0Lmd0GoABIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKwwEKC2Zsb2F0Lmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKFWZsb2F0Lmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtMBCgxmbG9hdC5ndF9sdGUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrdAQoWZmxvYXQuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESuggKA2d0ZRgFIAEoAkKqCMJIpggKmwEKCWZsb2F0Lmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrSAQoMZmxvYXQuZ3RlX2x0GsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoWZmxvYXQuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4gEKDWZsb2F0Lmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCuwBChdmbG9hdC5ndGVfbHRlX2V4Y2x1c2l2ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ1CgJpbhgGIAMoAkJpwkhmCmQKCGZsb2F0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEl8KBmZpbml0ZRgIIAEoCEJPwkhMCkoKDGZsb2F0LmZpbml0ZRo6dGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJ0ILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuQggKBl9jb25zdCKHFwoLRG91YmxlUnVsZXMSbwoFY29uc3QYASABKAFCW8JIWApWCgxkb3VibGUuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAogBARKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygBQmrCSGcKZQoJZG91YmxlLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoAUJnwkhkCmIKDWRvdWJsZS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJgCgZmaW5pdGUYCCABKAhCUMJITQpLCg1kb3VibGUuZmluaXRlGjp0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0Ir4UCgpJbnQzMlJ1bGVzEm4KBWNvbnN0GAEgASgFQlrCSFcKVQoLaW50MzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAogBARKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ1CgJpbhgGIAMoBUJpwkhmCmQKCGludDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IswUCgpJbnQ2NFJ1bGVzEnAKBWNvbnN0GAEgASgDQlwwAcJIVwpVCgtpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCiAEBEowBCgJsdBgCIAEoA0J+MAHCSHkKdwoIaW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoA0KOATABwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKZBwoCZ3QYBCABKANCigcwAcJIhAcKegoIaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLlBwoDZ3RlGAUgASgDQtUHMAHCSM8HCogBCglpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrCAQoMaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsoBChZpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrSAQoNaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwraAQoXaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdwoCaW4YBiADKANCazABwkhmCmQKCGludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEngKBm5vdF9pbhgHIAMoA0JoMAHCSGMKYQoMaW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3QizhQKC1VJbnQzMlJ1bGVzEm8KBWNvbnN0GAEgASgNQlvCSFgKVgoMdWludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAKIAQESiwEKAmx0GAIgASgNQn3CSHoKeAoJdWludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKA1CjQfCSIkHCnsKCXVpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgNQtgHwkjUBwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdgoCaW4YBiADKA1CasJIZwplCgl1aW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0ItwUCgtVSW50NjRSdWxlcxJxCgVjb25zdBgBIAEoBEJdMAHCSFgKVgoMdWludDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAKIAQESjQEKAmx0GAIgASgEQn8wAcJIegp4Cgl1aW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoBEKPATABwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASngcKAmd0GAQgASgEQo8HMAHCSIkHCnsKCXVpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLqBwoDZ3RlGAUgASgEQtoHMAHCSNQHCokBCgp1aW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXVpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3VpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOdWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHVpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ4CgJpbhgGIAMoBEJsMAHCSGcKZQoJdWludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnkKBm5vdF9pbhgHIAMoBEJpMAHCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0Is4UCgtTSW50MzJSdWxlcxJvCgVjb25zdBgBIAEoEUJbwkhYClYKDHNpbnQzMi5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCiAEBEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygRQmrCSGcKZQoJc2ludDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoEUJnwkhkCmIKDXNpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJ0ILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuQggKBl9jb25zdCLcFAoLU0ludDY0UnVsZXMScQoFY29uc3QYASABKBJCXTABwkhYClYKDHNpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCiAEBEo0BCgJsdBgCIAEoEkJ/MAHCSHoKeAoJc2ludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBJCjwEwAcJIiQEKhgEKCnNpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEp4HCgJndBgEIAEoEkKPBzABwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6gcKA2d0ZRgFIAEoEkLaBzABwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeAoCaW4YBiADKBJCbDABwkhnCmUKCXNpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ5CgZub3RfaW4YByADKBJCaTABwkhkCmIKDXNpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJ0ILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuQggKBl9jb25zdCLeFAoMRml4ZWQzMlJ1bGVzEnAKBWNvbnN0GAEgASgHQlzCSFkKVwoNZml4ZWQzMi5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCiAEBEowBCgJsdBgCIAEoB0J+wkh7CnkKCmZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoB0KOAcJIigEKhwEKC2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAdCkgfCSI4HCnwKCmZpeGVkMzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAdC3QfCSNkHCooBCgtmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygHQmvCSGgKZgoKZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0Iu0UCgxGaXhlZDY0UnVsZXMScgoFY29uc3QYASABKAZCXjABwkhZClcKDWZpeGVkNjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAogBARKPAQoCbHQYAiABKAZCgAEwAcJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEqABCgNsdGUYAyABKAZCkAEwAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKjBwoCZ3QYBCABKAZClAcwAcJIjgcKfAoKZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkNjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7wcKA2d0ZRgFIAEoBkLfBzABwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ5CgJpbhgGIAMoBkJtMAHCSGgKZgoKZml4ZWQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ6CgZub3RfaW4YByADKAZCajABwkhlCmMKDmZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3Qi7hQKDVNGaXhlZDMyUnVsZXMScQoFY29uc3QYASABKA9CXcJIWgpYCg5zZml4ZWQzMi5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCiAEBEo0BCgJsdBgCIAEoD0J/wkh8CnoKC3NmaXhlZDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKA9CjwHCSIsBCogBCgxzZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoD0KXB8JIkwcKfQoLc2ZpeGVkMzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgPQuIHwkjeBwqLAQoMc2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEngKAmluGAYgAygPQmzCSGkKZwoLc2ZpeGVkMzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3Qi/RQKDVNGaXhlZDY0UnVsZXMScwoFY29uc3QYASABKBBCXzABwkhaClgKDnNmaXhlZDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAKIAQESkAEKAmx0GAIgASgQQoEBMAHCSHwKegoLc2ZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASoQEKA2x0ZRgDIAEoEEKRATABwkiLAQqIAQoMc2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKoBwoCZ3QYBCABKBBCmQcwAcJIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARL0BwoDZ3RlGAUgASgQQuQHMAHCSN4HCosBCgxzZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkNjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkNjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESegoCaW4YBiADKBBCbjABwkhpCmcKC3NmaXhlZDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnsKBm5vdF9pbhgHIAMoEEJrMAHCSGYKZAoPc2ZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3QihAEKCUJvb2xSdWxlcxJtCgVjb25zdBgBIAEoCEJZwkhWClQKCmJvb2wuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAIgBAUIICgZfY29uc3QisDEKC1N0cmluZ1J1bGVzEnEKBWNvbnN0GAEgASgJQl3CSFoKWAoMc3RyaW5nLmNvbnN0Gkh0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAYgBARKFAQoDbGVuGBMgASgEQnMwAcJIbgpsCgpzdHJpbmcubGVuGl51aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnSAKIAQESoAEKB21pbl9sZW4YAiABKARCiQEwAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJ0gDiAEBEp4BCgdtYXhfbGVuGAMgASgEQocBMAHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnSASIAQESogEKCWxlbl9ieXRlcxgUIAEoBEKJATABwkiDAQqAAQoQc3RyaW5nLmxlbl9ieXRlcxpsdWludChieXRlcyh0aGlzKS5zaXplKCkpICE9IHJ1bGVzLmxlbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5fYnl0ZXNdKSA6ICcnSAWIAQESqgEKCW1pbl9ieXRlcxgEIAEoBEKRATABwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJydIBogBARKpAQoJbWF4X2J5dGVzGAUgASgEQpABMAHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnSAeIAQESkgEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJydICIgBARKJAQoGcHJlZml4GAcgASgJQnTCSHEKbwoNc3RyaW5nLnByZWZpeBpeIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4IGAlc2AnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJ0gJiAEBEocBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJ0gKiAEBEpUBCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnSAuIAQESnQEKDG5vdF9jb250YWlucxgXIAEoCUKBAcJIfgp8ChNzdHJpbmcubm90X2NvbnRhaW5zGmV0aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAndmFsdWUgY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJ0gMiAEBEnYKAmluGAogAygJQmrCSGcKZQoJc3RyaW5nLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgLIAMoCUJnwkhkCmIKDXN0cmluZy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxK/AQoFZW1haWwYDCABKAhCrQHCSKkBClEKDHN0cmluZy5lbWFpbBIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGVtYWlsIGFkZHJlc3MaHHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKVAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoKdGhpcyAhPSAnJ0gAEsEBCghob3N0bmFtZRgNIAEoCEKsAcJIqAEKUgoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaH3RoaXMgPT0gJycgfHwgdGhpcy5pc0hvc3RuYW1lKCkKUgoVc3RyaW5nLmhvc3RuYW1lX2VtcHR5Ei12YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUaCnRoaXMgIT0gJydIABKtAQoCaXAYDiABKAhCngHCSJoBCkgKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaGXRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKTgoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoKdGhpcyAhPSAnJ0gAErgBCgRpcHY0GA8gASgIQqcBwkijAQpNCgtzdHJpbmcuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxoadGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNCkKUgoRc3RyaW5nLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaCnRoaXMgIT0gJydIABK4AQoEaXB2NhgQIAEoCEKnAcJIowEKTQoLc3RyaW5nLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGnRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDYpClIKEXN0cmluZy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGgp0aGlzICE9ICcnSAASowEKA3VyaRgRIAEoCEKTAcJIjwEKQwoKc3RyaW5nLnVyaRIZdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSRoadGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKSAoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoKdGhpcyAhPSAnJ0gAElQKB3VyaV9yZWYYEiABKAhCQcJIPgo8Cg5zdHJpbmcudXJpX3JlZhIZdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSRoPdGhpcy5pc1VyaVJlZigpSAAS6wEKB2FkZHJlc3MYFSABKAhC1wHCSNMBCm8KDnN0cmluZy5hZGRyZXNzEi12YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaLnRoaXMgPT0gJycgfHwgdGhpcy5pc0hvc3RuYW1lKCkgfHwgdGhpcy5pc0lwKCkKYAoUc3RyaW5nLmFkZHJlc3NfZW1wdHkSPHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxoKdGhpcyAhPSAnJ0gAEvoBCgR1dWlkGBYgASgIQukBwkjlAQqWAQoLc3RyaW5nLnV1aWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVVUlEGmt0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKQpKChFzdHJpbmcudXVpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVVSUQaCnRoaXMgIT0gJydIABLeAQoRaXBfd2l0aF9wcmVmaXhsZW4YGiABKAhCwAHCSLwBClwKGHN0cmluZy5pcF93aXRoX3ByZWZpeGxlbhIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBofdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQpcCh5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaCnRoaXMgIT0gJydIABKRAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCELxAcJI7QEKdQoac3RyaW5nLmlwdjRfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGiB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg0KQp0CiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaCnRoaXMgIT0gJydIABKRAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCELxAcJI7QEKdQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGiB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQp0CiBzdHJpbmcuaXB2Nl93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaCnRoaXMgIT0gJydIABLKAQoJaXBfcHJlZml4GB0gASgIQrQBwkiwAQpYChBzdHJpbmcuaXBfcHJlZml4Eh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GiN0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpUChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Ggp0aGlzICE9ICcnSAAS1wEKC2lwdjRfcHJlZml4GB4gASgIQr8Bwki7AQpfChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBomdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKWAoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaCnRoaXMgIT0gJydIABLXAQoLaXB2Nl9wcmVmaXgYHyABKAhCvwHCSLsBCl8KEnN0cmluZy5pcHY2X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgcHJlZml4GiZ0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpYChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBoKdGhpcyAhPSAnJ0gAEoUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQusBwkjnAQqBAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGiZ0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQphChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoKdGhpcyAhPSAnJ0gAEqgFChB3ZWxsX2tub3duX3JlZ2V4GBggASgOMhguYnVmLnZhbGlkYXRlLktub3duUmVnZXhC8QTCSO0ECvABCiNzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZRImdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaoAFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J146P1swLTlhLXpBLVohIyQlJlwnKistLl5ffH5ceDYwXSskJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0rJCcpCo0BCilzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZV9lbXB0eRI1dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaKXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzICE9ICcnCucBCiRzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfdmFsdWUSJ3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciB2YWx1ZRqVAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMiB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J15bXlx1MDAwMC1cdTAwMDhcdTAwMEEtXHUwMDFGXHUwMDdGXSokJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0qJCcpSAASEwoGc3RyaWN0GBkgASgISA2IAQFCDAoKd2VsbF9rbm93bkIICgZfY29uc3RCBgoEX2xlbkIKCghfbWluX2xlbkIKCghfbWF4X2xlbkIMCgpfbGVuX2J5dGVzQgwKCl9taW5fYnl0ZXNCDAoKX21heF9ieXRlc0IKCghfcGF0dGVybkIJCgdfcHJlZml4QgkKB19zdWZmaXhCCwoJX2NvbnRhaW5zQg8KDV9ub3RfY29udGFpbnNCCQoHX3N0cmljdCK6EAoKQnl0ZXNSdWxlcxJrCgVjb25zdBgBIAEoDEJXwkhUClIKC2J5dGVzLmNvbnN0GkN0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgYmUgJXgnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAGIAQESfwoDbGVuGA0gASgEQm0wAcJIaApmCglieXRlcy5sZW4aWXVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnSAKIAQESmAEKB21pbl9sZW4YAiABKARCgQEwAcJIfAp6Cg1ieXRlcy5taW5fbGVuGml1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJydIA4gBARKPAQoHbWF4X2xlbhgDIAEoBEJ5MAHCSHQKcgoNYnl0ZXMubWF4X2xlbhphdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJ0gEiAEBEpUBCgdwYXR0ZXJuGAQgASgJQn/CSHwKegoNYnl0ZXMucGF0dGVybhppIXN0cmluZyh0aGlzKS5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIG11c3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnSAWIAQEShgEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJydIBogBARKEAQoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJydIB4gBARKIAQoIY29udGFpbnMYByABKAxCccJIbgpsCg5ieXRlcy5jb250YWlucxpaIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gJXgnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnSAiIAQESlwEKAmluGAggAygMQooBwkiGAQqDAQoIYnl0ZXMuaW4ad2R5bihydWxlcylbJ2luJ10uc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEtEBCgJpcBgKIAEoCELCAcJIvgEKZwoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGjl0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDQgfHwgdGhpcy5zaXplKCkgPT0gMTYKUwoOYnl0ZXMuaXBfZW1wdHkSL3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzGhB0aGlzLnNpemUoKSAhPSAwSAASxgEKBGlwdjQYCyABKAhCtQHCSLEBClYKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaJHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApXChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhB0aGlzLnNpemUoKSAhPSAwSAASxwEKBGlwdjYYDCABKAhCtgHCSLIBClcKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaJXRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKVwoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoQdGhpcy5zaXplKCkgIT0gMEgAQgwKCndlbGxfa25vd25CCAoGX2NvbnN0QgYKBF9sZW5CCgoIX21pbl9sZW5CCgoIX21heF9sZW5CCgoIX3BhdHRlcm5CCQoHX3ByZWZpeEIJCgdfc3VmZml4QgsKCV9jb250YWlucyKdAwoJRW51bVJ1bGVzEm0KBWNvbnN0GAEgASgFQlnCSFYKVAoKZW51bS5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gAiAEBEhkKDGRlZmluZWRfb25seRgCIAEoCEgBiAEBEnQKAmluGAMgAygFQmjCSGUKYwoHZW51bS5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ1CgZub3RfaW4YBCADKAVCZcJIYgpgCgtlbnVtLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnQggKBl9jb25zdEIPCg1fZGVmaW5lZF9vbmx5Iq4ECg1SZXBlYXRlZFJ1bGVzEqUBCgltaW5faXRlbXMYASABKARCjAEwAcJIhgEKgwEKEnJlcGVhdGVkLm1pbl9pdGVtcxptdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5faXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIGF0IGxlYXN0ICVkIGl0ZW0ocyknLmZvcm1hdChbcnVsZXMubWluX2l0ZW1zXSkgOiAnJ0gAiAEBEqkBCgltYXhfaXRlbXMYAiABKARCkAEwAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJydIAYgBARJkCgZ1bmlxdWUYAyABKAhCT8JITApKCg9yZXBlYXRlZC51bmlxdWUSKHJlcGVhdGVkIHZhbHVlIG11c3QgY29udGFpbiB1bmlxdWUgaXRlbXMaDXRoaXMudW5pcXVlKClIAogBARIyCgVpdGVtcxgEIAEoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZENvbnN0cmFpbnRzSAOIAQFCDAoKX21pbl9pdGVtc0IMCgpfbWF4X2l0ZW1zQgkKB191bmlxdWVCCAoGX2l0ZW1zItMDCghNYXBSdWxlcxKWAQoJbWluX3BhaXJzGAEgASgEQn4wAcJIeQp3Cg1tYXAubWluX3BhaXJzGmZ1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBsZWFzdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1pbl9wYWlyc10pIDogJydIAIgBARKVAQoJbWF4X3BhaXJzGAIgASgEQn0wAcJIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJ0gBiAEBEjEKBGtleXMYBCABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50c0gCiAEBEjMKBnZhbHVlcxgFIAEoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZENvbnN0cmFpbnRzSAOIAQFCDAoKX21pbl9wYWlyc0IMCgpfbWF4X3BhaXJzQgcKBV9rZXlzQgkKB192YWx1ZXMiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIq4WCg1EdXJhdGlvblJ1bGVzEowBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJdwkhaClgKDmR1cmF0aW9uLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAKIAQESqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESkwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQmzCSGkKZwoLZHVyYXRpb24uaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IpsXCg5UaW1lc3RhbXBSdWxlcxKOAQoFY29uc3QYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQl7CSFsKWQoPdGltZXN0YW1wLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAKIAQESqwEKAmx0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKAAcJIfQp7Cgx0aW1lc3RhbXAubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASvAEKA2x0ZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCkAHCSIwBCokBCg10aW1lc3RhbXAubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABJaCgZsdF9ub3cYByABKAhCSMJIRQpDChB0aW1lc3RhbXAubHRfbm93Gi90aGlzID4gbm93ID8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG5vdycgOiAnJ0gAEscHCgJndBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCnAfCSJgHCn4KDHRpbWVzdGFtcC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtwEKD3RpbWVzdGFtcC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKGXRpbWVzdGFtcC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrHAQoQdGltZXN0YW1wLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzwEKGnRpbWVzdGFtcC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARKTCAoDZ3RlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcELnB8JI4wcKjAEKDXRpbWVzdGFtcC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrGAQoQdGltZXN0YW1wLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrOAQoadGltZXN0YW1wLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtYBChF0aW1lc3RhbXAuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwreAQobdGltZXN0YW1wLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEl0KBmd0X25vdxgIIAEoCEJLwkhICkYKEHRpbWVzdGFtcC5ndF9ub3caMnRoaXMgPCBub3cgPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gbm93JyA6ICcnSAESvQEKBndpdGhpbhgJIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKMAcJIiAEKhQEKEHRpbWVzdGFtcC53aXRoaW4acXRoaXMgPCBub3ctcnVsZXMud2l0aGluIHx8IHRoaXMgPiBub3crcnVsZXMud2l0aGluID8gJ3ZhbHVlIG11c3QgYmUgd2l0aGluICVzIG9mIG5vdycuZm9ybWF0KFtydWxlcy53aXRoaW5dKSA6ICcnSAOIAQFCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3RCCQoHX3dpdGhpbipGCgZJZ25vcmUSFgoSSUdOT1JFX1VOU1BFQ0lGSUVEEAASEAoMSUdOT1JFX0VNUFRZEAESEgoOSUdOT1JFX0RFRkFVTFQQAipuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6XwoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyIC5idWYudmFsaWRhdGUuTWVzc2FnZUNvbnN0cmFpbnRzUgdtZXNzYWdliAEBOlcKBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyHi5idWYudmFsaWRhdGUuT25lb2ZDb25zdHJhaW50c1IFb25lb2aIAQE6VwoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZENvbnN0cmFpbnRzUgVmaWVsZIgBAUK7AQoQY29tLmJ1Zi52YWxpZGF0ZUINVmFsaWRhdGVQcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZaICA0JWWKoCDEJ1Zi5WYWxpZGF0ZcoCDEJ1ZlxWYWxpZGF0ZeICGEJ1ZlxWYWxpZGF0ZVxHUEJNZXRhZGF0YeoCDUJ1Zjo6VmFsaWRhdGViBnByb3RvMw", [file_buf_validate_expression, file_buf_validate_priv_private, file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp]);
33
+
34
+ /**
35
+ * MessageConstraints represents validation rules that are applied to the entire message.
36
+ * It includes disabling options and a list of Constraint messages representing Common Expression Language (CEL) validation rules.
37
+ *
38
+ * @generated from message buf.validate.MessageConstraints
39
+ */
40
+ export type MessageConstraints = Message<"buf.validate.MessageConstraints"> & {
41
+ /**
42
+ * `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message.
43
+ * This includes any fields within the message that would otherwise support validation.
44
+ *
45
+ * ```proto
46
+ * message MyMessage {
47
+ * // validation will be bypassed for this message
48
+ * option (buf.validate.message).disabled = true;
49
+ * }
50
+ * ```
51
+ *
52
+ * @generated from field: optional bool disabled = 1;
53
+ */
54
+ disabled?: boolean;
55
+
56
+ /**
57
+ * `cel` is a repeated field of type Constraint. Each Constraint specifies a validation rule to be applied to this message.
58
+ * These constraints are written in Common Expression Language (CEL) syntax. For more information on
59
+ * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).
60
+ *
61
+ *
62
+ * ```proto
63
+ * message MyMessage {
64
+ * // The field `foo` must be greater than 42.
65
+ * option (buf.validate.message).cel = {
66
+ * id: "my_message.value",
67
+ * message: "value must be greater than 42",
68
+ * expression: "this.foo > 42",
69
+ * };
70
+ * optional int32 foo = 1;
71
+ * }
72
+ * ```
73
+ *
74
+ * @generated from field: repeated buf.validate.Constraint cel = 3;
75
+ */
76
+ cel: Constraint[];
77
+ };
78
+
79
+ /**
80
+ * Describes the message buf.validate.MessageConstraints.
81
+ * Use `create(MessageConstraintsSchema)` to create a new message.
82
+ */
83
+ export const MessageConstraintsSchema: GenMessage<MessageConstraints> = /*@__PURE__*/
84
+ messageDesc(file_buf_validate_validate, 0);
85
+
86
+ /**
87
+ * The `OneofConstraints` message type enables you to manage constraints for
88
+ * oneof fields in your protobuf messages.
89
+ *
90
+ * @generated from message buf.validate.OneofConstraints
91
+ */
92
+ export type OneofConstraints = Message<"buf.validate.OneofConstraints"> & {
93
+ /**
94
+ * If `required` is true, exactly one field of the oneof must be present. A
95
+ * validation error is returned if no fields in the oneof are present. The
96
+ * field itself may still be a default value; further constraints
97
+ * should be placed on the fields themselves to ensure they are valid values,
98
+ * such as `min_len` or `gt`.
99
+ *
100
+ * ```proto
101
+ * message MyMessage {
102
+ * oneof value {
103
+ * // Either `a` or `b` must be set. If `a` is set, it must also be
104
+ * // non-empty; whereas if `b` is set, it can still be an empty string.
105
+ * option (buf.validate.oneof).required = true;
106
+ * string a = 1 [(buf.validate.field).string.min_len = 1];
107
+ * string b = 2;
108
+ * }
109
+ * }
110
+ * ```
111
+ *
112
+ * @generated from field: optional bool required = 1;
113
+ */
114
+ required?: boolean;
115
+ };
116
+
117
+ /**
118
+ * Describes the message buf.validate.OneofConstraints.
119
+ * Use `create(OneofConstraintsSchema)` to create a new message.
120
+ */
121
+ export const OneofConstraintsSchema: GenMessage<OneofConstraints> = /*@__PURE__*/
122
+ messageDesc(file_buf_validate_validate, 1);
123
+
124
+ /**
125
+ * FieldRules encapsulates the rules for each type of field. Depending on the
126
+ * field, the correct set should be used to ensure proper validations.
127
+ *
128
+ * @generated from message buf.validate.FieldConstraints
129
+ */
130
+ export type FieldConstraints = Message<"buf.validate.FieldConstraints"> & {
131
+ /**
132
+ * `cel` is a repeated field used to represent a textual expression
133
+ * in the Common Expression Language (CEL) syntax. For more information on
134
+ * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).
135
+ *
136
+ * ```proto
137
+ * message MyMessage {
138
+ * // The field `value` must be greater than 42.
139
+ * optional int32 value = 1 [(buf.validate.field).cel = {
140
+ * id: "my_message.value",
141
+ * message: "value must be greater than 42",
142
+ * expression: "this > 42",
143
+ * }];
144
+ * }
145
+ * ```
146
+ *
147
+ * @generated from field: repeated buf.validate.Constraint cel = 23;
148
+ */
149
+ cel: Constraint[];
150
+
151
+ /**
152
+ * `skipped` is an optional boolean attribute that specifies that the
153
+ * validation rules of this field should not be evaluated. If skipped is set to
154
+ * true, any validation rules set for the field will be ignored.
155
+ *
156
+ * ```proto
157
+ * message MyMessage {
158
+ * // The field `value` must not be set.
159
+ * optional MyOtherMessage value = 1 [(buf.validate.field).skipped = true];
160
+ * }
161
+ * ```
162
+ *
163
+ * @generated from field: bool skipped = 24;
164
+ */
165
+ skipped: boolean;
166
+
167
+ /**
168
+ * If `required` is true, the field must be populated. Field presence can be
169
+ * described as "serialized in the wire format," which follows the following rules:
170
+ *
171
+ * - the following "nullable" fields must be explicitly set to be considered present:
172
+ * - singular message fields (whose fields may be unpopulated/default values)
173
+ * - member fields of a oneof (may be their default value)
174
+ * - proto3 optional fields (may be their default value)
175
+ * - proto2 scalar fields
176
+ * - proto3 scalar fields must be non-zero to be considered present
177
+ * - repeated and map fields must be non-empty to be considered present
178
+ *
179
+ * ```proto
180
+ * message MyMessage {
181
+ * // The field `value` must be set to a non-null value.
182
+ * optional MyOtherMessage value = 1 [(buf.validate.field).required = true];
183
+ * }
184
+ * ```
185
+ *
186
+ * @generated from field: bool required = 25;
187
+ */
188
+ required: boolean;
189
+
190
+ /**
191
+ * DEPRECATED: use ignore=IGNORE_EMPTY instead.
192
+ *
193
+ * @generated from field: bool ignore_empty = 26 [deprecated = true];
194
+ * @deprecated
195
+ */
196
+ ignoreEmpty: boolean;
197
+
198
+ /**
199
+ * Skip validation on the field if its value matches the specified rule.
200
+ *
201
+ * ```proto
202
+ * message UpdateRequest {
203
+ * // The uri rule only applies if the field is populated and not an empty
204
+ * // string.
205
+ * optional string url = 1 [
206
+ * (buf.validate.field).ignore = IGNORE_DEFAULT,
207
+ * (buf.validate.field).string.uri = true,
208
+ * ];
209
+ * }
210
+ * ```
211
+ *
212
+ * @generated from field: buf.validate.Ignore ignore = 27;
213
+ */
214
+ ignore: Ignore;
215
+
216
+ /**
217
+ * @generated from oneof buf.validate.FieldConstraints.type
218
+ */
219
+ type: {
220
+ /**
221
+ * Scalar Field Types
222
+ *
223
+ * @generated from field: buf.validate.FloatRules float = 1;
224
+ */
225
+ value: FloatRules;
226
+ case: "float";
227
+ } | {
228
+ /**
229
+ * @generated from field: buf.validate.DoubleRules double = 2;
230
+ */
231
+ value: DoubleRules;
232
+ case: "double";
233
+ } | {
234
+ /**
235
+ * @generated from field: buf.validate.Int32Rules int32 = 3;
236
+ */
237
+ value: Int32Rules;
238
+ case: "int32";
239
+ } | {
240
+ /**
241
+ * @generated from field: buf.validate.Int64Rules int64 = 4;
242
+ */
243
+ value: Int64Rules;
244
+ case: "int64";
245
+ } | {
246
+ /**
247
+ * @generated from field: buf.validate.UInt32Rules uint32 = 5;
248
+ */
249
+ value: UInt32Rules;
250
+ case: "uint32";
251
+ } | {
252
+ /**
253
+ * @generated from field: buf.validate.UInt64Rules uint64 = 6;
254
+ */
255
+ value: UInt64Rules;
256
+ case: "uint64";
257
+ } | {
258
+ /**
259
+ * @generated from field: buf.validate.SInt32Rules sint32 = 7;
260
+ */
261
+ value: SInt32Rules;
262
+ case: "sint32";
263
+ } | {
264
+ /**
265
+ * @generated from field: buf.validate.SInt64Rules sint64 = 8;
266
+ */
267
+ value: SInt64Rules;
268
+ case: "sint64";
269
+ } | {
270
+ /**
271
+ * @generated from field: buf.validate.Fixed32Rules fixed32 = 9;
272
+ */
273
+ value: Fixed32Rules;
274
+ case: "fixed32";
275
+ } | {
276
+ /**
277
+ * @generated from field: buf.validate.Fixed64Rules fixed64 = 10;
278
+ */
279
+ value: Fixed64Rules;
280
+ case: "fixed64";
281
+ } | {
282
+ /**
283
+ * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11;
284
+ */
285
+ value: SFixed32Rules;
286
+ case: "sfixed32";
287
+ } | {
288
+ /**
289
+ * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12;
290
+ */
291
+ value: SFixed64Rules;
292
+ case: "sfixed64";
293
+ } | {
294
+ /**
295
+ * @generated from field: buf.validate.BoolRules bool = 13;
296
+ */
297
+ value: BoolRules;
298
+ case: "bool";
299
+ } | {
300
+ /**
301
+ * @generated from field: buf.validate.StringRules string = 14;
302
+ */
303
+ value: StringRules;
304
+ case: "string";
305
+ } | {
306
+ /**
307
+ * @generated from field: buf.validate.BytesRules bytes = 15;
308
+ */
309
+ value: BytesRules;
310
+ case: "bytes";
311
+ } | {
312
+ /**
313
+ * Complex Field Types
314
+ *
315
+ * @generated from field: buf.validate.EnumRules enum = 16;
316
+ */
317
+ value: EnumRules;
318
+ case: "enum";
319
+ } | {
320
+ /**
321
+ * @generated from field: buf.validate.RepeatedRules repeated = 18;
322
+ */
323
+ value: RepeatedRules;
324
+ case: "repeated";
325
+ } | {
326
+ /**
327
+ * @generated from field: buf.validate.MapRules map = 19;
328
+ */
329
+ value: MapRules;
330
+ case: "map";
331
+ } | {
332
+ /**
333
+ * Well-Known Field Types
334
+ *
335
+ * @generated from field: buf.validate.AnyRules any = 20;
336
+ */
337
+ value: AnyRules;
338
+ case: "any";
339
+ } | {
340
+ /**
341
+ * @generated from field: buf.validate.DurationRules duration = 21;
342
+ */
343
+ value: DurationRules;
344
+ case: "duration";
345
+ } | {
346
+ /**
347
+ * @generated from field: buf.validate.TimestampRules timestamp = 22;
348
+ */
349
+ value: TimestampRules;
350
+ case: "timestamp";
351
+ } | { case: undefined; value?: undefined };
352
+ };
353
+
354
+ /**
355
+ * Describes the message buf.validate.FieldConstraints.
356
+ * Use `create(FieldConstraintsSchema)` to create a new message.
357
+ */
358
+ export const FieldConstraintsSchema: GenMessage<FieldConstraints> = /*@__PURE__*/
359
+ messageDesc(file_buf_validate_validate, 2);
360
+
361
+ /**
362
+ * FloatRules describes the constraints applied to `float` values. These
363
+ * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type.
364
+ *
365
+ * @generated from message buf.validate.FloatRules
366
+ */
367
+ export type FloatRules = Message<"buf.validate.FloatRules"> & {
368
+ /**
369
+ * `const` requires the field value to exactly match the specified value. If
370
+ * the field value doesn't match, an error message is generated.
371
+ *
372
+ * ```proto
373
+ * message MyFloat {
374
+ * // value must equal 42.0
375
+ * float value = 1 [(buf.validate.field).float.const = 42.0];
376
+ * }
377
+ * ```
378
+ *
379
+ * @generated from field: optional float const = 1;
380
+ */
381
+ const?: number;
382
+
383
+ /**
384
+ * @generated from oneof buf.validate.FloatRules.less_than
385
+ */
386
+ lessThan: {
387
+ /**
388
+ * `lt` requires the field value to be less than the specified value (field <
389
+ * value). If the field value is equal to or greater than the specified value,
390
+ * an error message is generated.
391
+ *
392
+ * ```proto
393
+ * message MyFloat {
394
+ * // value must be less than 10.0
395
+ * float value = 1 [(buf.validate.field).float.lt = 10.0];
396
+ * }
397
+ * ```
398
+ *
399
+ * @generated from field: float lt = 2;
400
+ */
401
+ value: number;
402
+ case: "lt";
403
+ } | {
404
+ /**
405
+ * `lte` requires the field value to be less than or equal to the specified
406
+ * value (field <= value). If the field value is greater than the specified
407
+ * value, an error message is generated.
408
+ *
409
+ * ```proto
410
+ * message MyFloat {
411
+ * // value must be less than or equal to 10.0
412
+ * float value = 1 [(buf.validate.field).float.lte = 10.0];
413
+ * }
414
+ * ```
415
+ *
416
+ * @generated from field: float lte = 3;
417
+ */
418
+ value: number;
419
+ case: "lte";
420
+ } | { case: undefined; value?: undefined };
421
+
422
+ /**
423
+ * @generated from oneof buf.validate.FloatRules.greater_than
424
+ */
425
+ greaterThan: {
426
+ /**
427
+ * `gt` requires the field value to be greater than the specified value
428
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
429
+ * `lte`, the range is reversed, and the field value must be outside the
430
+ * specified range. If the field value doesn't meet the required conditions,
431
+ * an error message is generated.
432
+ *
433
+ * ```proto
434
+ * message MyFloat {
435
+ * // value must be greater than 5.0 [float.gt]
436
+ * float value = 1 [(buf.validate.field).float.gt = 5.0];
437
+ *
438
+ * // value must be greater than 5 and less than 10.0 [float.gt_lt]
439
+ * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }];
440
+ *
441
+ * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive]
442
+ * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }];
443
+ * }
444
+ * ```
445
+ *
446
+ * @generated from field: float gt = 4;
447
+ */
448
+ value: number;
449
+ case: "gt";
450
+ } | {
451
+ /**
452
+ * `gte` requires the field value to be greater than or equal to the specified
453
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
454
+ * or `lte`, the range is reversed, and the field value must be outside the
455
+ * specified range. If the field value doesn't meet the required conditions,
456
+ * an error message is generated.
457
+ *
458
+ * ```proto
459
+ * message MyFloat {
460
+ * // value must be greater than or equal to 5.0 [float.gte]
461
+ * float value = 1 [(buf.validate.field).float.gte = 5.0];
462
+ *
463
+ * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt]
464
+ * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }];
465
+ *
466
+ * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive]
467
+ * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }];
468
+ * }
469
+ * ```
470
+ *
471
+ * @generated from field: float gte = 5;
472
+ */
473
+ value: number;
474
+ case: "gte";
475
+ } | { case: undefined; value?: undefined };
476
+
477
+ /**
478
+ * `in` requires the field value to be equal to one of the specified values.
479
+ * If the field value isn't one of the specified values, an error message
480
+ * is generated.
481
+ *
482
+ * ```proto
483
+ * message MyFloat {
484
+ * // value must be in list [1.0, 2.0, 3.0]
485
+ * repeated float value = 1 (buf.validate.field).float = { in: [1.0, 2.0, 3.0] };
486
+ * }
487
+ * ```
488
+ *
489
+ * @generated from field: repeated float in = 6;
490
+ */
491
+ in: number[];
492
+
493
+ /**
494
+ * `in` requires the field value to not be equal to any of the specified
495
+ * values. If the field value is one of the specified values, an error
496
+ * message is generated.
497
+ *
498
+ * ```proto
499
+ * message MyFloat {
500
+ * // value must not be in list [1.0, 2.0, 3.0]
501
+ * repeated float value = 1 (buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] };
502
+ * }
503
+ * ```
504
+ *
505
+ * @generated from field: repeated float not_in = 7;
506
+ */
507
+ notIn: number[];
508
+
509
+ /**
510
+ * `finite` requires the field value to be finite. If the field value is
511
+ * infinite or NaN, an error message is generated.
512
+ *
513
+ * @generated from field: bool finite = 8;
514
+ */
515
+ finite: boolean;
516
+ };
517
+
518
+ /**
519
+ * Describes the message buf.validate.FloatRules.
520
+ * Use `create(FloatRulesSchema)` to create a new message.
521
+ */
522
+ export const FloatRulesSchema: GenMessage<FloatRules> = /*@__PURE__*/
523
+ messageDesc(file_buf_validate_validate, 3);
524
+
525
+ /**
526
+ * DoubleRules describes the constraints applied to `double` values. These
527
+ * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type.
528
+ *
529
+ * @generated from message buf.validate.DoubleRules
530
+ */
531
+ export type DoubleRules = Message<"buf.validate.DoubleRules"> & {
532
+ /**
533
+ * `const` requires the field value to exactly match the specified value. If
534
+ * the field value doesn't match, an error message is generated.
535
+ *
536
+ * ```proto
537
+ * message MyDouble {
538
+ * // value must equal 42.0
539
+ * double value = 1 [(buf.validate.field).double.const = 42.0];
540
+ * }
541
+ * ```
542
+ *
543
+ * @generated from field: optional double const = 1;
544
+ */
545
+ const?: number;
546
+
547
+ /**
548
+ * @generated from oneof buf.validate.DoubleRules.less_than
549
+ */
550
+ lessThan: {
551
+ /**
552
+ * `lt` requires the field value to be less than the specified value (field <
553
+ * value). If the field value is equal to or greater than the specified
554
+ * value, an error message is generated.
555
+ *
556
+ * ```proto
557
+ * message MyDouble {
558
+ * // value must be less than 10.0
559
+ * double value = 1 [(buf.validate.field).double.lt = 10.0];
560
+ * }
561
+ * ```
562
+ *
563
+ * @generated from field: double lt = 2;
564
+ */
565
+ value: number;
566
+ case: "lt";
567
+ } | {
568
+ /**
569
+ * `lte` requires the field value to be less than or equal to the specified value
570
+ * (field <= value). If the field value is greater than the specified value,
571
+ * an error message is generated.
572
+ *
573
+ * ```proto
574
+ * message MyDouble {
575
+ * // value must be less than or equal to 10.0
576
+ * double value = 1 [(buf.validate.field).double.lte = 10.0];
577
+ * }
578
+ * ```
579
+ *
580
+ * @generated from field: double lte = 3;
581
+ */
582
+ value: number;
583
+ case: "lte";
584
+ } | { case: undefined; value?: undefined };
585
+
586
+ /**
587
+ * @generated from oneof buf.validate.DoubleRules.greater_than
588
+ */
589
+ greaterThan: {
590
+ /**
591
+ * `gt` requires the field value to be greater than the specified value
592
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`,
593
+ * the range is reversed, and the field value must be outside the specified
594
+ * range. If the field value doesn't meet the required conditions, an error
595
+ * message is generated.
596
+ *
597
+ * ```proto
598
+ * message MyDouble {
599
+ * // value must be greater than 5.0 [double.gt]
600
+ * double value = 1 [(buf.validate.field).double.gt = 5.0];
601
+ *
602
+ * // value must be greater than 5 and less than 10.0 [double.gt_lt]
603
+ * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }];
604
+ *
605
+ * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive]
606
+ * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }];
607
+ * }
608
+ * ```
609
+ *
610
+ * @generated from field: double gt = 4;
611
+ */
612
+ value: number;
613
+ case: "gt";
614
+ } | {
615
+ /**
616
+ * `gte` requires the field value to be greater than or equal to the specified
617
+ * value (exclusive). If the value of `gte` is larger than a specified `lt` or
618
+ * `lte`, the range is reversed, and the field value must be outside the
619
+ * specified range. If the field value doesn't meet the required conditions,
620
+ * an error message is generated.
621
+ *
622
+ * ```proto
623
+ * message MyDouble {
624
+ * // value must be greater than or equal to 5.0 [double.gte]
625
+ * double value = 1 [(buf.validate.field).double.gte = 5.0];
626
+ *
627
+ * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt]
628
+ * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }];
629
+ *
630
+ * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive]
631
+ * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }];
632
+ * }
633
+ * ```
634
+ *
635
+ * @generated from field: double gte = 5;
636
+ */
637
+ value: number;
638
+ case: "gte";
639
+ } | { case: undefined; value?: undefined };
640
+
641
+ /**
642
+ * `in` requires the field value to be equal to one of the specified values.
643
+ * If the field value isn't one of the specified values, an error message is
644
+ * generated.
645
+ *
646
+ * ```proto
647
+ * message MyDouble {
648
+ * // value must be in list [1.0, 2.0, 3.0]
649
+ * repeated double value = 1 (buf.validate.field).double = { in: [1.0, 2.0, 3.0] };
650
+ * }
651
+ * ```
652
+ *
653
+ * @generated from field: repeated double in = 6;
654
+ */
655
+ in: number[];
656
+
657
+ /**
658
+ * `not_in` requires the field value to not be equal to any of the specified
659
+ * values. If the field value is one of the specified values, an error
660
+ * message is generated.
661
+ *
662
+ * ```proto
663
+ * message MyDouble {
664
+ * // value must not be in list [1.0, 2.0, 3.0]
665
+ * repeated double value = 1 (buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] };
666
+ * }
667
+ * ```
668
+ *
669
+ * @generated from field: repeated double not_in = 7;
670
+ */
671
+ notIn: number[];
672
+
673
+ /**
674
+ * `finite` requires the field value to be finite. If the field value is
675
+ * infinite or NaN, an error message is generated.
676
+ *
677
+ * @generated from field: bool finite = 8;
678
+ */
679
+ finite: boolean;
680
+ };
681
+
682
+ /**
683
+ * Describes the message buf.validate.DoubleRules.
684
+ * Use `create(DoubleRulesSchema)` to create a new message.
685
+ */
686
+ export const DoubleRulesSchema: GenMessage<DoubleRules> = /*@__PURE__*/
687
+ messageDesc(file_buf_validate_validate, 4);
688
+
689
+ /**
690
+ * Int32Rules describes the constraints applied to `int32` values. These
691
+ * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type.
692
+ *
693
+ * @generated from message buf.validate.Int32Rules
694
+ */
695
+ export type Int32Rules = Message<"buf.validate.Int32Rules"> & {
696
+ /**
697
+ * `const` requires the field value to exactly match the specified value. If
698
+ * the field value doesn't match, an error message is generated.
699
+ *
700
+ * ```proto
701
+ * message MyInt32 {
702
+ * // value must equal 42
703
+ * int32 value = 1 [(buf.validate.field).int32.const = 42];
704
+ * }
705
+ * ```
706
+ *
707
+ * @generated from field: optional int32 const = 1;
708
+ */
709
+ const?: number;
710
+
711
+ /**
712
+ * @generated from oneof buf.validate.Int32Rules.less_than
713
+ */
714
+ lessThan: {
715
+ /**
716
+ * `lt` requires the field value to be less than the specified value (field
717
+ * < value). If the field value is equal to or greater than the specified
718
+ * value, an error message is generated.
719
+ *
720
+ * ```proto
721
+ * message MyInt32 {
722
+ * // value must be less than 10
723
+ * int32 value = 1 [(buf.validate.field).int32.lt = 10];
724
+ * }
725
+ * ```
726
+ *
727
+ * @generated from field: int32 lt = 2;
728
+ */
729
+ value: number;
730
+ case: "lt";
731
+ } | {
732
+ /**
733
+ * `lte` requires the field value to be less than or equal to the specified
734
+ * value (field <= value). If the field value is greater than the specified
735
+ * value, an error message is generated.
736
+ *
737
+ * ```proto
738
+ * message MyInt32 {
739
+ * // value must be less than or equal to 10
740
+ * int32 value = 1 [(buf.validate.field).int32.lte = 10];
741
+ * }
742
+ * ```
743
+ *
744
+ * @generated from field: int32 lte = 3;
745
+ */
746
+ value: number;
747
+ case: "lte";
748
+ } | { case: undefined; value?: undefined };
749
+
750
+ /**
751
+ * @generated from oneof buf.validate.Int32Rules.greater_than
752
+ */
753
+ greaterThan: {
754
+ /**
755
+ * `gt` requires the field value to be greater than the specified value
756
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
757
+ * `lte`, the range is reversed, and the field value must be outside the
758
+ * specified range. If the field value doesn't meet the required conditions,
759
+ * an error message is generated.
760
+ *
761
+ * ```proto
762
+ * message MyInt32 {
763
+ * // value must be greater than 5 [int32.gt]
764
+ * int32 value = 1 [(buf.validate.field).int32.gt = 5];
765
+ *
766
+ * // value must be greater than 5 and less than 10 [int32.gt_lt]
767
+ * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }];
768
+ *
769
+ * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive]
770
+ * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }];
771
+ * }
772
+ * ```
773
+ *
774
+ * @generated from field: int32 gt = 4;
775
+ */
776
+ value: number;
777
+ case: "gt";
778
+ } | {
779
+ /**
780
+ * `gte` requires the field value to be greater than or equal to the specified value
781
+ * (exclusive). If the value of `gte` is larger than a specified `lt` or
782
+ * `lte`, the range is reversed, and the field value must be outside the
783
+ * specified range. If the field value doesn't meet the required conditions,
784
+ * an error message is generated.
785
+ *
786
+ * ```proto
787
+ * message MyInt32 {
788
+ * // value must be greater than or equal to 5 [int32.gte]
789
+ * int32 value = 1 [(buf.validate.field).int32.gte = 5];
790
+ *
791
+ * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt]
792
+ * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }];
793
+ *
794
+ * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive]
795
+ * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }];
796
+ * }
797
+ * ```
798
+ *
799
+ * @generated from field: int32 gte = 5;
800
+ */
801
+ value: number;
802
+ case: "gte";
803
+ } | { case: undefined; value?: undefined };
804
+
805
+ /**
806
+ * `in` requires the field value to be equal to one of the specified values.
807
+ * If the field value isn't one of the specified values, an error message is
808
+ * generated.
809
+ *
810
+ * ```proto
811
+ * message MyInt32 {
812
+ * // value must be in list [1, 2, 3]
813
+ * repeated int32 value = 1 (buf.validate.field).int32 = { in: [1, 2, 3] };
814
+ * }
815
+ * ```
816
+ *
817
+ * @generated from field: repeated int32 in = 6;
818
+ */
819
+ in: number[];
820
+
821
+ /**
822
+ * `not_in` requires the field value to not be equal to any of the specified
823
+ * values. If the field value is one of the specified values, an error message
824
+ * is generated.
825
+ *
826
+ * ```proto
827
+ * message MyInt32 {
828
+ * // value must not be in list [1, 2, 3]
829
+ * repeated int32 value = 1 (buf.validate.field).int32 = { not_in: [1, 2, 3] };
830
+ * }
831
+ * ```
832
+ *
833
+ * @generated from field: repeated int32 not_in = 7;
834
+ */
835
+ notIn: number[];
836
+ };
837
+
838
+ /**
839
+ * Describes the message buf.validate.Int32Rules.
840
+ * Use `create(Int32RulesSchema)` to create a new message.
841
+ */
842
+ export const Int32RulesSchema: GenMessage<Int32Rules> = /*@__PURE__*/
843
+ messageDesc(file_buf_validate_validate, 5);
844
+
845
+ /**
846
+ * Int64Rules describes the constraints applied to `int64` values. These
847
+ * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type.
848
+ *
849
+ * @generated from message buf.validate.Int64Rules
850
+ */
851
+ export type Int64Rules = Message<"buf.validate.Int64Rules"> & {
852
+ /**
853
+ * `const` requires the field value to exactly match the specified value. If
854
+ * the field value doesn't match, an error message is generated.
855
+ *
856
+ * ```proto
857
+ * message MyInt64 {
858
+ * // value must equal 42
859
+ * int64 value = 1 [(buf.validate.field).int64.const = 42];
860
+ * }
861
+ * ```
862
+ *
863
+ * @generated from field: optional int64 const = 1 [jstype = JS_STRING];
864
+ */
865
+ const?: string;
866
+
867
+ /**
868
+ * @generated from oneof buf.validate.Int64Rules.less_than
869
+ */
870
+ lessThan: {
871
+ /**
872
+ * `lt` requires the field value to be less than the specified value (field <
873
+ * value). If the field value is equal to or greater than the specified value,
874
+ * an error message is generated.
875
+ *
876
+ * ```proto
877
+ * message MyInt64 {
878
+ * // value must be less than 10
879
+ * int64 value = 1 [(buf.validate.field).int64.lt = 10];
880
+ * }
881
+ * ```
882
+ *
883
+ * @generated from field: int64 lt = 2 [jstype = JS_STRING];
884
+ */
885
+ value: string;
886
+ case: "lt";
887
+ } | {
888
+ /**
889
+ * `lte` requires the field value to be less than or equal to the specified
890
+ * value (field <= value). If the field value is greater than the specified
891
+ * value, an error message is generated.
892
+ *
893
+ * ```proto
894
+ * message MyInt64 {
895
+ * // value must be less than or equal to 10
896
+ * int64 value = 1 [(buf.validate.field).int64.lte = 10];
897
+ * }
898
+ * ```
899
+ *
900
+ * @generated from field: int64 lte = 3 [jstype = JS_STRING];
901
+ */
902
+ value: string;
903
+ case: "lte";
904
+ } | { case: undefined; value?: undefined };
905
+
906
+ /**
907
+ * @generated from oneof buf.validate.Int64Rules.greater_than
908
+ */
909
+ greaterThan: {
910
+ /**
911
+ * `gt` requires the field value to be greater than the specified value
912
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
913
+ * `lte`, the range is reversed, and the field value must be outside the
914
+ * specified range. If the field value doesn't meet the required conditions,
915
+ * an error message is generated.
916
+ *
917
+ * ```proto
918
+ * message MyInt64 {
919
+ * // value must be greater than 5 [int64.gt]
920
+ * int64 value = 1 [(buf.validate.field).int64.gt = 5];
921
+ *
922
+ * // value must be greater than 5 and less than 10 [int64.gt_lt]
923
+ * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }];
924
+ *
925
+ * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive]
926
+ * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }];
927
+ * }
928
+ * ```
929
+ *
930
+ * @generated from field: int64 gt = 4 [jstype = JS_STRING];
931
+ */
932
+ value: string;
933
+ case: "gt";
934
+ } | {
935
+ /**
936
+ * `gte` requires the field value to be greater than or equal to the specified
937
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
938
+ * or `lte`, the range is reversed, and the field value must be outside the
939
+ * specified range. If the field value doesn't meet the required conditions,
940
+ * an error message is generated.
941
+ *
942
+ * ```proto
943
+ * message MyInt64 {
944
+ * // value must be greater than or equal to 5 [int64.gte]
945
+ * int64 value = 1 [(buf.validate.field).int64.gte = 5];
946
+ *
947
+ * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt]
948
+ * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }];
949
+ *
950
+ * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive]
951
+ * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }];
952
+ * }
953
+ * ```
954
+ *
955
+ * @generated from field: int64 gte = 5 [jstype = JS_STRING];
956
+ */
957
+ value: string;
958
+ case: "gte";
959
+ } | { case: undefined; value?: undefined };
960
+
961
+ /**
962
+ * `in` requires the field value to be equal to one of the specified values.
963
+ * If the field value isn't one of the specified values, an error message is
964
+ * generated.
965
+ *
966
+ * ```proto
967
+ * message MyInt64 {
968
+ * // value must be in list [1, 2, 3]
969
+ * repeated int64 value = 1 (buf.validate.field).int64 = { in: [1, 2, 3] };
970
+ * }
971
+ * ```
972
+ *
973
+ * @generated from field: repeated int64 in = 6 [jstype = JS_STRING];
974
+ */
975
+ in: string[];
976
+
977
+ /**
978
+ * `not_in` requires the field value to not be equal to any of the specified
979
+ * values. If the field value is one of the specified values, an error
980
+ * message is generated.
981
+ *
982
+ * ```proto
983
+ * message MyInt64 {
984
+ * // value must not be in list [1, 2, 3]
985
+ * repeated int64 value = 1 (buf.validate.field).int64 = { not_in: [1, 2, 3] };
986
+ * }
987
+ * ```
988
+ *
989
+ * @generated from field: repeated int64 not_in = 7 [jstype = JS_STRING];
990
+ */
991
+ notIn: string[];
992
+ };
993
+
994
+ /**
995
+ * Describes the message buf.validate.Int64Rules.
996
+ * Use `create(Int64RulesSchema)` to create a new message.
997
+ */
998
+ export const Int64RulesSchema: GenMessage<Int64Rules> = /*@__PURE__*/
999
+ messageDesc(file_buf_validate_validate, 6);
1000
+
1001
+ /**
1002
+ * UInt32Rules describes the constraints applied to `uint32` values. These
1003
+ * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type.
1004
+ *
1005
+ * @generated from message buf.validate.UInt32Rules
1006
+ */
1007
+ export type UInt32Rules = Message<"buf.validate.UInt32Rules"> & {
1008
+ /**
1009
+ * `const` requires the field value to exactly match the specified value. If
1010
+ * the field value doesn't match, an error message is generated.
1011
+ *
1012
+ * ```proto
1013
+ * message MyUInt32 {
1014
+ * // value must equal 42
1015
+ * uint32 value = 1 [(buf.validate.field).uint32.const = 42];
1016
+ * }
1017
+ * ```
1018
+ *
1019
+ * @generated from field: optional uint32 const = 1;
1020
+ */
1021
+ const?: number;
1022
+
1023
+ /**
1024
+ * @generated from oneof buf.validate.UInt32Rules.less_than
1025
+ */
1026
+ lessThan: {
1027
+ /**
1028
+ * `lt` requires the field value to be less than the specified value (field <
1029
+ * value). If the field value is equal to or greater than the specified value,
1030
+ * an error message is generated.
1031
+ *
1032
+ * ```proto
1033
+ * message MyUInt32 {
1034
+ * // value must be less than 10
1035
+ * uint32 value = 1 [(buf.validate.field).uint32.lt = 10];
1036
+ * }
1037
+ * ```
1038
+ *
1039
+ * @generated from field: uint32 lt = 2;
1040
+ */
1041
+ value: number;
1042
+ case: "lt";
1043
+ } | {
1044
+ /**
1045
+ * `lte` requires the field value to be less than or equal to the specified
1046
+ * value (field <= value). If the field value is greater than the specified
1047
+ * value, an error message is generated.
1048
+ *
1049
+ * ```proto
1050
+ * message MyUInt32 {
1051
+ * // value must be less than or equal to 10
1052
+ * uint32 value = 1 [(buf.validate.field).uint32.lte = 10];
1053
+ * }
1054
+ * ```
1055
+ *
1056
+ * @generated from field: uint32 lte = 3;
1057
+ */
1058
+ value: number;
1059
+ case: "lte";
1060
+ } | { case: undefined; value?: undefined };
1061
+
1062
+ /**
1063
+ * @generated from oneof buf.validate.UInt32Rules.greater_than
1064
+ */
1065
+ greaterThan: {
1066
+ /**
1067
+ * `gt` requires the field value to be greater than the specified value
1068
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
1069
+ * `lte`, the range is reversed, and the field value must be outside the
1070
+ * specified range. If the field value doesn't meet the required conditions,
1071
+ * an error message is generated.
1072
+ *
1073
+ * ```proto
1074
+ * message MyUInt32 {
1075
+ * // value must be greater than 5 [uint32.gt]
1076
+ * uint32 value = 1 [(buf.validate.field).uint32.gt = 5];
1077
+ *
1078
+ * // value must be greater than 5 and less than 10 [uint32.gt_lt]
1079
+ * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }];
1080
+ *
1081
+ * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive]
1082
+ * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }];
1083
+ * }
1084
+ * ```
1085
+ *
1086
+ * @generated from field: uint32 gt = 4;
1087
+ */
1088
+ value: number;
1089
+ case: "gt";
1090
+ } | {
1091
+ /**
1092
+ * `gte` requires the field value to be greater than or equal to the specified
1093
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
1094
+ * or `lte`, the range is reversed, and the field value must be outside the
1095
+ * specified range. If the field value doesn't meet the required conditions,
1096
+ * an error message is generated.
1097
+ *
1098
+ * ```proto
1099
+ * message MyUInt32 {
1100
+ * // value must be greater than or equal to 5 [uint32.gte]
1101
+ * uint32 value = 1 [(buf.validate.field).uint32.gte = 5];
1102
+ *
1103
+ * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt]
1104
+ * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }];
1105
+ *
1106
+ * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive]
1107
+ * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }];
1108
+ * }
1109
+ * ```
1110
+ *
1111
+ * @generated from field: uint32 gte = 5;
1112
+ */
1113
+ value: number;
1114
+ case: "gte";
1115
+ } | { case: undefined; value?: undefined };
1116
+
1117
+ /**
1118
+ * `in` requires the field value to be equal to one of the specified values.
1119
+ * If the field value isn't one of the specified values, an error message is
1120
+ * generated.
1121
+ *
1122
+ * ```proto
1123
+ * message MyUInt32 {
1124
+ * // value must be in list [1, 2, 3]
1125
+ * repeated uint32 value = 1 (buf.validate.field).uint32 = { in: [1, 2, 3] };
1126
+ * }
1127
+ * ```
1128
+ *
1129
+ * @generated from field: repeated uint32 in = 6;
1130
+ */
1131
+ in: number[];
1132
+
1133
+ /**
1134
+ * `not_in` requires the field value to not be equal to any of the specified
1135
+ * values. If the field value is one of the specified values, an error
1136
+ * message is generated.
1137
+ *
1138
+ * ```proto
1139
+ * message MyUInt32 {
1140
+ * // value must not be in list [1, 2, 3]
1141
+ * repeated uint32 value = 1 (buf.validate.field).uint32 = { not_in: [1, 2, 3] };
1142
+ * }
1143
+ * ```
1144
+ *
1145
+ * @generated from field: repeated uint32 not_in = 7;
1146
+ */
1147
+ notIn: number[];
1148
+ };
1149
+
1150
+ /**
1151
+ * Describes the message buf.validate.UInt32Rules.
1152
+ * Use `create(UInt32RulesSchema)` to create a new message.
1153
+ */
1154
+ export const UInt32RulesSchema: GenMessage<UInt32Rules> = /*@__PURE__*/
1155
+ messageDesc(file_buf_validate_validate, 7);
1156
+
1157
+ /**
1158
+ * UInt64Rules describes the constraints applied to `uint64` values. These
1159
+ * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type.
1160
+ *
1161
+ * @generated from message buf.validate.UInt64Rules
1162
+ */
1163
+ export type UInt64Rules = Message<"buf.validate.UInt64Rules"> & {
1164
+ /**
1165
+ * `const` requires the field value to exactly match the specified value. If
1166
+ * the field value doesn't match, an error message is generated.
1167
+ *
1168
+ * ```proto
1169
+ * message MyUInt64 {
1170
+ * // value must equal 42
1171
+ * uint64 value = 1 [(buf.validate.field).uint64.const = 42];
1172
+ * }
1173
+ * ```
1174
+ *
1175
+ * @generated from field: optional uint64 const = 1 [jstype = JS_STRING];
1176
+ */
1177
+ const?: string;
1178
+
1179
+ /**
1180
+ * @generated from oneof buf.validate.UInt64Rules.less_than
1181
+ */
1182
+ lessThan: {
1183
+ /**
1184
+ * `lt` requires the field value to be less than the specified value (field <
1185
+ * value). If the field value is equal to or greater than the specified value,
1186
+ * an error message is generated.
1187
+ *
1188
+ * ```proto
1189
+ * message MyUInt64 {
1190
+ * // value must be less than 10
1191
+ * uint64 value = 1 [(buf.validate.field).uint64.lt = 10];
1192
+ * }
1193
+ * ```
1194
+ *
1195
+ * @generated from field: uint64 lt = 2 [jstype = JS_STRING];
1196
+ */
1197
+ value: string;
1198
+ case: "lt";
1199
+ } | {
1200
+ /**
1201
+ * `lte` requires the field value to be less than or equal to the specified
1202
+ * value (field <= value). If the field value is greater than the specified
1203
+ * value, an error message is generated.
1204
+ *
1205
+ * ```proto
1206
+ * message MyUInt64 {
1207
+ * // value must be less than or equal to 10
1208
+ * uint64 value = 1 [(buf.validate.field).uint64.lte = 10];
1209
+ * }
1210
+ * ```
1211
+ *
1212
+ * @generated from field: uint64 lte = 3 [jstype = JS_STRING];
1213
+ */
1214
+ value: string;
1215
+ case: "lte";
1216
+ } | { case: undefined; value?: undefined };
1217
+
1218
+ /**
1219
+ * @generated from oneof buf.validate.UInt64Rules.greater_than
1220
+ */
1221
+ greaterThan: {
1222
+ /**
1223
+ * `gt` requires the field value to be greater than the specified value
1224
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
1225
+ * `lte`, the range is reversed, and the field value must be outside the
1226
+ * specified range. If the field value doesn't meet the required conditions,
1227
+ * an error message is generated.
1228
+ *
1229
+ * ```proto
1230
+ * message MyUInt64 {
1231
+ * // value must be greater than 5 [uint64.gt]
1232
+ * uint64 value = 1 [(buf.validate.field).uint64.gt = 5];
1233
+ *
1234
+ * // value must be greater than 5 and less than 10 [uint64.gt_lt]
1235
+ * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }];
1236
+ *
1237
+ * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive]
1238
+ * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }];
1239
+ * }
1240
+ * ```
1241
+ *
1242
+ * @generated from field: uint64 gt = 4 [jstype = JS_STRING];
1243
+ */
1244
+ value: string;
1245
+ case: "gt";
1246
+ } | {
1247
+ /**
1248
+ * `gte` requires the field value to be greater than or equal to the specified
1249
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
1250
+ * or `lte`, the range is reversed, and the field value must be outside the
1251
+ * specified range. If the field value doesn't meet the required conditions,
1252
+ * an error message is generated.
1253
+ *
1254
+ * ```proto
1255
+ * message MyUInt64 {
1256
+ * // value must be greater than or equal to 5 [uint64.gte]
1257
+ * uint64 value = 1 [(buf.validate.field).uint64.gte = 5];
1258
+ *
1259
+ * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt]
1260
+ * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }];
1261
+ *
1262
+ * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive]
1263
+ * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }];
1264
+ * }
1265
+ * ```
1266
+ *
1267
+ * @generated from field: uint64 gte = 5 [jstype = JS_STRING];
1268
+ */
1269
+ value: string;
1270
+ case: "gte";
1271
+ } | { case: undefined; value?: undefined };
1272
+
1273
+ /**
1274
+ * `in` requires the field value to be equal to one of the specified values.
1275
+ * If the field value isn't one of the specified values, an error message is
1276
+ * generated.
1277
+ *
1278
+ * ```proto
1279
+ * message MyUInt64 {
1280
+ * // value must be in list [1, 2, 3]
1281
+ * repeated uint64 value = 1 (buf.validate.field).uint64 = { in: [1, 2, 3] };
1282
+ * }
1283
+ * ```
1284
+ *
1285
+ * @generated from field: repeated uint64 in = 6 [jstype = JS_STRING];
1286
+ */
1287
+ in: string[];
1288
+
1289
+ /**
1290
+ * `not_in` requires the field value to not be equal to any of the specified
1291
+ * values. If the field value is one of the specified values, an error
1292
+ * message is generated.
1293
+ *
1294
+ * ```proto
1295
+ * message MyUInt64 {
1296
+ * // value must not be in list [1, 2, 3]
1297
+ * repeated uint64 value = 1 (buf.validate.field).uint64 = { not_in: [1, 2, 3] };
1298
+ * }
1299
+ * ```
1300
+ *
1301
+ * @generated from field: repeated uint64 not_in = 7 [jstype = JS_STRING];
1302
+ */
1303
+ notIn: string[];
1304
+ };
1305
+
1306
+ /**
1307
+ * Describes the message buf.validate.UInt64Rules.
1308
+ * Use `create(UInt64RulesSchema)` to create a new message.
1309
+ */
1310
+ export const UInt64RulesSchema: GenMessage<UInt64Rules> = /*@__PURE__*/
1311
+ messageDesc(file_buf_validate_validate, 8);
1312
+
1313
+ /**
1314
+ * SInt32Rules describes the constraints applied to `sint32` values.
1315
+ *
1316
+ * @generated from message buf.validate.SInt32Rules
1317
+ */
1318
+ export type SInt32Rules = Message<"buf.validate.SInt32Rules"> & {
1319
+ /**
1320
+ * `const` requires the field value to exactly match the specified value. If
1321
+ * the field value doesn't match, an error message is generated.
1322
+ *
1323
+ * ```proto
1324
+ * message MySInt32 {
1325
+ * // value must equal 42
1326
+ * sint32 value = 1 [(buf.validate.field).sint32.const = 42];
1327
+ * }
1328
+ * ```
1329
+ *
1330
+ * @generated from field: optional sint32 const = 1;
1331
+ */
1332
+ const?: number;
1333
+
1334
+ /**
1335
+ * @generated from oneof buf.validate.SInt32Rules.less_than
1336
+ */
1337
+ lessThan: {
1338
+ /**
1339
+ * `lt` requires the field value to be less than the specified value (field
1340
+ * < value). If the field value is equal to or greater than the specified
1341
+ * value, an error message is generated.
1342
+ *
1343
+ * ```proto
1344
+ * message MySInt32 {
1345
+ * // value must be less than 10
1346
+ * sint32 value = 1 [(buf.validate.field).sint32.lt = 10];
1347
+ * }
1348
+ * ```
1349
+ *
1350
+ * @generated from field: sint32 lt = 2;
1351
+ */
1352
+ value: number;
1353
+ case: "lt";
1354
+ } | {
1355
+ /**
1356
+ * `lte` requires the field value to be less than or equal to the specified
1357
+ * value (field <= value). If the field value is greater than the specified
1358
+ * value, an error message is generated.
1359
+ *
1360
+ * ```proto
1361
+ * message MySInt32 {
1362
+ * // value must be less than or equal to 10
1363
+ * sint32 value = 1 [(buf.validate.field).sint32.lte = 10];
1364
+ * }
1365
+ * ```
1366
+ *
1367
+ * @generated from field: sint32 lte = 3;
1368
+ */
1369
+ value: number;
1370
+ case: "lte";
1371
+ } | { case: undefined; value?: undefined };
1372
+
1373
+ /**
1374
+ * @generated from oneof buf.validate.SInt32Rules.greater_than
1375
+ */
1376
+ greaterThan: {
1377
+ /**
1378
+ * `gt` requires the field value to be greater than the specified value
1379
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
1380
+ * `lte`, the range is reversed, and the field value must be outside the
1381
+ * specified range. If the field value doesn't meet the required conditions,
1382
+ * an error message is generated.
1383
+ *
1384
+ * ```proto
1385
+ * message MySInt32 {
1386
+ * // value must be greater than 5 [sint32.gt]
1387
+ * sint32 value = 1 [(buf.validate.field).sint32.gt = 5];
1388
+ *
1389
+ * // value must be greater than 5 and less than 10 [sint32.gt_lt]
1390
+ * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }];
1391
+ *
1392
+ * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive]
1393
+ * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }];
1394
+ * }
1395
+ * ```
1396
+ *
1397
+ * @generated from field: sint32 gt = 4;
1398
+ */
1399
+ value: number;
1400
+ case: "gt";
1401
+ } | {
1402
+ /**
1403
+ * `gte` requires the field value to be greater than or equal to the specified
1404
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
1405
+ * or `lte`, the range is reversed, and the field value must be outside the
1406
+ * specified range. If the field value doesn't meet the required conditions,
1407
+ * an error message is generated.
1408
+ *
1409
+ * ```proto
1410
+ * message MySInt32 {
1411
+ * // value must be greater than or equal to 5 [sint32.gte]
1412
+ * sint32 value = 1 [(buf.validate.field).sint32.gte = 5];
1413
+ *
1414
+ * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt]
1415
+ * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }];
1416
+ *
1417
+ * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive]
1418
+ * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }];
1419
+ * }
1420
+ * ```
1421
+ *
1422
+ * @generated from field: sint32 gte = 5;
1423
+ */
1424
+ value: number;
1425
+ case: "gte";
1426
+ } | { case: undefined; value?: undefined };
1427
+
1428
+ /**
1429
+ * `in` requires the field value to be equal to one of the specified values.
1430
+ * If the field value isn't one of the specified values, an error message is
1431
+ * generated.
1432
+ *
1433
+ * ```proto
1434
+ * message MySInt32 {
1435
+ * // value must be in list [1, 2, 3]
1436
+ * repeated sint32 value = 1 (buf.validate.field).sint32 = { in: [1, 2, 3] };
1437
+ * }
1438
+ * ```
1439
+ *
1440
+ * @generated from field: repeated sint32 in = 6;
1441
+ */
1442
+ in: number[];
1443
+
1444
+ /**
1445
+ * `not_in` requires the field value to not be equal to any of the specified
1446
+ * values. If the field value is one of the specified values, an error
1447
+ * message is generated.
1448
+ *
1449
+ * ```proto
1450
+ * message MySInt32 {
1451
+ * // value must not be in list [1, 2, 3]
1452
+ * repeated sint32 value = 1 (buf.validate.field).sint32 = { not_in: [1, 2, 3] };
1453
+ * }
1454
+ * ```
1455
+ *
1456
+ * @generated from field: repeated sint32 not_in = 7;
1457
+ */
1458
+ notIn: number[];
1459
+ };
1460
+
1461
+ /**
1462
+ * Describes the message buf.validate.SInt32Rules.
1463
+ * Use `create(SInt32RulesSchema)` to create a new message.
1464
+ */
1465
+ export const SInt32RulesSchema: GenMessage<SInt32Rules> = /*@__PURE__*/
1466
+ messageDesc(file_buf_validate_validate, 9);
1467
+
1468
+ /**
1469
+ * SInt64Rules describes the constraints applied to `sint64` values.
1470
+ *
1471
+ * @generated from message buf.validate.SInt64Rules
1472
+ */
1473
+ export type SInt64Rules = Message<"buf.validate.SInt64Rules"> & {
1474
+ /**
1475
+ * `const` requires the field value to exactly match the specified value. If
1476
+ * the field value doesn't match, an error message is generated.
1477
+ *
1478
+ * ```proto
1479
+ * message MySInt64 {
1480
+ * // value must equal 42
1481
+ * sint64 value = 1 [(buf.validate.field).sint64.const = 42];
1482
+ * }
1483
+ * ```
1484
+ *
1485
+ * @generated from field: optional sint64 const = 1 [jstype = JS_STRING];
1486
+ */
1487
+ const?: string;
1488
+
1489
+ /**
1490
+ * @generated from oneof buf.validate.SInt64Rules.less_than
1491
+ */
1492
+ lessThan: {
1493
+ /**
1494
+ * `lt` requires the field value to be less than the specified value (field
1495
+ * < value). If the field value is equal to or greater than the specified
1496
+ * value, an error message is generated.
1497
+ *
1498
+ * ```proto
1499
+ * message MySInt64 {
1500
+ * // value must be less than 10
1501
+ * sint64 value = 1 [(buf.validate.field).sint64.lt = 10];
1502
+ * }
1503
+ * ```
1504
+ *
1505
+ * @generated from field: sint64 lt = 2 [jstype = JS_STRING];
1506
+ */
1507
+ value: string;
1508
+ case: "lt";
1509
+ } | {
1510
+ /**
1511
+ * `lte` requires the field value to be less than or equal to the specified
1512
+ * value (field <= value). If the field value is greater than the specified
1513
+ * value, an error message is generated.
1514
+ *
1515
+ * ```proto
1516
+ * message MySInt64 {
1517
+ * // value must be less than or equal to 10
1518
+ * sint64 value = 1 [(buf.validate.field).sint64.lte = 10];
1519
+ * }
1520
+ * ```
1521
+ *
1522
+ * @generated from field: sint64 lte = 3 [jstype = JS_STRING];
1523
+ */
1524
+ value: string;
1525
+ case: "lte";
1526
+ } | { case: undefined; value?: undefined };
1527
+
1528
+ /**
1529
+ * @generated from oneof buf.validate.SInt64Rules.greater_than
1530
+ */
1531
+ greaterThan: {
1532
+ /**
1533
+ * `gt` requires the field value to be greater than the specified value
1534
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
1535
+ * `lte`, the range is reversed, and the field value must be outside the
1536
+ * specified range. If the field value doesn't meet the required conditions,
1537
+ * an error message is generated.
1538
+ *
1539
+ * ```proto
1540
+ * message MySInt64 {
1541
+ * // value must be greater than 5 [sint64.gt]
1542
+ * sint64 value = 1 [(buf.validate.field).sint64.gt = 5];
1543
+ *
1544
+ * // value must be greater than 5 and less than 10 [sint64.gt_lt]
1545
+ * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }];
1546
+ *
1547
+ * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive]
1548
+ * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }];
1549
+ * }
1550
+ * ```
1551
+ *
1552
+ * @generated from field: sint64 gt = 4 [jstype = JS_STRING];
1553
+ */
1554
+ value: string;
1555
+ case: "gt";
1556
+ } | {
1557
+ /**
1558
+ * `gte` requires the field value to be greater than or equal to the specified
1559
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
1560
+ * or `lte`, the range is reversed, and the field value must be outside the
1561
+ * specified range. If the field value doesn't meet the required conditions,
1562
+ * an error message is generated.
1563
+ *
1564
+ * ```proto
1565
+ * message MySInt64 {
1566
+ * // value must be greater than or equal to 5 [sint64.gte]
1567
+ * sint64 value = 1 [(buf.validate.field).sint64.gte = 5];
1568
+ *
1569
+ * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt]
1570
+ * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }];
1571
+ *
1572
+ * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive]
1573
+ * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }];
1574
+ * }
1575
+ * ```
1576
+ *
1577
+ * @generated from field: sint64 gte = 5 [jstype = JS_STRING];
1578
+ */
1579
+ value: string;
1580
+ case: "gte";
1581
+ } | { case: undefined; value?: undefined };
1582
+
1583
+ /**
1584
+ * `in` requires the field value to be equal to one of the specified values.
1585
+ * If the field value isn't one of the specified values, an error message
1586
+ * is generated.
1587
+ *
1588
+ * ```proto
1589
+ * message MySInt64 {
1590
+ * // value must be in list [1, 2, 3]
1591
+ * repeated sint64 value = 1 (buf.validate.field).sint64 = { in: [1, 2, 3] };
1592
+ * }
1593
+ * ```
1594
+ *
1595
+ * @generated from field: repeated sint64 in = 6 [jstype = JS_STRING];
1596
+ */
1597
+ in: string[];
1598
+
1599
+ /**
1600
+ * `not_in` requires the field value to not be equal to any of the specified
1601
+ * values. If the field value is one of the specified values, an error
1602
+ * message is generated.
1603
+ *
1604
+ * ```proto
1605
+ * message MySInt64 {
1606
+ * // value must not be in list [1, 2, 3]
1607
+ * repeated sint64 value = 1 (buf.validate.field).sint64 = { not_in: [1, 2, 3] };
1608
+ * }
1609
+ * ```
1610
+ *
1611
+ * @generated from field: repeated sint64 not_in = 7 [jstype = JS_STRING];
1612
+ */
1613
+ notIn: string[];
1614
+ };
1615
+
1616
+ /**
1617
+ * Describes the message buf.validate.SInt64Rules.
1618
+ * Use `create(SInt64RulesSchema)` to create a new message.
1619
+ */
1620
+ export const SInt64RulesSchema: GenMessage<SInt64Rules> = /*@__PURE__*/
1621
+ messageDesc(file_buf_validate_validate, 10);
1622
+
1623
+ /**
1624
+ * Fixed32Rules describes the constraints applied to `fixed32` values.
1625
+ *
1626
+ * @generated from message buf.validate.Fixed32Rules
1627
+ */
1628
+ export type Fixed32Rules = Message<"buf.validate.Fixed32Rules"> & {
1629
+ /**
1630
+ * `const` requires the field value to exactly match the specified value.
1631
+ * If the field value doesn't match, an error message is generated.
1632
+ *
1633
+ * ```proto
1634
+ * message MyFixed32 {
1635
+ * // value must equal 42
1636
+ * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42];
1637
+ * }
1638
+ * ```
1639
+ *
1640
+ * @generated from field: optional fixed32 const = 1;
1641
+ */
1642
+ const?: number;
1643
+
1644
+ /**
1645
+ * @generated from oneof buf.validate.Fixed32Rules.less_than
1646
+ */
1647
+ lessThan: {
1648
+ /**
1649
+ * `lt` requires the field value to be less than the specified value (field <
1650
+ * value). If the field value is equal to or greater than the specified value,
1651
+ * an error message is generated.
1652
+ *
1653
+ * ```proto
1654
+ * message MyFixed32 {
1655
+ * // value must be less than 10
1656
+ * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10];
1657
+ * }
1658
+ * ```
1659
+ *
1660
+ * @generated from field: fixed32 lt = 2;
1661
+ */
1662
+ value: number;
1663
+ case: "lt";
1664
+ } | {
1665
+ /**
1666
+ * `lte` requires the field value to be less than or equal to the specified
1667
+ * value (field <= value). If the field value is greater than the specified
1668
+ * value, an error message is generated.
1669
+ *
1670
+ * ```proto
1671
+ * message MyFixed32 {
1672
+ * // value must be less than or equal to 10
1673
+ * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10];
1674
+ * }
1675
+ * ```
1676
+ *
1677
+ * @generated from field: fixed32 lte = 3;
1678
+ */
1679
+ value: number;
1680
+ case: "lte";
1681
+ } | { case: undefined; value?: undefined };
1682
+
1683
+ /**
1684
+ * @generated from oneof buf.validate.Fixed32Rules.greater_than
1685
+ */
1686
+ greaterThan: {
1687
+ /**
1688
+ * `gt` requires the field value to be greater than the specified value
1689
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
1690
+ * `lte`, the range is reversed, and the field value must be outside the
1691
+ * specified range. If the field value doesn't meet the required conditions,
1692
+ * an error message is generated.
1693
+ *
1694
+ * ```proto
1695
+ * message MyFixed32 {
1696
+ * // value must be greater than 5 [fixed32.gt]
1697
+ * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5];
1698
+ *
1699
+ * // value must be greater than 5 and less than 10 [fixed32.gt_lt]
1700
+ * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }];
1701
+ *
1702
+ * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive]
1703
+ * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }];
1704
+ * }
1705
+ * ```
1706
+ *
1707
+ * @generated from field: fixed32 gt = 4;
1708
+ */
1709
+ value: number;
1710
+ case: "gt";
1711
+ } | {
1712
+ /**
1713
+ * `gte` requires the field value to be greater than or equal to the specified
1714
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
1715
+ * or `lte`, the range is reversed, and the field value must be outside the
1716
+ * specified range. If the field value doesn't meet the required conditions,
1717
+ * an error message is generated.
1718
+ *
1719
+ * ```proto
1720
+ * message MyFixed32 {
1721
+ * // value must be greater than or equal to 5 [fixed32.gte]
1722
+ * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5];
1723
+ *
1724
+ * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt]
1725
+ * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }];
1726
+ *
1727
+ * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive]
1728
+ * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }];
1729
+ * }
1730
+ * ```
1731
+ *
1732
+ * @generated from field: fixed32 gte = 5;
1733
+ */
1734
+ value: number;
1735
+ case: "gte";
1736
+ } | { case: undefined; value?: undefined };
1737
+
1738
+ /**
1739
+ * `in` requires the field value to be equal to one of the specified values.
1740
+ * If the field value isn't one of the specified values, an error message
1741
+ * is generated.
1742
+ *
1743
+ * ```proto
1744
+ * message MyFixed32 {
1745
+ * // value must be in list [1, 2, 3]
1746
+ * repeated fixed32 value = 1 (buf.validate.field).fixed32 = { in: [1, 2, 3] };
1747
+ * }
1748
+ * ```
1749
+ *
1750
+ * @generated from field: repeated fixed32 in = 6;
1751
+ */
1752
+ in: number[];
1753
+
1754
+ /**
1755
+ * `not_in` requires the field value to not be equal to any of the specified
1756
+ * values. If the field value is one of the specified values, an error
1757
+ * message is generated.
1758
+ *
1759
+ * ```proto
1760
+ * message MyFixed32 {
1761
+ * // value must not be in list [1, 2, 3]
1762
+ * repeated fixed32 value = 1 (buf.validate.field).fixed32 = { not_in: [1, 2, 3] };
1763
+ * }
1764
+ * ```
1765
+ *
1766
+ * @generated from field: repeated fixed32 not_in = 7;
1767
+ */
1768
+ notIn: number[];
1769
+ };
1770
+
1771
+ /**
1772
+ * Describes the message buf.validate.Fixed32Rules.
1773
+ * Use `create(Fixed32RulesSchema)` to create a new message.
1774
+ */
1775
+ export const Fixed32RulesSchema: GenMessage<Fixed32Rules> = /*@__PURE__*/
1776
+ messageDesc(file_buf_validate_validate, 11);
1777
+
1778
+ /**
1779
+ * Fixed64Rules describes the constraints applied to `fixed64` values.
1780
+ *
1781
+ * @generated from message buf.validate.Fixed64Rules
1782
+ */
1783
+ export type Fixed64Rules = Message<"buf.validate.Fixed64Rules"> & {
1784
+ /**
1785
+ * `const` requires the field value to exactly match the specified value. If
1786
+ * the field value doesn't match, an error message is generated.
1787
+ *
1788
+ * ```proto
1789
+ * message MyFixed64 {
1790
+ * // value must equal 42
1791
+ * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42];
1792
+ * }
1793
+ * ```
1794
+ *
1795
+ * @generated from field: optional fixed64 const = 1 [jstype = JS_STRING];
1796
+ */
1797
+ const?: string;
1798
+
1799
+ /**
1800
+ * @generated from oneof buf.validate.Fixed64Rules.less_than
1801
+ */
1802
+ lessThan: {
1803
+ /**
1804
+ * `lt` requires the field value to be less than the specified value (field <
1805
+ * value). If the field value is equal to or greater than the specified value,
1806
+ * an error message is generated.
1807
+ *
1808
+ * ```proto
1809
+ * message MyFixed64 {
1810
+ * // value must be less than 10
1811
+ * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10];
1812
+ * }
1813
+ * ```
1814
+ *
1815
+ * @generated from field: fixed64 lt = 2 [jstype = JS_STRING];
1816
+ */
1817
+ value: string;
1818
+ case: "lt";
1819
+ } | {
1820
+ /**
1821
+ * `lte` requires the field value to be less than or equal to the specified
1822
+ * value (field <= value). If the field value is greater than the specified
1823
+ * value, an error message is generated.
1824
+ *
1825
+ * ```proto
1826
+ * message MyFixed64 {
1827
+ * // value must be less than or equal to 10
1828
+ * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10];
1829
+ * }
1830
+ * ```
1831
+ *
1832
+ * @generated from field: fixed64 lte = 3 [jstype = JS_STRING];
1833
+ */
1834
+ value: string;
1835
+ case: "lte";
1836
+ } | { case: undefined; value?: undefined };
1837
+
1838
+ /**
1839
+ * @generated from oneof buf.validate.Fixed64Rules.greater_than
1840
+ */
1841
+ greaterThan: {
1842
+ /**
1843
+ * `gt` requires the field value to be greater than the specified value
1844
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
1845
+ * `lte`, the range is reversed, and the field value must be outside the
1846
+ * specified range. If the field value doesn't meet the required conditions,
1847
+ * an error message is generated.
1848
+ *
1849
+ * ```proto
1850
+ * message MyFixed64 {
1851
+ * // value must be greater than 5 [fixed64.gt]
1852
+ * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5];
1853
+ *
1854
+ * // value must be greater than 5 and less than 10 [fixed64.gt_lt]
1855
+ * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }];
1856
+ *
1857
+ * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive]
1858
+ * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }];
1859
+ * }
1860
+ * ```
1861
+ *
1862
+ * @generated from field: fixed64 gt = 4 [jstype = JS_STRING];
1863
+ */
1864
+ value: string;
1865
+ case: "gt";
1866
+ } | {
1867
+ /**
1868
+ * `gte` requires the field value to be greater than or equal to the specified
1869
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
1870
+ * or `lte`, the range is reversed, and the field value must be outside the
1871
+ * specified range. If the field value doesn't meet the required conditions,
1872
+ * an error message is generated.
1873
+ *
1874
+ * ```proto
1875
+ * message MyFixed64 {
1876
+ * // value must be greater than or equal to 5 [fixed64.gte]
1877
+ * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5];
1878
+ *
1879
+ * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt]
1880
+ * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }];
1881
+ *
1882
+ * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive]
1883
+ * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }];
1884
+ * }
1885
+ * ```
1886
+ *
1887
+ * @generated from field: fixed64 gte = 5 [jstype = JS_STRING];
1888
+ */
1889
+ value: string;
1890
+ case: "gte";
1891
+ } | { case: undefined; value?: undefined };
1892
+
1893
+ /**
1894
+ * `in` requires the field value to be equal to one of the specified values.
1895
+ * If the field value isn't one of the specified values, an error message is
1896
+ * generated.
1897
+ *
1898
+ * ```proto
1899
+ * message MyFixed64 {
1900
+ * // value must be in list [1, 2, 3]
1901
+ * repeated fixed64 value = 1 (buf.validate.field).fixed64 = { in: [1, 2, 3] };
1902
+ * }
1903
+ * ```
1904
+ *
1905
+ * @generated from field: repeated fixed64 in = 6 [jstype = JS_STRING];
1906
+ */
1907
+ in: string[];
1908
+
1909
+ /**
1910
+ * `not_in` requires the field value to not be equal to any of the specified
1911
+ * values. If the field value is one of the specified values, an error
1912
+ * message is generated.
1913
+ *
1914
+ * ```proto
1915
+ * message MyFixed64 {
1916
+ * // value must not be in list [1, 2, 3]
1917
+ * repeated fixed64 value = 1 (buf.validate.field).fixed64 = { not_in: [1, 2, 3] };
1918
+ * }
1919
+ * ```
1920
+ *
1921
+ * @generated from field: repeated fixed64 not_in = 7 [jstype = JS_STRING];
1922
+ */
1923
+ notIn: string[];
1924
+ };
1925
+
1926
+ /**
1927
+ * Describes the message buf.validate.Fixed64Rules.
1928
+ * Use `create(Fixed64RulesSchema)` to create a new message.
1929
+ */
1930
+ export const Fixed64RulesSchema: GenMessage<Fixed64Rules> = /*@__PURE__*/
1931
+ messageDesc(file_buf_validate_validate, 12);
1932
+
1933
+ /**
1934
+ * SFixed32Rules describes the constraints applied to `fixed32` values.
1935
+ *
1936
+ * @generated from message buf.validate.SFixed32Rules
1937
+ */
1938
+ export type SFixed32Rules = Message<"buf.validate.SFixed32Rules"> & {
1939
+ /**
1940
+ * `const` requires the field value to exactly match the specified value. If
1941
+ * the field value doesn't match, an error message is generated.
1942
+ *
1943
+ * ```proto
1944
+ * message MySFixed32 {
1945
+ * // value must equal 42
1946
+ * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42];
1947
+ * }
1948
+ * ```
1949
+ *
1950
+ * @generated from field: optional sfixed32 const = 1;
1951
+ */
1952
+ const?: number;
1953
+
1954
+ /**
1955
+ * @generated from oneof buf.validate.SFixed32Rules.less_than
1956
+ */
1957
+ lessThan: {
1958
+ /**
1959
+ * `lt` requires the field value to be less than the specified value (field <
1960
+ * value). If the field value is equal to or greater than the specified value,
1961
+ * an error message is generated.
1962
+ *
1963
+ * ```proto
1964
+ * message MySFixed32 {
1965
+ * // value must be less than 10
1966
+ * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10];
1967
+ * }
1968
+ * ```
1969
+ *
1970
+ * @generated from field: sfixed32 lt = 2;
1971
+ */
1972
+ value: number;
1973
+ case: "lt";
1974
+ } | {
1975
+ /**
1976
+ * `lte` requires the field value to be less than or equal to the specified
1977
+ * value (field <= value). If the field value is greater than the specified
1978
+ * value, an error message is generated.
1979
+ *
1980
+ * ```proto
1981
+ * message MySFixed32 {
1982
+ * // value must be less than or equal to 10
1983
+ * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10];
1984
+ * }
1985
+ * ```
1986
+ *
1987
+ * @generated from field: sfixed32 lte = 3;
1988
+ */
1989
+ value: number;
1990
+ case: "lte";
1991
+ } | { case: undefined; value?: undefined };
1992
+
1993
+ /**
1994
+ * @generated from oneof buf.validate.SFixed32Rules.greater_than
1995
+ */
1996
+ greaterThan: {
1997
+ /**
1998
+ * `gt` requires the field value to be greater than the specified value
1999
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
2000
+ * `lte`, the range is reversed, and the field value must be outside the
2001
+ * specified range. If the field value doesn't meet the required conditions,
2002
+ * an error message is generated.
2003
+ *
2004
+ * ```proto
2005
+ * message MySFixed32 {
2006
+ * // value must be greater than 5 [sfixed32.gt]
2007
+ * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5];
2008
+ *
2009
+ * // value must be greater than 5 and less than 10 [sfixed32.gt_lt]
2010
+ * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }];
2011
+ *
2012
+ * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive]
2013
+ * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }];
2014
+ * }
2015
+ * ```
2016
+ *
2017
+ * @generated from field: sfixed32 gt = 4;
2018
+ */
2019
+ value: number;
2020
+ case: "gt";
2021
+ } | {
2022
+ /**
2023
+ * `gte` requires the field value to be greater than or equal to the specified
2024
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
2025
+ * or `lte`, the range is reversed, and the field value must be outside the
2026
+ * specified range. If the field value doesn't meet the required conditions,
2027
+ * an error message is generated.
2028
+ *
2029
+ * ```proto
2030
+ * message MySFixed32 {
2031
+ * // value must be greater than or equal to 5 [sfixed32.gte]
2032
+ * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5];
2033
+ *
2034
+ * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt]
2035
+ * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }];
2036
+ *
2037
+ * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive]
2038
+ * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }];
2039
+ * }
2040
+ * ```
2041
+ *
2042
+ * @generated from field: sfixed32 gte = 5;
2043
+ */
2044
+ value: number;
2045
+ case: "gte";
2046
+ } | { case: undefined; value?: undefined };
2047
+
2048
+ /**
2049
+ * `in` requires the field value to be equal to one of the specified values.
2050
+ * If the field value isn't one of the specified values, an error message is
2051
+ * generated.
2052
+ *
2053
+ * ```proto
2054
+ * message MySFixed32 {
2055
+ * // value must be in list [1, 2, 3]
2056
+ * repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { in: [1, 2, 3] };
2057
+ * }
2058
+ * ```
2059
+ *
2060
+ * @generated from field: repeated sfixed32 in = 6;
2061
+ */
2062
+ in: number[];
2063
+
2064
+ /**
2065
+ * `not_in` requires the field value to not be equal to any of the specified
2066
+ * values. If the field value is one of the specified values, an error
2067
+ * message is generated.
2068
+ *
2069
+ * ```proto
2070
+ * message MySFixed32 {
2071
+ * // value must not be in list [1, 2, 3]
2072
+ * repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { not_in: [1, 2, 3] };
2073
+ * }
2074
+ * ```
2075
+ *
2076
+ * @generated from field: repeated sfixed32 not_in = 7;
2077
+ */
2078
+ notIn: number[];
2079
+ };
2080
+
2081
+ /**
2082
+ * Describes the message buf.validate.SFixed32Rules.
2083
+ * Use `create(SFixed32RulesSchema)` to create a new message.
2084
+ */
2085
+ export const SFixed32RulesSchema: GenMessage<SFixed32Rules> = /*@__PURE__*/
2086
+ messageDesc(file_buf_validate_validate, 13);
2087
+
2088
+ /**
2089
+ * SFixed64Rules describes the constraints applied to `fixed64` values.
2090
+ *
2091
+ * @generated from message buf.validate.SFixed64Rules
2092
+ */
2093
+ export type SFixed64Rules = Message<"buf.validate.SFixed64Rules"> & {
2094
+ /**
2095
+ * `const` requires the field value to exactly match the specified value. If
2096
+ * the field value doesn't match, an error message is generated.
2097
+ *
2098
+ * ```proto
2099
+ * message MySFixed64 {
2100
+ * // value must equal 42
2101
+ * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42];
2102
+ * }
2103
+ * ```
2104
+ *
2105
+ * @generated from field: optional sfixed64 const = 1 [jstype = JS_STRING];
2106
+ */
2107
+ const?: string;
2108
+
2109
+ /**
2110
+ * @generated from oneof buf.validate.SFixed64Rules.less_than
2111
+ */
2112
+ lessThan: {
2113
+ /**
2114
+ * `lt` requires the field value to be less than the specified value (field <
2115
+ * value). If the field value is equal to or greater than the specified value,
2116
+ * an error message is generated.
2117
+ *
2118
+ * ```proto
2119
+ * message MySFixed64 {
2120
+ * // value must be less than 10
2121
+ * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10];
2122
+ * }
2123
+ * ```
2124
+ *
2125
+ * @generated from field: sfixed64 lt = 2 [jstype = JS_STRING];
2126
+ */
2127
+ value: string;
2128
+ case: "lt";
2129
+ } | {
2130
+ /**
2131
+ * `lte` requires the field value to be less than or equal to the specified
2132
+ * value (field <= value). If the field value is greater than the specified
2133
+ * value, an error message is generated.
2134
+ *
2135
+ * ```proto
2136
+ * message MySFixed64 {
2137
+ * // value must be less than or equal to 10
2138
+ * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10];
2139
+ * }
2140
+ * ```
2141
+ *
2142
+ * @generated from field: sfixed64 lte = 3 [jstype = JS_STRING];
2143
+ */
2144
+ value: string;
2145
+ case: "lte";
2146
+ } | { case: undefined; value?: undefined };
2147
+
2148
+ /**
2149
+ * @generated from oneof buf.validate.SFixed64Rules.greater_than
2150
+ */
2151
+ greaterThan: {
2152
+ /**
2153
+ * `gt` requires the field value to be greater than the specified value
2154
+ * (exclusive). If the value of `gt` is larger than a specified `lt` or
2155
+ * `lte`, the range is reversed, and the field value must be outside the
2156
+ * specified range. If the field value doesn't meet the required conditions,
2157
+ * an error message is generated.
2158
+ *
2159
+ * ```proto
2160
+ * message MySFixed64 {
2161
+ * // value must be greater than 5 [sfixed64.gt]
2162
+ * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5];
2163
+ *
2164
+ * // value must be greater than 5 and less than 10 [sfixed64.gt_lt]
2165
+ * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }];
2166
+ *
2167
+ * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive]
2168
+ * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }];
2169
+ * }
2170
+ * ```
2171
+ *
2172
+ * @generated from field: sfixed64 gt = 4 [jstype = JS_STRING];
2173
+ */
2174
+ value: string;
2175
+ case: "gt";
2176
+ } | {
2177
+ /**
2178
+ * `gte` requires the field value to be greater than or equal to the specified
2179
+ * value (exclusive). If the value of `gte` is larger than a specified `lt`
2180
+ * or `lte`, the range is reversed, and the field value must be outside the
2181
+ * specified range. If the field value doesn't meet the required conditions,
2182
+ * an error message is generated.
2183
+ *
2184
+ * ```proto
2185
+ * message MySFixed64 {
2186
+ * // value must be greater than or equal to 5 [sfixed64.gte]
2187
+ * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5];
2188
+ *
2189
+ * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt]
2190
+ * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }];
2191
+ *
2192
+ * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive]
2193
+ * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }];
2194
+ * }
2195
+ * ```
2196
+ *
2197
+ * @generated from field: sfixed64 gte = 5 [jstype = JS_STRING];
2198
+ */
2199
+ value: string;
2200
+ case: "gte";
2201
+ } | { case: undefined; value?: undefined };
2202
+
2203
+ /**
2204
+ * `in` requires the field value to be equal to one of the specified values.
2205
+ * If the field value isn't one of the specified values, an error message is
2206
+ * generated.
2207
+ *
2208
+ * ```proto
2209
+ * message MySFixed64 {
2210
+ * // value must be in list [1, 2, 3]
2211
+ * repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { in: [1, 2, 3] };
2212
+ * }
2213
+ * ```
2214
+ *
2215
+ * @generated from field: repeated sfixed64 in = 6 [jstype = JS_STRING];
2216
+ */
2217
+ in: string[];
2218
+
2219
+ /**
2220
+ * `not_in` requires the field value to not be equal to any of the specified
2221
+ * values. If the field value is one of the specified values, an error
2222
+ * message is generated.
2223
+ *
2224
+ * ```proto
2225
+ * message MySFixed64 {
2226
+ * // value must not be in list [1, 2, 3]
2227
+ * repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { not_in: [1, 2, 3] };
2228
+ * }
2229
+ * ```
2230
+ *
2231
+ * @generated from field: repeated sfixed64 not_in = 7 [jstype = JS_STRING];
2232
+ */
2233
+ notIn: string[];
2234
+ };
2235
+
2236
+ /**
2237
+ * Describes the message buf.validate.SFixed64Rules.
2238
+ * Use `create(SFixed64RulesSchema)` to create a new message.
2239
+ */
2240
+ export const SFixed64RulesSchema: GenMessage<SFixed64Rules> = /*@__PURE__*/
2241
+ messageDesc(file_buf_validate_validate, 14);
2242
+
2243
+ /**
2244
+ * BoolRules describes the constraints applied to `bool` values. These rules
2245
+ * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type.
2246
+ *
2247
+ * @generated from message buf.validate.BoolRules
2248
+ */
2249
+ export type BoolRules = Message<"buf.validate.BoolRules"> & {
2250
+ /**
2251
+ * `const` requires the field value to exactly match the specified boolean value.
2252
+ * If the field value doesn't match, an error message is generated.
2253
+ *
2254
+ * ```proto
2255
+ * message MyBool {
2256
+ * // value must equal true
2257
+ * bool value = 1 [(buf.validate.field).bool.const = true];
2258
+ * }
2259
+ * ```
2260
+ *
2261
+ * @generated from field: optional bool const = 1;
2262
+ */
2263
+ const?: boolean;
2264
+ };
2265
+
2266
+ /**
2267
+ * Describes the message buf.validate.BoolRules.
2268
+ * Use `create(BoolRulesSchema)` to create a new message.
2269
+ */
2270
+ export const BoolRulesSchema: GenMessage<BoolRules> = /*@__PURE__*/
2271
+ messageDesc(file_buf_validate_validate, 15);
2272
+
2273
+ /**
2274
+ * StringRules describes the constraints applied to `string` values These
2275
+ * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type.
2276
+ *
2277
+ * @generated from message buf.validate.StringRules
2278
+ */
2279
+ export type StringRules = Message<"buf.validate.StringRules"> & {
2280
+ /**
2281
+ * `const` requires the field value to exactly match the specified value. If
2282
+ * the field value doesn't match, an error message is generated.
2283
+ *
2284
+ * ```proto
2285
+ * message MyString {
2286
+ * // value must equal `hello`
2287
+ * string value = 1 [(buf.validate.field).string.const = "hello"];
2288
+ * }
2289
+ * ```
2290
+ *
2291
+ * @generated from field: optional string const = 1;
2292
+ */
2293
+ const?: string;
2294
+
2295
+ /**
2296
+ * `len` dictates that the field value must have the specified
2297
+ * number of characters (Unicode code points), which may differ from the number
2298
+ * of bytes in the string. If the field value does not meet the specified
2299
+ * length, an error message will be generated.
2300
+ *
2301
+ * ```proto
2302
+ * message MyString {
2303
+ * // value length must be 5 characters
2304
+ * string value = 1 [(buf.validate.field).string.len = 5];
2305
+ * }
2306
+ * ```
2307
+ *
2308
+ * @generated from field: optional uint64 len = 19 [jstype = JS_STRING];
2309
+ */
2310
+ len?: string;
2311
+
2312
+ /**
2313
+ * `min_len` specifies that the field value must have at least the specified
2314
+ * number of characters (Unicode code points), which may differ from the number
2315
+ * of bytes in the string. If the field value contains fewer characters, an error
2316
+ * message will be generated.
2317
+ *
2318
+ * ```proto
2319
+ * message MyString {
2320
+ * // value length must be at least 3 characters
2321
+ * string value = 1 [(buf.validate.field).string.min_len = 3];
2322
+ * }
2323
+ * ```
2324
+ *
2325
+ * @generated from field: optional uint64 min_len = 2 [jstype = JS_STRING];
2326
+ */
2327
+ minLen?: string;
2328
+
2329
+ /**
2330
+ * `max_len` specifies that the field value must have no more than the specified
2331
+ * number of characters (Unicode code points), which may differ from the
2332
+ * number of bytes in the string. If the field value contains more characters,
2333
+ * an error message will be generated.
2334
+ *
2335
+ * ```proto
2336
+ * message MyString {
2337
+ * // value length must be at most 10 characters
2338
+ * string value = 1 [(buf.validate.field).string.max_len = 10];
2339
+ * }
2340
+ * ```
2341
+ *
2342
+ * @generated from field: optional uint64 max_len = 3 [jstype = JS_STRING];
2343
+ */
2344
+ maxLen?: string;
2345
+
2346
+ /**
2347
+ * `len_bytes` dictates that the field value must have the specified number of
2348
+ * bytes. If the field value does not match the specified length in bytes,
2349
+ * an error message will be generated.
2350
+ *
2351
+ * ```proto
2352
+ * message MyString {
2353
+ * // value length must be 6 bytes
2354
+ * string value = 1 [(buf.validate.field).string.len_bytes = 6];
2355
+ * }
2356
+ * ```
2357
+ *
2358
+ * @generated from field: optional uint64 len_bytes = 20 [jstype = JS_STRING];
2359
+ */
2360
+ lenBytes?: string;
2361
+
2362
+ /**
2363
+ * `min_bytes` specifies that the field value must have at least the specified
2364
+ * number of bytes. If the field value contains fewer bytes, an error message
2365
+ * will be generated.
2366
+ *
2367
+ * ```proto
2368
+ * message MyString {
2369
+ * // value length must be at least 4 bytes
2370
+ * string value = 1 [(buf.validate.field).string.min_bytes = 4];
2371
+ * }
2372
+ *
2373
+ * ```
2374
+ *
2375
+ * @generated from field: optional uint64 min_bytes = 4 [jstype = JS_STRING];
2376
+ */
2377
+ minBytes?: string;
2378
+
2379
+ /**
2380
+ * `max_bytes` specifies that the field value must have no more than the
2381
+ * specified number of bytes. If the field value contains more bytes, an
2382
+ * error message will be generated.
2383
+ *
2384
+ * ```proto
2385
+ * message MyString {
2386
+ * // value length must be at most 8 bytes
2387
+ * string value = 1 [(buf.validate.field).string.max_bytes = 8];
2388
+ * }
2389
+ * ```
2390
+ *
2391
+ * @generated from field: optional uint64 max_bytes = 5 [jstype = JS_STRING];
2392
+ */
2393
+ maxBytes?: string;
2394
+
2395
+ /**
2396
+ * `pattern` specifies that the field value must match the specified
2397
+ * regular expression (RE2 syntax), with the expression provided without any
2398
+ * delimiters. If the field value doesn't match the regular expression, an
2399
+ * error message will be generated.
2400
+ *
2401
+ * ```proto
2402
+ * message MyString {
2403
+ * // value does not match regex pattern `^[a-zA-Z]//$`
2404
+ * string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"];
2405
+ * }
2406
+ * ```
2407
+ *
2408
+ * @generated from field: optional string pattern = 6;
2409
+ */
2410
+ pattern?: string;
2411
+
2412
+ /**
2413
+ * `prefix` specifies that the field value must have the
2414
+ * specified substring at the beginning of the string. If the field value
2415
+ * doesn't start with the specified prefix, an error message will be
2416
+ * generated.
2417
+ *
2418
+ * ```proto
2419
+ * message MyString {
2420
+ * // value does not have prefix `pre`
2421
+ * string value = 1 [(buf.validate.field).string.prefix = "pre"];
2422
+ * }
2423
+ * ```
2424
+ *
2425
+ * @generated from field: optional string prefix = 7;
2426
+ */
2427
+ prefix?: string;
2428
+
2429
+ /**
2430
+ * `suffix` specifies that the field value must have the
2431
+ * specified substring at the end of the string. If the field value doesn't
2432
+ * end with the specified suffix, an error message will be generated.
2433
+ *
2434
+ * ```proto
2435
+ * message MyString {
2436
+ * // value does not have suffix `post`
2437
+ * string value = 1 [(buf.validate.field).string.suffix = "post"];
2438
+ * }
2439
+ * ```
2440
+ *
2441
+ * @generated from field: optional string suffix = 8;
2442
+ */
2443
+ suffix?: string;
2444
+
2445
+ /**
2446
+ * `contains` specifies that the field value must have the
2447
+ * specified substring anywhere in the string. If the field value doesn't
2448
+ * contain the specified substring, an error message will be generated.
2449
+ *
2450
+ * ```proto
2451
+ * message MyString {
2452
+ * // value does not contain substring `inside`.
2453
+ * string value = 1 [(buf.validate.field).string.contains = "inside"];
2454
+ * }
2455
+ * ```
2456
+ *
2457
+ * @generated from field: optional string contains = 9;
2458
+ */
2459
+ contains?: string;
2460
+
2461
+ /**
2462
+ * `not_contains` specifies that the field value must not have the
2463
+ * specified substring anywhere in the string. If the field value contains
2464
+ * the specified substring, an error message will be generated.
2465
+ *
2466
+ * ```proto
2467
+ * message MyString {
2468
+ * // value contains substring `inside`.
2469
+ * string value = 1 [(buf.validate.field).string.not_contains = "inside"];
2470
+ * }
2471
+ * ```
2472
+ *
2473
+ * @generated from field: optional string not_contains = 23;
2474
+ */
2475
+ notContains?: string;
2476
+
2477
+ /**
2478
+ * `in` specifies that the field value must be equal to one of the specified
2479
+ * values. If the field value isn't one of the specified values, an error
2480
+ * message will be generated.
2481
+ *
2482
+ * ```proto
2483
+ * message MyString {
2484
+ * // value must be in list ["apple", "banana"]
2485
+ * repeated string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"];
2486
+ * }
2487
+ * ```
2488
+ *
2489
+ * @generated from field: repeated string in = 10;
2490
+ */
2491
+ in: string[];
2492
+
2493
+ /**
2494
+ * `not_in` specifies that the field value cannot be equal to any
2495
+ * of the specified values. If the field value is one of the specified values,
2496
+ * an error message will be generated.
2497
+ * ```proto
2498
+ * message MyString {
2499
+ * // value must not be in list ["orange", "grape"]
2500
+ * repeated string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"];
2501
+ * }
2502
+ * ```
2503
+ *
2504
+ * @generated from field: repeated string not_in = 11;
2505
+ */
2506
+ notIn: string[];
2507
+
2508
+ /**
2509
+ * `WellKnown` rules provide advanced constraints against common string
2510
+ * patterns
2511
+ *
2512
+ * @generated from oneof buf.validate.StringRules.well_known
2513
+ */
2514
+ wellKnown: {
2515
+ /**
2516
+ * `email` specifies that the field value must be a valid email address
2517
+ * (addr-spec only) as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322#section-3.4.1).
2518
+ * If the field value isn't a valid email address, an error message will be generated.
2519
+ *
2520
+ * ```proto
2521
+ * message MyString {
2522
+ * // value must be a valid email address
2523
+ * string value = 1 [(buf.validate.field).string.email = true];
2524
+ * }
2525
+ * ```
2526
+ *
2527
+ * @generated from field: bool email = 12;
2528
+ */
2529
+ value: boolean;
2530
+ case: "email";
2531
+ } | {
2532
+ /**
2533
+ * `hostname` specifies that the field value must be a valid
2534
+ * hostname as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5). This constraint doesn't support
2535
+ * internationalized domain names (IDNs). If the field value isn't a
2536
+ * valid hostname, an error message will be generated.
2537
+ *
2538
+ * ```proto
2539
+ * message MyString {
2540
+ * // value must be a valid hostname
2541
+ * string value = 1 [(buf.validate.field).string.hostname = true];
2542
+ * }
2543
+ * ```
2544
+ *
2545
+ * @generated from field: bool hostname = 13;
2546
+ */
2547
+ value: boolean;
2548
+ case: "hostname";
2549
+ } | {
2550
+ /**
2551
+ * `ip` specifies that the field value must be a valid IP
2552
+ * (v4 or v6) address, without surrounding square brackets for IPv6 addresses.
2553
+ * If the field value isn't a valid IP address, an error message will be
2554
+ * generated.
2555
+ *
2556
+ * ```proto
2557
+ * message MyString {
2558
+ * // value must be a valid IP address
2559
+ * string value = 1 [(buf.validate.field).string.ip = true];
2560
+ * }
2561
+ * ```
2562
+ *
2563
+ * @generated from field: bool ip = 14;
2564
+ */
2565
+ value: boolean;
2566
+ case: "ip";
2567
+ } | {
2568
+ /**
2569
+ * `ipv4` specifies that the field value must be a valid IPv4
2570
+ * address. If the field value isn't a valid IPv4 address, an error message
2571
+ * will be generated.
2572
+ *
2573
+ * ```proto
2574
+ * message MyString {
2575
+ * // value must be a valid IPv4 address
2576
+ * string value = 1 [(buf.validate.field).string.ipv4 = true];
2577
+ * }
2578
+ * ```
2579
+ *
2580
+ * @generated from field: bool ipv4 = 15;
2581
+ */
2582
+ value: boolean;
2583
+ case: "ipv4";
2584
+ } | {
2585
+ /**
2586
+ * `ipv6` specifies that the field value must be a valid
2587
+ * IPv6 address, without surrounding square brackets. If the field value is
2588
+ * not a valid IPv6 address, an error message will be generated.
2589
+ *
2590
+ * ```proto
2591
+ * message MyString {
2592
+ * // value must be a valid IPv6 address
2593
+ * string value = 1 [(buf.validate.field).string.ipv6 = true];
2594
+ * }
2595
+ * ```
2596
+ *
2597
+ * @generated from field: bool ipv6 = 16;
2598
+ */
2599
+ value: boolean;
2600
+ case: "ipv6";
2601
+ } | {
2602
+ /**
2603
+ * `uri` specifies that the field value must be a valid,
2604
+ * absolute URI as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3). If the field value isn't a valid,
2605
+ * absolute URI, an error message will be generated.
2606
+ *
2607
+ * ```proto
2608
+ * message MyString {
2609
+ * // value must be a valid URI
2610
+ * string value = 1 [(buf.validate.field).string.uri = true];
2611
+ * }
2612
+ * ```
2613
+ *
2614
+ * @generated from field: bool uri = 17;
2615
+ */
2616
+ value: boolean;
2617
+ case: "uri";
2618
+ } | {
2619
+ /**
2620
+ * `uri_ref` specifies that the field value must be a valid URI
2621
+ * as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3) and may be either relative or absolute. If the
2622
+ * field value isn't a valid URI, an error message will be generated.
2623
+ *
2624
+ * ```proto
2625
+ * message MyString {
2626
+ * // value must be a valid URI
2627
+ * string value = 1 [(buf.validate.field).string.uri_ref = true];
2628
+ * }
2629
+ * ```
2630
+ *
2631
+ * @generated from field: bool uri_ref = 18;
2632
+ */
2633
+ value: boolean;
2634
+ case: "uriRef";
2635
+ } | {
2636
+ /**
2637
+ * `address` specifies that the field value must be either a valid hostname
2638
+ * as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5)
2639
+ * (which doesn't support internationalized domain names or IDNs) or a valid
2640
+ * IP (v4 or v6). If the field value isn't a valid hostname or IP, an error
2641
+ * message will be generated.
2642
+ *
2643
+ * ```proto
2644
+ * message MyString {
2645
+ * // value must be a valid hostname, or ip address
2646
+ * string value = 1 [(buf.validate.field).string.address = true];
2647
+ * }
2648
+ * ```
2649
+ *
2650
+ * @generated from field: bool address = 21;
2651
+ */
2652
+ value: boolean;
2653
+ case: "address";
2654
+ } | {
2655
+ /**
2656
+ * `uuid` specifies that the field value must be a valid UUID as defined by
2657
+ * [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2). If the
2658
+ * field value isn't a valid UUID, an error message will be generated.
2659
+ *
2660
+ * ```proto
2661
+ * message MyString {
2662
+ * // value must be a valid UUID
2663
+ * string value = 1 [(buf.validate.field).string.uuid = true];
2664
+ * }
2665
+ * ```
2666
+ *
2667
+ * @generated from field: bool uuid = 22;
2668
+ */
2669
+ value: boolean;
2670
+ case: "uuid";
2671
+ } | {
2672
+ /**
2673
+ * `ip_with_prefixlen` specifies that the field value must be a valid IP (v4 or v6)
2674
+ * address with prefix length. If the field value isn't a valid IP with prefix
2675
+ * length, an error message will be generated.
2676
+ *
2677
+ *
2678
+ * ```proto
2679
+ * message MyString {
2680
+ * // value must be a valid IP with prefix length
2681
+ * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true];
2682
+ * }
2683
+ * ```
2684
+ *
2685
+ * @generated from field: bool ip_with_prefixlen = 26;
2686
+ */
2687
+ value: boolean;
2688
+ case: "ipWithPrefixlen";
2689
+ } | {
2690
+ /**
2691
+ * `ipv4_with_prefixlen` specifies that the field value must be a valid
2692
+ * IPv4 address with prefix.
2693
+ * If the field value isn't a valid IPv4 address with prefix length,
2694
+ * an error message will be generated.
2695
+ *
2696
+ * ```proto
2697
+ * message MyString {
2698
+ * // value must be a valid IPv4 address with prefix length
2699
+ * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true];
2700
+ * }
2701
+ * ```
2702
+ *
2703
+ * @generated from field: bool ipv4_with_prefixlen = 27;
2704
+ */
2705
+ value: boolean;
2706
+ case: "ipv4WithPrefixlen";
2707
+ } | {
2708
+ /**
2709
+ * `ipv6_with_prefixlen` specifies that the field value must be a valid
2710
+ * IPv6 address with prefix length.
2711
+ * If the field value is not a valid IPv6 address with prefix length,
2712
+ * an error message will be generated.
2713
+ *
2714
+ * ```proto
2715
+ * message MyString {
2716
+ * // value must be a valid IPv6 address prefix length
2717
+ * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true];
2718
+ * }
2719
+ * ```
2720
+ *
2721
+ * @generated from field: bool ipv6_with_prefixlen = 28;
2722
+ */
2723
+ value: boolean;
2724
+ case: "ipv6WithPrefixlen";
2725
+ } | {
2726
+ /**
2727
+ * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) prefix.
2728
+ * If the field value isn't a valid IP prefix, an error message will be
2729
+ * generated. The prefix must have all zeros for the masked bits of the prefix (e.g.,
2730
+ * `127.0.0.0/16`, not `127.0.0.1/16`).
2731
+ *
2732
+ * ```proto
2733
+ * message MyString {
2734
+ * // value must be a valid IP prefix
2735
+ * string value = 1 [(buf.validate.field).string.ip_prefix = true];
2736
+ * }
2737
+ * ```
2738
+ *
2739
+ * @generated from field: bool ip_prefix = 29;
2740
+ */
2741
+ value: boolean;
2742
+ case: "ipPrefix";
2743
+ } | {
2744
+ /**
2745
+ * `ipv4_prefix` specifies that the field value must be a valid IPv4
2746
+ * prefix. If the field value isn't a valid IPv4 prefix, an error message
2747
+ * will be generated. The prefix must have all zeros for the masked bits of
2748
+ * the prefix (e.g., `127.0.0.0/16`, not `127.0.0.1/16`).
2749
+ *
2750
+ * ```proto
2751
+ * message MyString {
2752
+ * // value must be a valid IPv4 prefix
2753
+ * string value = 1 [(buf.validate.field).string.ipv4_prefix = true];
2754
+ * }
2755
+ * ```
2756
+ *
2757
+ * @generated from field: bool ipv4_prefix = 30;
2758
+ */
2759
+ value: boolean;
2760
+ case: "ipv4Prefix";
2761
+ } | {
2762
+ /**
2763
+ * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix.
2764
+ * If the field value is not a valid IPv6 prefix, an error message will be
2765
+ * generated. The prefix must have all zeros for the masked bits of the prefix
2766
+ * (e.g., `2001:db8::/48`, not `2001:db8::1/48`).
2767
+ *
2768
+ * ```proto
2769
+ * message MyString {
2770
+ * // value must be a valid IPv6 prefix
2771
+ * string value = 1 [(buf.validate.field).string.ipv6_prefix = true];
2772
+ * }
2773
+ * ```
2774
+ *
2775
+ * @generated from field: bool ipv6_prefix = 31;
2776
+ */
2777
+ value: boolean;
2778
+ case: "ipv6Prefix";
2779
+ } | {
2780
+ /**
2781
+ * `host_and_port` specifies the field value must be a valid host and port
2782
+ * pair. The host must be a valid hostname or IP address while the port
2783
+ * must be in the range of 0-65535, inclusive. IPv6 addresses must be delimited
2784
+ * with square brackets (e.g., `[::1]:1234`).
2785
+ *
2786
+ * @generated from field: bool host_and_port = 32;
2787
+ */
2788
+ value: boolean;
2789
+ case: "hostAndPort";
2790
+ } | {
2791
+ /**
2792
+ * `well_known_regex` specifies a common well-known pattern
2793
+ * defined as a regex. If the field value doesn't match the well-known
2794
+ * regex, an error message will be generated.
2795
+ *
2796
+ * ```proto
2797
+ * message MyString {
2798
+ * // value must be a valid HTTP header value
2799
+ * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE];
2800
+ * }
2801
+ * ```
2802
+ *
2803
+ * #### KnownRegex
2804
+ *
2805
+ * `well_known_regex` contains some well-known patterns.
2806
+ *
2807
+ * | Name | Number | Description |
2808
+ * |-------------------------------|--------|-------------------------------------------|
2809
+ * | KNOWN_REGEX_UNSPECIFIED | 0 | |
2810
+ * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2) |
2811
+ * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4) |
2812
+ *
2813
+ * @generated from field: buf.validate.KnownRegex well_known_regex = 24;
2814
+ */
2815
+ value: KnownRegex;
2816
+ case: "wellKnownRegex";
2817
+ } | { case: undefined; value?: undefined };
2818
+
2819
+ /**
2820
+ * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to
2821
+ * enable strict header validation. By default, this is true, and HTTP header
2822
+ * validations are [RFC-compliant](https://tools.ietf.org/html/rfc7230#section-3). Setting to false will enable looser
2823
+ * validations that only disallow `\r\n\0` characters, which can be used to
2824
+ * bypass header matching rules.
2825
+ *
2826
+ * ```proto
2827
+ * message MyString {
2828
+ * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules.
2829
+ * string value = 1 [(buf.validate.field).string.strict = false];
2830
+ * }
2831
+ * ```
2832
+ *
2833
+ * @generated from field: optional bool strict = 25;
2834
+ */
2835
+ strict?: boolean;
2836
+ };
2837
+
2838
+ /**
2839
+ * Describes the message buf.validate.StringRules.
2840
+ * Use `create(StringRulesSchema)` to create a new message.
2841
+ */
2842
+ export const StringRulesSchema: GenMessage<StringRules> = /*@__PURE__*/
2843
+ messageDesc(file_buf_validate_validate, 16);
2844
+
2845
+ /**
2846
+ * BytesRules describe the constraints applied to `bytes` values. These rules
2847
+ * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type.
2848
+ *
2849
+ * @generated from message buf.validate.BytesRules
2850
+ */
2851
+ export type BytesRules = Message<"buf.validate.BytesRules"> & {
2852
+ /**
2853
+ * `const` requires the field value to exactly match the specified bytes
2854
+ * value. If the field value doesn't match, an error message is generated.
2855
+ *
2856
+ * ```proto
2857
+ * message MyBytes {
2858
+ * // value must be "\x01\x02\x03\x04"
2859
+ * bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"];
2860
+ * }
2861
+ * ```
2862
+ *
2863
+ * @generated from field: optional bytes const = 1;
2864
+ */
2865
+ const?: Uint8Array;
2866
+
2867
+ /**
2868
+ * `len` requires the field value to have the specified length in bytes.
2869
+ * If the field value doesn't match, an error message is generated.
2870
+ *
2871
+ * ```proto
2872
+ * message MyBytes {
2873
+ * // value length must be 4 bytes.
2874
+ * optional bytes value = 1 [(buf.validate.field).bytes.len = 4];
2875
+ * }
2876
+ * ```
2877
+ *
2878
+ * @generated from field: optional uint64 len = 13 [jstype = JS_STRING];
2879
+ */
2880
+ len?: string;
2881
+
2882
+ /**
2883
+ * `min_len` requires the field value to have at least the specified minimum
2884
+ * length in bytes.
2885
+ * If the field value doesn't meet the requirement, an error message is generated.
2886
+ *
2887
+ * ```proto
2888
+ * message MyBytes {
2889
+ * // value length must be at least 2 bytes.
2890
+ * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2];
2891
+ * }
2892
+ * ```
2893
+ *
2894
+ * @generated from field: optional uint64 min_len = 2 [jstype = JS_STRING];
2895
+ */
2896
+ minLen?: string;
2897
+
2898
+ /**
2899
+ * `max_len` requires the field value to have at most the specified maximum
2900
+ * length in bytes.
2901
+ * If the field value exceeds the requirement, an error message is generated.
2902
+ *
2903
+ * ```proto
2904
+ * message MyBytes {
2905
+ * // value must be at most 6 bytes.
2906
+ * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6];
2907
+ * }
2908
+ * ```
2909
+ *
2910
+ * @generated from field: optional uint64 max_len = 3 [jstype = JS_STRING];
2911
+ */
2912
+ maxLen?: string;
2913
+
2914
+ /**
2915
+ * `pattern` requires the field value to match the specified regular
2916
+ * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)).
2917
+ * The value of the field must be valid UTF-8 or validation will fail with a
2918
+ * runtime error.
2919
+ * If the field value doesn't match the pattern, an error message is generated.
2920
+ *
2921
+ * ```proto
2922
+ * message MyBytes {
2923
+ * // value must match regex pattern "^[a-zA-Z0-9]+$".
2924
+ * optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"];
2925
+ * }
2926
+ * ```
2927
+ *
2928
+ * @generated from field: optional string pattern = 4;
2929
+ */
2930
+ pattern?: string;
2931
+
2932
+ /**
2933
+ * `prefix` requires the field value to have the specified bytes at the
2934
+ * beginning of the string.
2935
+ * If the field value doesn't meet the requirement, an error message is generated.
2936
+ *
2937
+ * ```proto
2938
+ * message MyBytes {
2939
+ * // value does not have prefix \x01\x02
2940
+ * optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"];
2941
+ * }
2942
+ * ```
2943
+ *
2944
+ * @generated from field: optional bytes prefix = 5;
2945
+ */
2946
+ prefix?: Uint8Array;
2947
+
2948
+ /**
2949
+ * `suffix` requires the field value to have the specified bytes at the end
2950
+ * of the string.
2951
+ * If the field value doesn't meet the requirement, an error message is generated.
2952
+ *
2953
+ * ```proto
2954
+ * message MyBytes {
2955
+ * // value does not have suffix \x03\x04
2956
+ * optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"];
2957
+ * }
2958
+ * ```
2959
+ *
2960
+ * @generated from field: optional bytes suffix = 6;
2961
+ */
2962
+ suffix?: Uint8Array;
2963
+
2964
+ /**
2965
+ * `contains` requires the field value to have the specified bytes anywhere in
2966
+ * the string.
2967
+ * If the field value doesn't meet the requirement, an error message is generated.
2968
+ *
2969
+ * ```protobuf
2970
+ * message MyBytes {
2971
+ * // value does not contain \x02\x03
2972
+ * optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"];
2973
+ * }
2974
+ * ```
2975
+ *
2976
+ * @generated from field: optional bytes contains = 7;
2977
+ */
2978
+ contains?: Uint8Array;
2979
+
2980
+ /**
2981
+ * `in` requires the field value to be equal to one of the specified
2982
+ * values. If the field value doesn't match any of the specified values, an
2983
+ * error message is generated.
2984
+ *
2985
+ * ```protobuf
2986
+ * message MyBytes {
2987
+ * // value must in ["\x01\x02", "\x02\x03", "\x03\x04"]
2988
+ * optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}];
2989
+ * }
2990
+ * ```
2991
+ *
2992
+ * @generated from field: repeated bytes in = 8;
2993
+ */
2994
+ in: Uint8Array[];
2995
+
2996
+ /**
2997
+ * `not_in` requires the field value to be not equal to any of the specified
2998
+ * values.
2999
+ * If the field value matches any of the specified values, an error message is
3000
+ * generated.
3001
+ *
3002
+ * ```proto
3003
+ * message MyBytes {
3004
+ * // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"]
3005
+ * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}];
3006
+ * }
3007
+ * ```
3008
+ *
3009
+ * @generated from field: repeated bytes not_in = 9;
3010
+ */
3011
+ notIn: Uint8Array[];
3012
+
3013
+ /**
3014
+ * WellKnown rules provide advanced constraints against common byte
3015
+ * patterns
3016
+ *
3017
+ * @generated from oneof buf.validate.BytesRules.well_known
3018
+ */
3019
+ wellKnown: {
3020
+ /**
3021
+ * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format.
3022
+ * If the field value doesn't meet this constraint, an error message is generated.
3023
+ *
3024
+ * ```proto
3025
+ * message MyBytes {
3026
+ * // value must be a valid IP address
3027
+ * optional bytes value = 1 [(buf.validate.field).bytes.ip = true];
3028
+ * }
3029
+ * ```
3030
+ *
3031
+ * @generated from field: bool ip = 10;
3032
+ */
3033
+ value: boolean;
3034
+ case: "ip";
3035
+ } | {
3036
+ /**
3037
+ * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format.
3038
+ * If the field value doesn't meet this constraint, an error message is generated.
3039
+ *
3040
+ * ```proto
3041
+ * message MyBytes {
3042
+ * // value must be a valid IPv4 address
3043
+ * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true];
3044
+ * }
3045
+ * ```
3046
+ *
3047
+ * @generated from field: bool ipv4 = 11;
3048
+ */
3049
+ value: boolean;
3050
+ case: "ipv4";
3051
+ } | {
3052
+ /**
3053
+ * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format.
3054
+ * If the field value doesn't meet this constraint, an error message is generated.
3055
+ * ```proto
3056
+ * message MyBytes {
3057
+ * // value must be a valid IPv6 address
3058
+ * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true];
3059
+ * }
3060
+ * ```
3061
+ *
3062
+ * @generated from field: bool ipv6 = 12;
3063
+ */
3064
+ value: boolean;
3065
+ case: "ipv6";
3066
+ } | { case: undefined; value?: undefined };
3067
+ };
3068
+
3069
+ /**
3070
+ * Describes the message buf.validate.BytesRules.
3071
+ * Use `create(BytesRulesSchema)` to create a new message.
3072
+ */
3073
+ export const BytesRulesSchema: GenMessage<BytesRules> = /*@__PURE__*/
3074
+ messageDesc(file_buf_validate_validate, 17);
3075
+
3076
+ /**
3077
+ * EnumRules describe the constraints applied to `enum` values.
3078
+ *
3079
+ * @generated from message buf.validate.EnumRules
3080
+ */
3081
+ export type EnumRules = Message<"buf.validate.EnumRules"> & {
3082
+ /**
3083
+ * `const` requires the field value to exactly match the specified enum value.
3084
+ * If the field value doesn't match, an error message is generated.
3085
+ *
3086
+ * ```proto
3087
+ * enum MyEnum {
3088
+ * MY_ENUM_UNSPECIFIED = 0;
3089
+ * MY_ENUM_VALUE1 = 1;
3090
+ * MY_ENUM_VALUE2 = 2;
3091
+ * }
3092
+ *
3093
+ * message MyMessage {
3094
+ * // The field `value` must be exactly MY_ENUM_VALUE1.
3095
+ * MyEnum value = 1 [(buf.validate.field).enum.const = 1];
3096
+ * }
3097
+ * ```
3098
+ *
3099
+ * @generated from field: optional int32 const = 1;
3100
+ */
3101
+ const?: number;
3102
+
3103
+ /**
3104
+ * `defined_only` requires the field value to be one of the defined values for
3105
+ * this enum, failing on any undefined value.
3106
+ *
3107
+ * ```proto
3108
+ * enum MyEnum {
3109
+ * MY_ENUM_UNSPECIFIED = 0;
3110
+ * MY_ENUM_VALUE1 = 1;
3111
+ * MY_ENUM_VALUE2 = 2;
3112
+ * }
3113
+ *
3114
+ * message MyMessage {
3115
+ * // The field `value` must be a defined value of MyEnum.
3116
+ * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true];
3117
+ * }
3118
+ * ```
3119
+ *
3120
+ * @generated from field: optional bool defined_only = 2;
3121
+ */
3122
+ definedOnly?: boolean;
3123
+
3124
+ /**
3125
+ * `in` requires the field value to be equal to one of the
3126
+ * specified enum values. If the field value doesn't match any of the
3127
+ * specified values, an error message is generated.
3128
+ *
3129
+ * ```proto
3130
+ * enum MyEnum {
3131
+ * MY_ENUM_UNSPECIFIED = 0;
3132
+ * MY_ENUM_VALUE1 = 1;
3133
+ * MY_ENUM_VALUE2 = 2;
3134
+ * }
3135
+ *
3136
+ * message MyMessage {
3137
+ * // The field `value` must be equal to one of the specified values.
3138
+ * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}];
3139
+ * }
3140
+ * ```
3141
+ *
3142
+ * @generated from field: repeated int32 in = 3;
3143
+ */
3144
+ in: number[];
3145
+
3146
+ /**
3147
+ * `not_in` requires the field value to be not equal to any of the
3148
+ * specified enum values. If the field value matches one of the specified
3149
+ * values, an error message is generated.
3150
+ *
3151
+ * ```proto
3152
+ * enum MyEnum {
3153
+ * MY_ENUM_UNSPECIFIED = 0;
3154
+ * MY_ENUM_VALUE1 = 1;
3155
+ * MY_ENUM_VALUE2 = 2;
3156
+ * }
3157
+ *
3158
+ * message MyMessage {
3159
+ * // The field `value` must not be equal to any of the specified values.
3160
+ * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}];
3161
+ * }
3162
+ * ```
3163
+ *
3164
+ * @generated from field: repeated int32 not_in = 4;
3165
+ */
3166
+ notIn: number[];
3167
+ };
3168
+
3169
+ /**
3170
+ * Describes the message buf.validate.EnumRules.
3171
+ * Use `create(EnumRulesSchema)` to create a new message.
3172
+ */
3173
+ export const EnumRulesSchema: GenMessage<EnumRules> = /*@__PURE__*/
3174
+ messageDesc(file_buf_validate_validate, 18);
3175
+
3176
+ /**
3177
+ * RepeatedRules describe the constraints applied to `repeated` values.
3178
+ *
3179
+ * @generated from message buf.validate.RepeatedRules
3180
+ */
3181
+ export type RepeatedRules = Message<"buf.validate.RepeatedRules"> & {
3182
+ /**
3183
+ * `min_items` requires that this field must contain at least the specified
3184
+ * minimum number of items.
3185
+ *
3186
+ * Note that `min_items = 1` is equivalent to setting a field as `required`.
3187
+ *
3188
+ * ```proto
3189
+ * message MyRepeated {
3190
+ * // value must contain at least 2 items
3191
+ * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2];
3192
+ * }
3193
+ * ```
3194
+ *
3195
+ * @generated from field: optional uint64 min_items = 1 [jstype = JS_STRING];
3196
+ */
3197
+ minItems?: string;
3198
+
3199
+ /**
3200
+ * `max_items` denotes that this field must not exceed a
3201
+ * certain number of items as the upper limit. If the field contains more
3202
+ * items than specified, an error message will be generated, requiring the
3203
+ * field to maintain no more than the specified number of items.
3204
+ *
3205
+ * ```proto
3206
+ * message MyRepeated {
3207
+ * // value must contain no more than 3 item(s)
3208
+ * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3];
3209
+ * }
3210
+ * ```
3211
+ *
3212
+ * @generated from field: optional uint64 max_items = 2 [jstype = JS_STRING];
3213
+ */
3214
+ maxItems?: string;
3215
+
3216
+ /**
3217
+ * `unique` indicates that all elements in this field must
3218
+ * be unique. This constraint is strictly applicable to scalar and enum
3219
+ * types, with message types not being supported.
3220
+ *
3221
+ * ```proto
3222
+ * message MyRepeated {
3223
+ * // repeated value must contain unique items
3224
+ * repeated string value = 1 [(buf.validate.field).repeated.unique = true];
3225
+ * }
3226
+ * ```
3227
+ *
3228
+ * @generated from field: optional bool unique = 3;
3229
+ */
3230
+ unique?: boolean;
3231
+
3232
+ /**
3233
+ * `items` details the constraints to be applied to each item
3234
+ * in the field. Even for repeated message fields, validation is executed
3235
+ * against each item unless skip is explicitly specified.
3236
+ *
3237
+ * ```proto
3238
+ * message MyRepeated {
3239
+ * // The items in the field `value` must follow the specified constraints.
3240
+ * repeated string value = 1 [(buf.validate.field).repeated.items = {
3241
+ * string: {
3242
+ * min_len: 3
3243
+ * max_len: 10
3244
+ * }
3245
+ * }];
3246
+ * }
3247
+ * ```
3248
+ *
3249
+ * @generated from field: optional buf.validate.FieldConstraints items = 4;
3250
+ */
3251
+ items?: FieldConstraints;
3252
+ };
3253
+
3254
+ /**
3255
+ * Describes the message buf.validate.RepeatedRules.
3256
+ * Use `create(RepeatedRulesSchema)` to create a new message.
3257
+ */
3258
+ export const RepeatedRulesSchema: GenMessage<RepeatedRules> = /*@__PURE__*/
3259
+ messageDesc(file_buf_validate_validate, 19);
3260
+
3261
+ /**
3262
+ * MapRules describe the constraints applied to `map` values.
3263
+ *
3264
+ * @generated from message buf.validate.MapRules
3265
+ */
3266
+ export type MapRules = Message<"buf.validate.MapRules"> & {
3267
+ /**
3268
+ * Specifies the minimum number of key-value pairs allowed. If the field has
3269
+ * fewer key-value pairs than specified, an error message is generated.
3270
+ *
3271
+ * ```proto
3272
+ * message MyMap {
3273
+ * // The field `value` must have at least 2 key-value pairs.
3274
+ * map<string, string> value = 1 [(buf.validate.field).map.min_pairs = 2];
3275
+ * }
3276
+ * ```
3277
+ *
3278
+ * @generated from field: optional uint64 min_pairs = 1 [jstype = JS_STRING];
3279
+ */
3280
+ minPairs?: string;
3281
+
3282
+ /**
3283
+ * Specifies the maximum number of key-value pairs allowed. If the field has
3284
+ * more key-value pairs than specified, an error message is generated.
3285
+ *
3286
+ * ```proto
3287
+ * message MyMap {
3288
+ * // The field `value` must have at most 3 key-value pairs.
3289
+ * map<string, string> value = 1 [(buf.validate.field).map.max_pairs = 3];
3290
+ * }
3291
+ * ```
3292
+ *
3293
+ * @generated from field: optional uint64 max_pairs = 2 [jstype = JS_STRING];
3294
+ */
3295
+ maxPairs?: string;
3296
+
3297
+ /**
3298
+ * Specifies the constraints to be applied to each key in the field.
3299
+ *
3300
+ * ```proto
3301
+ * message MyMap {
3302
+ * // The keys in the field `value` must follow the specified constraints.
3303
+ * map<string, string> value = 1 [(buf.validate.field).map.keys = {
3304
+ * string: {
3305
+ * min_len: 3
3306
+ * max_len: 10
3307
+ * }
3308
+ * }];
3309
+ * }
3310
+ * ```
3311
+ *
3312
+ * @generated from field: optional buf.validate.FieldConstraints keys = 4;
3313
+ */
3314
+ keys?: FieldConstraints;
3315
+
3316
+ /**
3317
+ * Specifies the constraints to be applied to the value of each key in the
3318
+ * field. Message values will still have their validations evaluated unless
3319
+ * skip is specified here.
3320
+ *
3321
+ * ```proto
3322
+ * message MyMap {
3323
+ * // The values in the field `value` must follow the specified constraints.
3324
+ * map<string, string> value = 1 [(buf.validate.field).map.values = {
3325
+ * string: {
3326
+ * min_len: 5
3327
+ * max_len: 20
3328
+ * }
3329
+ * }];
3330
+ * }
3331
+ * ```
3332
+ *
3333
+ * @generated from field: optional buf.validate.FieldConstraints values = 5;
3334
+ */
3335
+ values?: FieldConstraints;
3336
+ };
3337
+
3338
+ /**
3339
+ * Describes the message buf.validate.MapRules.
3340
+ * Use `create(MapRulesSchema)` to create a new message.
3341
+ */
3342
+ export const MapRulesSchema: GenMessage<MapRules> = /*@__PURE__*/
3343
+ messageDesc(file_buf_validate_validate, 20);
3344
+
3345
+ /**
3346
+ * AnyRules describe constraints applied exclusively to the `google.protobuf.Any` well-known type.
3347
+ *
3348
+ * @generated from message buf.validate.AnyRules
3349
+ */
3350
+ export type AnyRules = Message<"buf.validate.AnyRules"> & {
3351
+ /**
3352
+ * `in` requires the field's `type_url` to be equal to one of the
3353
+ * specified values. If it doesn't match any of the specified values, an error
3354
+ * message is generated.
3355
+ *
3356
+ * ```proto
3357
+ * message MyAny {
3358
+ * // The `value` field must have a `type_url` equal to one of the specified values.
3359
+ * google.protobuf.Any value = 1 [(buf.validate.field).any.in = ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"]];
3360
+ * }
3361
+ * ```
3362
+ *
3363
+ * @generated from field: repeated string in = 2;
3364
+ */
3365
+ in: string[];
3366
+
3367
+ /**
3368
+ * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated.
3369
+ *
3370
+ * ```proto
3371
+ * message MyAny {
3372
+ * // The field `value` must not have a `type_url` equal to any of the specified values.
3373
+ * google.protobuf.Any value = 1 [(buf.validate.field).any.not_in = ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"]];
3374
+ * }
3375
+ * ```
3376
+ *
3377
+ * @generated from field: repeated string not_in = 3;
3378
+ */
3379
+ notIn: string[];
3380
+ };
3381
+
3382
+ /**
3383
+ * Describes the message buf.validate.AnyRules.
3384
+ * Use `create(AnyRulesSchema)` to create a new message.
3385
+ */
3386
+ export const AnyRulesSchema: GenMessage<AnyRules> = /*@__PURE__*/
3387
+ messageDesc(file_buf_validate_validate, 21);
3388
+
3389
+ /**
3390
+ * DurationRules describe the constraints applied exclusively to the `google.protobuf.Duration` well-known type.
3391
+ *
3392
+ * @generated from message buf.validate.DurationRules
3393
+ */
3394
+ export type DurationRules = Message<"buf.validate.DurationRules"> & {
3395
+ /**
3396
+ * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly.
3397
+ * If the field's value deviates from the specified value, an error message
3398
+ * will be generated.
3399
+ *
3400
+ * ```proto
3401
+ * message MyDuration {
3402
+ * // value must equal 5s
3403
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"];
3404
+ * }
3405
+ * ```
3406
+ *
3407
+ * @generated from field: optional google.protobuf.Duration const = 2;
3408
+ */
3409
+ const?: Duration;
3410
+
3411
+ /**
3412
+ * @generated from oneof buf.validate.DurationRules.less_than
3413
+ */
3414
+ lessThan: {
3415
+ /**
3416
+ * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type,
3417
+ * exclusive. If the field's value is greater than or equal to the specified
3418
+ * value, an error message will be generated.
3419
+ *
3420
+ * ```proto
3421
+ * message MyDuration {
3422
+ * // value must be less than 5s
3423
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"];
3424
+ * }
3425
+ * ```
3426
+ *
3427
+ * @generated from field: google.protobuf.Duration lt = 3;
3428
+ */
3429
+ value: Duration;
3430
+ case: "lt";
3431
+ } | {
3432
+ /**
3433
+ * `lte` indicates that the field must be less than or equal to the specified
3434
+ * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value,
3435
+ * an error message will be generated.
3436
+ *
3437
+ * ```proto
3438
+ * message MyDuration {
3439
+ * // value must be less than or equal to 10s
3440
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"];
3441
+ * }
3442
+ * ```
3443
+ *
3444
+ * @generated from field: google.protobuf.Duration lte = 4;
3445
+ */
3446
+ value: Duration;
3447
+ case: "lte";
3448
+ } | { case: undefined; value?: undefined };
3449
+
3450
+ /**
3451
+ * @generated from oneof buf.validate.DurationRules.greater_than
3452
+ */
3453
+ greaterThan: {
3454
+ /**
3455
+ * `gt` requires the duration field value to be greater than the specified
3456
+ * value (exclusive). If the value of `gt` is larger than a specified `lt`
3457
+ * or `lte`, the range is reversed, and the field value must be outside the
3458
+ * specified range. If the field value doesn't meet the required conditions,
3459
+ * an error message is generated.
3460
+ *
3461
+ * ```proto
3462
+ * message MyDuration {
3463
+ * // duration must be greater than 5s [duration.gt]
3464
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }];
3465
+ *
3466
+ * // duration must be greater than 5s and less than 10s [duration.gt_lt]
3467
+ * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }];
3468
+ *
3469
+ * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive]
3470
+ * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }];
3471
+ * }
3472
+ * ```
3473
+ *
3474
+ * @generated from field: google.protobuf.Duration gt = 5;
3475
+ */
3476
+ value: Duration;
3477
+ case: "gt";
3478
+ } | {
3479
+ /**
3480
+ * `gte` requires the duration field value to be greater than or equal to the
3481
+ * specified value (exclusive). If the value of `gte` is larger than a
3482
+ * specified `lt` or `lte`, the range is reversed, and the field value must
3483
+ * be outside the specified range. If the field value doesn't meet the
3484
+ * required conditions, an error message is generated.
3485
+ *
3486
+ * ```proto
3487
+ * message MyDuration {
3488
+ * // duration must be greater than or equal to 5s [duration.gte]
3489
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }];
3490
+ *
3491
+ * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt]
3492
+ * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }];
3493
+ *
3494
+ * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive]
3495
+ * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }];
3496
+ * }
3497
+ * ```
3498
+ *
3499
+ * @generated from field: google.protobuf.Duration gte = 6;
3500
+ */
3501
+ value: Duration;
3502
+ case: "gte";
3503
+ } | { case: undefined; value?: undefined };
3504
+
3505
+ /**
3506
+ * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type.
3507
+ * If the field's value doesn't correspond to any of the specified values,
3508
+ * an error message will be generated.
3509
+ *
3510
+ * ```proto
3511
+ * message MyDuration {
3512
+ * // value must be in list [1s, 2s, 3s]
3513
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]];
3514
+ * }
3515
+ * ```
3516
+ *
3517
+ * @generated from field: repeated google.protobuf.Duration in = 7;
3518
+ */
3519
+ in: Duration[];
3520
+
3521
+ /**
3522
+ * `not_in` denotes that the field must not be equal to
3523
+ * any of the specified values of the `google.protobuf.Duration` type.
3524
+ * If the field's value matches any of these values, an error message will be
3525
+ * generated.
3526
+ *
3527
+ * ```proto
3528
+ * message MyDuration {
3529
+ * // value must not be in list [1s, 2s, 3s]
3530
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]];
3531
+ * }
3532
+ * ```
3533
+ *
3534
+ * @generated from field: repeated google.protobuf.Duration not_in = 8;
3535
+ */
3536
+ notIn: Duration[];
3537
+ };
3538
+
3539
+ /**
3540
+ * Describes the message buf.validate.DurationRules.
3541
+ * Use `create(DurationRulesSchema)` to create a new message.
3542
+ */
3543
+ export const DurationRulesSchema: GenMessage<DurationRules> = /*@__PURE__*/
3544
+ messageDesc(file_buf_validate_validate, 22);
3545
+
3546
+ /**
3547
+ * TimestampRules describe the constraints applied exclusively to the `google.protobuf.Timestamp` well-known type.
3548
+ *
3549
+ * @generated from message buf.validate.TimestampRules
3550
+ */
3551
+ export type TimestampRules = Message<"buf.validate.TimestampRules"> & {
3552
+ /**
3553
+ * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated.
3554
+ *
3555
+ * ```proto
3556
+ * message MyTimestamp {
3557
+ * // value must equal 2023-05-03T10:00:00Z
3558
+ * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}];
3559
+ * }
3560
+ * ```
3561
+ *
3562
+ * @generated from field: optional google.protobuf.Timestamp const = 2;
3563
+ */
3564
+ const?: Timestamp;
3565
+
3566
+ /**
3567
+ * @generated from oneof buf.validate.TimestampRules.less_than
3568
+ */
3569
+ lessThan: {
3570
+ /**
3571
+ * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated.
3572
+ *
3573
+ * ```proto
3574
+ * message MyDuration {
3575
+ * // duration must be less than 'P3D' [duration.lt]
3576
+ * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }];
3577
+ * }
3578
+ * ```
3579
+ *
3580
+ * @generated from field: google.protobuf.Timestamp lt = 3;
3581
+ */
3582
+ value: Timestamp;
3583
+ case: "lt";
3584
+ } | {
3585
+ /**
3586
+ * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated.
3587
+ *
3588
+ * ```proto
3589
+ * message MyTimestamp {
3590
+ * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte]
3591
+ * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }];
3592
+ * }
3593
+ * ```
3594
+ *
3595
+ * @generated from field: google.protobuf.Timestamp lte = 4;
3596
+ */
3597
+ value: Timestamp;
3598
+ case: "lte";
3599
+ } | {
3600
+ /**
3601
+ * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule.
3602
+ *
3603
+ * ```proto
3604
+ * message MyTimestamp {
3605
+ * // value must be less than now
3606
+ * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true];
3607
+ * }
3608
+ * ```
3609
+ *
3610
+ * @generated from field: bool lt_now = 7;
3611
+ */
3612
+ value: boolean;
3613
+ case: "ltNow";
3614
+ } | { case: undefined; value?: undefined };
3615
+
3616
+ /**
3617
+ * @generated from oneof buf.validate.TimestampRules.greater_than
3618
+ */
3619
+ greaterThan: {
3620
+ /**
3621
+ * `gt` requires the timestamp field value to be greater than the specified
3622
+ * value (exclusive). If the value of `gt` is larger than a specified `lt`
3623
+ * or `lte`, the range is reversed, and the field value must be outside the
3624
+ * specified range. If the field value doesn't meet the required conditions,
3625
+ * an error message is generated.
3626
+ *
3627
+ * ```proto
3628
+ * message MyTimestamp {
3629
+ * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt]
3630
+ * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }];
3631
+ *
3632
+ * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt]
3633
+ * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];
3634
+ *
3635
+ * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive]
3636
+ * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];
3637
+ * }
3638
+ * ```
3639
+ *
3640
+ * @generated from field: google.protobuf.Timestamp gt = 5;
3641
+ */
3642
+ value: Timestamp;
3643
+ case: "gt";
3644
+ } | {
3645
+ /**
3646
+ * `gte` requires the timestamp field value to be greater than or equal to the
3647
+ * specified value (exclusive). If the value of `gte` is larger than a
3648
+ * specified `lt` or `lte`, the range is reversed, and the field value
3649
+ * must be outside the specified range. If the field value doesn't meet
3650
+ * the required conditions, an error message is generated.
3651
+ *
3652
+ * ```proto
3653
+ * message MyTimestamp {
3654
+ * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte]
3655
+ * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }];
3656
+ *
3657
+ * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt]
3658
+ * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];
3659
+ *
3660
+ * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive]
3661
+ * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];
3662
+ * }
3663
+ * ```
3664
+ *
3665
+ * @generated from field: google.protobuf.Timestamp gte = 6;
3666
+ */
3667
+ value: Timestamp;
3668
+ case: "gte";
3669
+ } | {
3670
+ /**
3671
+ * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule.
3672
+ *
3673
+ * ```proto
3674
+ * message MyTimestamp {
3675
+ * // value must be greater than now
3676
+ * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true];
3677
+ * }
3678
+ * ```
3679
+ *
3680
+ * @generated from field: bool gt_now = 8;
3681
+ */
3682
+ value: boolean;
3683
+ case: "gtNow";
3684
+ } | { case: undefined; value?: undefined };
3685
+
3686
+ /**
3687
+ * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated.
3688
+ *
3689
+ * ```proto
3690
+ * message MyTimestamp {
3691
+ * // value must be within 1 hour of now
3692
+ * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}];
3693
+ * }
3694
+ * ```
3695
+ *
3696
+ * @generated from field: optional google.protobuf.Duration within = 9;
3697
+ */
3698
+ within?: Duration;
3699
+ };
3700
+
3701
+ /**
3702
+ * Describes the message buf.validate.TimestampRules.
3703
+ * Use `create(TimestampRulesSchema)` to create a new message.
3704
+ */
3705
+ export const TimestampRulesSchema: GenMessage<TimestampRules> = /*@__PURE__*/
3706
+ messageDesc(file_buf_validate_validate, 23);
3707
+
3708
+ /**
3709
+ * Specifies how FieldConstraints.ignore behaves. See the documentation for
3710
+ * FieldConstraints.required for definitions of "populated" and "nullable".
3711
+ *
3712
+ * @generated from enum buf.validate.Ignore
3713
+ */
3714
+ export enum Ignore {
3715
+ /**
3716
+ * Validation is only skipped if it's an unpopulated nullable fields.
3717
+ *
3718
+ * @generated from enum value: IGNORE_UNSPECIFIED = 0;
3719
+ */
3720
+ UNSPECIFIED = 0,
3721
+
3722
+ /**
3723
+ * Validation is skipped if the field is unpopulated.
3724
+ *
3725
+ * @generated from enum value: IGNORE_EMPTY = 1;
3726
+ */
3727
+ EMPTY = 1,
3728
+
3729
+ /**
3730
+ * Validation is skipped if the field is unpopulated or if it is a nullable
3731
+ * field populated with its default value.
3732
+ *
3733
+ * @generated from enum value: IGNORE_DEFAULT = 2;
3734
+ */
3735
+ DEFAULT = 2,
3736
+ }
3737
+
3738
+ /**
3739
+ * Describes the enum buf.validate.Ignore.
3740
+ */
3741
+ export const IgnoreSchema: GenEnum<Ignore> = /*@__PURE__*/
3742
+ enumDesc(file_buf_validate_validate, 0);
3743
+
3744
+ /**
3745
+ * WellKnownRegex contain some well-known patterns.
3746
+ *
3747
+ * @generated from enum buf.validate.KnownRegex
3748
+ */
3749
+ export enum KnownRegex {
3750
+ /**
3751
+ * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0;
3752
+ */
3753
+ UNSPECIFIED = 0,
3754
+
3755
+ /**
3756
+ * HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2).
3757
+ *
3758
+ * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1;
3759
+ */
3760
+ HTTP_HEADER_NAME = 1,
3761
+
3762
+ /**
3763
+ * HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4).
3764
+ *
3765
+ * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2;
3766
+ */
3767
+ HTTP_HEADER_VALUE = 2,
3768
+ }
3769
+
3770
+ /**
3771
+ * Describes the enum buf.validate.KnownRegex.
3772
+ */
3773
+ export const KnownRegexSchema: GenEnum<KnownRegex> = /*@__PURE__*/
3774
+ enumDesc(file_buf_validate_validate, 1);
3775
+
3776
+ /**
3777
+ * Rules specify the validations to be performed on this message. By default,
3778
+ * no validation is performed against a message.
3779
+ *
3780
+ * @generated from extension: optional buf.validate.MessageConstraints message = 1159;
3781
+ */
3782
+ export const message: GenExtension<MessageOptions, MessageConstraints> = /*@__PURE__*/
3783
+ extDesc(file_buf_validate_validate, 0);
3784
+
3785
+ /**
3786
+ * Rules specify the validations to be performed on this oneof. By default,
3787
+ * no validation is performed against a oneof.
3788
+ *
3789
+ * @generated from extension: optional buf.validate.OneofConstraints oneof = 1159;
3790
+ */
3791
+ export const oneof: GenExtension<OneofOptions, OneofConstraints> = /*@__PURE__*/
3792
+ extDesc(file_buf_validate_validate, 1);
3793
+
3794
+ /**
3795
+ * Rules specify the validations to be performed on this field. By default,
3796
+ * no validation is performed against a field.
3797
+ *
3798
+ * @generated from extension: optional buf.validate.FieldConstraints field = 1159;
3799
+ */
3800
+ export const field: GenExtension<FieldOptions, FieldConstraints> = /*@__PURE__*/
3801
+ extDesc(file_buf_validate_validate, 2);
3802
+