@jantstack/adonis-authz 1.1.0 → 2.4.0-alpha.1

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 (236) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +837 -51
  3. package/build/commands/authz_catalog_diff.d.ts +28 -0
  4. package/build/commands/authz_catalog_diff.d.ts.map +1 -0
  5. package/build/commands/authz_catalog_diff.js +67 -0
  6. package/build/commands/authz_catalog_diff.js.map +1 -0
  7. package/build/commands/authz_catalog_prune_orphans.d.ts +78 -0
  8. package/build/commands/authz_catalog_prune_orphans.d.ts.map +1 -0
  9. package/build/commands/authz_catalog_prune_orphans.js +136 -0
  10. package/build/commands/authz_catalog_prune_orphans.js.map +1 -0
  11. package/build/commands/authz_catalog_sync.d.ts +37 -0
  12. package/build/commands/authz_catalog_sync.d.ts.map +1 -0
  13. package/build/commands/authz_catalog_sync.js +81 -0
  14. package/build/commands/authz_catalog_sync.js.map +1 -0
  15. package/build/commands/authz_freeze.d.ts +44 -0
  16. package/build/commands/authz_freeze.d.ts.map +1 -0
  17. package/build/commands/authz_freeze.js +95 -0
  18. package/build/commands/authz_freeze.js.map +1 -0
  19. package/build/commands/authz_reconcile.d.ts +102 -0
  20. package/build/commands/authz_reconcile.d.ts.map +1 -0
  21. package/build/commands/authz_reconcile.js +294 -0
  22. package/build/commands/authz_reconcile.js.map +1 -0
  23. package/build/commands/authz_relations_reconcile.d.ts +73 -0
  24. package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
  25. package/build/commands/authz_relations_reconcile.js +225 -0
  26. package/build/commands/authz_relations_reconcile.js.map +1 -0
  27. package/build/commands/authz_scopes_relay.d.ts +47 -0
  28. package/build/commands/authz_scopes_relay.d.ts.map +1 -0
  29. package/build/commands/authz_scopes_relay.js +141 -0
  30. package/build/commands/authz_scopes_relay.js.map +1 -0
  31. package/build/commands/authz_unfreeze.d.ts +37 -0
  32. package/build/commands/authz_unfreeze.d.ts.map +1 -0
  33. package/build/commands/authz_unfreeze.js +92 -0
  34. package/build/commands/authz_unfreeze.js.map +1 -0
  35. package/build/commands/main.d.ts +8 -1
  36. package/build/commands/main.d.ts.map +1 -1
  37. package/build/commands/main.js +8 -1
  38. package/build/commands/main.js.map +1 -1
  39. package/build/commands/openfga_provision.d.ts +46 -4
  40. package/build/commands/openfga_provision.d.ts.map +1 -1
  41. package/build/commands/openfga_provision.js +91 -7
  42. package/build/commands/openfga_provision.js.map +1 -1
  43. package/build/configure.d.ts +11 -0
  44. package/build/configure.d.ts.map +1 -1
  45. package/build/configure.js +37 -1
  46. package/build/configure.js.map +1 -1
  47. package/build/index.d.ts +75 -7
  48. package/build/index.d.ts.map +1 -1
  49. package/build/index.js +67 -5
  50. package/build/index.js.map +1 -1
  51. package/build/providers/authz_provider.d.ts +26 -2
  52. package/build/providers/authz_provider.d.ts.map +1 -1
  53. package/build/providers/authz_provider.js +48 -2
  54. package/build/providers/authz_provider.js.map +1 -1
  55. package/build/services/relations.d.ts +14 -0
  56. package/build/services/relations.d.ts.map +1 -0
  57. package/build/services/relations.js +17 -0
  58. package/build/services/relations.js.map +1 -0
  59. package/build/src/catalog/catalog.d.ts +289 -0
  60. package/build/src/catalog/catalog.d.ts.map +1 -0
  61. package/build/src/catalog/catalog.js +859 -0
  62. package/build/src/catalog/catalog.js.map +1 -0
  63. package/build/src/catalog/catalog_cache.d.ts +324 -0
  64. package/build/src/catalog/catalog_cache.d.ts.map +1 -0
  65. package/build/src/catalog/catalog_cache.js +666 -0
  66. package/build/src/catalog/catalog_cache.js.map +1 -0
  67. package/build/src/clock.d.ts +24 -0
  68. package/build/src/clock.d.ts.map +1 -0
  69. package/build/src/clock.js +7 -0
  70. package/build/src/clock.js.map +1 -0
  71. package/build/src/define_config.d.ts +201 -7
  72. package/build/src/define_config.d.ts.map +1 -1
  73. package/build/src/define_config.js.map +1 -1
  74. package/build/src/drivers/database_driver.d.ts +324 -15
  75. package/build/src/drivers/database_driver.d.ts.map +1 -1
  76. package/build/src/drivers/database_driver.js +1107 -128
  77. package/build/src/drivers/database_driver.js.map +1 -1
  78. package/build/src/drivers/database_relations_driver.d.ts +75 -0
  79. package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
  80. package/build/src/drivers/database_relations_driver.js +450 -0
  81. package/build/src/drivers/database_relations_driver.js.map +1 -0
  82. package/build/src/drivers/openfga_driver.d.ts +963 -55
  83. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  84. package/build/src/drivers/openfga_driver.js +2693 -372
  85. package/build/src/drivers/openfga_driver.js.map +1 -1
  86. package/build/src/drivers/openfga_facts.d.ts +369 -0
  87. package/build/src/drivers/openfga_facts.d.ts.map +1 -0
  88. package/build/src/drivers/openfga_facts.js +813 -0
  89. package/build/src/drivers/openfga_facts.js.map +1 -0
  90. package/build/src/drivers/openfga_relations_driver.d.ts +120 -0
  91. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
  92. package/build/src/drivers/openfga_relations_driver.js +466 -0
  93. package/build/src/drivers/openfga_relations_driver.js.map +1 -0
  94. package/build/src/errors.d.ts +586 -0
  95. package/build/src/errors.d.ts.map +1 -1
  96. package/build/src/errors.js +583 -0
  97. package/build/src/errors.js.map +1 -1
  98. package/build/src/expiry.d.ts +27 -0
  99. package/build/src/expiry.d.ts.map +1 -0
  100. package/build/src/expiry.js +50 -0
  101. package/build/src/expiry.js.map +1 -0
  102. package/build/src/freeze.d.ts +120 -0
  103. package/build/src/freeze.d.ts.map +1 -0
  104. package/build/src/freeze.js +172 -0
  105. package/build/src/freeze.js.map +1 -0
  106. package/build/src/hierarchical_resolver.d.ts +56 -0
  107. package/build/src/hierarchical_resolver.d.ts.map +1 -0
  108. package/build/src/hierarchical_resolver.js +87 -0
  109. package/build/src/hierarchical_resolver.js.map +1 -0
  110. package/build/src/{middleware → http}/app_access_middleware.d.ts +8 -6
  111. package/build/src/http/app_access_middleware.d.ts.map +1 -0
  112. package/build/src/{middleware → http}/app_access_middleware.js +10 -26
  113. package/build/src/http/app_access_middleware.js.map +1 -0
  114. package/build/src/http/resource_access_middleware.d.ts +105 -0
  115. package/build/src/http/resource_access_middleware.d.ts.map +1 -0
  116. package/build/src/http/resource_access_middleware.js +81 -0
  117. package/build/src/http/resource_access_middleware.js.map +1 -0
  118. package/build/src/identity.d.ts +228 -0
  119. package/build/src/identity.d.ts.map +1 -0
  120. package/build/src/identity.js +457 -0
  121. package/build/src/identity.js.map +1 -0
  122. package/build/src/manager.d.ts +536 -7
  123. package/build/src/manager.d.ts.map +1 -1
  124. package/build/src/manager.js +2676 -23
  125. package/build/src/manager.js.map +1 -1
  126. package/build/src/memoize_ancestors.d.ts +23 -0
  127. package/build/src/memoize_ancestors.d.ts.map +1 -0
  128. package/build/src/memoize_ancestors.js +42 -0
  129. package/build/src/memoize_ancestors.js.map +1 -0
  130. package/build/src/models/authz_assignment.d.ts +11 -11
  131. package/build/src/models/authz_assignment.d.ts.map +1 -1
  132. package/build/src/models/authz_deny.d.ts +11 -11
  133. package/build/src/models/authz_deny.d.ts.map +1 -1
  134. package/build/src/models/authz_permission.d.ts +17 -11
  135. package/build/src/models/authz_permission.d.ts.map +1 -1
  136. package/build/src/models/authz_permission.js +4 -0
  137. package/build/src/models/authz_permission.js.map +1 -1
  138. package/build/src/models/authz_role.d.ts +19 -12
  139. package/build/src/models/authz_role.d.ts.map +1 -1
  140. package/build/src/models/authz_role.js +6 -1
  141. package/build/src/models/authz_role.js.map +1 -1
  142. package/build/src/models/authz_role_permission.d.ts +11 -11
  143. package/build/src/models/authz_role_permission.d.ts.map +1 -1
  144. package/build/src/openfga.d.ts +29 -0
  145. package/build/src/openfga.d.ts.map +1 -0
  146. package/build/src/openfga.js +26 -0
  147. package/build/src/openfga.js.map +1 -0
  148. package/build/src/reconcile.d.ts +37 -0
  149. package/build/src/reconcile.d.ts.map +1 -0
  150. package/build/src/reconcile.js +69 -0
  151. package/build/src/reconcile.js.map +1 -0
  152. package/build/src/relation_partition_trigger.d.ts +8 -0
  153. package/build/src/relation_partition_trigger.d.ts.map +1 -0
  154. package/build/src/relation_partition_trigger.js +85 -0
  155. package/build/src/relation_partition_trigger.js.map +1 -0
  156. package/build/src/relations/define_relations_config.d.ts +58 -0
  157. package/build/src/relations/define_relations_config.d.ts.map +1 -0
  158. package/build/src/relations/define_relations_config.js +144 -0
  159. package/build/src/relations/define_relations_config.js.map +1 -0
  160. package/build/src/relations/manager.d.ts +38 -0
  161. package/build/src/relations/manager.d.ts.map +1 -0
  162. package/build/src/relations/manager.js +156 -0
  163. package/build/src/relations/manager.js.map +1 -0
  164. package/build/src/relations/reconcile.d.ts +62 -0
  165. package/build/src/relations/reconcile.d.ts.map +1 -0
  166. package/build/src/relations/reconcile.js +138 -0
  167. package/build/src/relations/reconcile.js.map +1 -0
  168. package/build/src/relations_config_store.d.ts +22 -0
  169. package/build/src/relations_config_store.d.ts.map +1 -0
  170. package/build/src/relations_config_store.js +74 -0
  171. package/build/src/relations_config_store.js.map +1 -0
  172. package/build/src/scope_outbox.d.ts +69 -0
  173. package/build/src/scope_outbox.d.ts.map +1 -0
  174. package/build/src/scope_outbox.js +291 -0
  175. package/build/src/scope_outbox.js.map +1 -0
  176. package/build/src/shared/backend_guard.d.ts +106 -0
  177. package/build/src/shared/backend_guard.d.ts.map +1 -0
  178. package/build/src/shared/backend_guard.js +246 -0
  179. package/build/src/shared/backend_guard.js.map +1 -0
  180. package/build/src/shared/sql_expiry.d.ts +53 -0
  181. package/build/src/shared/sql_expiry.d.ts.map +1 -0
  182. package/build/src/shared/sql_expiry.js +66 -0
  183. package/build/src/shared/sql_expiry.js.map +1 -0
  184. package/build/src/sql_descendants.d.ts +97 -0
  185. package/build/src/sql_descendants.d.ts.map +1 -0
  186. package/build/src/sql_descendants.js +203 -0
  187. package/build/src/sql_descendants.js.map +1 -0
  188. package/build/src/testing/contract.d.ts +212 -7
  189. package/build/src/testing/contract.d.ts.map +1 -1
  190. package/build/src/testing/contract.js +3449 -24
  191. package/build/src/testing/contract.js.map +1 -1
  192. package/build/src/testing/main.d.ts +10 -2
  193. package/build/src/testing/main.d.ts.map +1 -1
  194. package/build/src/testing/main.js +5 -1
  195. package/build/src/testing/main.js.map +1 -1
  196. package/build/src/testing/migration_contract.d.ts +284 -0
  197. package/build/src/testing/migration_contract.d.ts.map +1 -0
  198. package/build/src/testing/migration_contract.js +586 -0
  199. package/build/src/testing/migration_contract.js.map +1 -0
  200. package/build/src/testing/relations_contract.d.ts +51 -0
  201. package/build/src/testing/relations_contract.d.ts.map +1 -0
  202. package/build/src/testing/relations_contract.js +654 -0
  203. package/build/src/testing/relations_contract.js.map +1 -0
  204. package/build/src/testing/relations_reconcile_contract.d.ts +24 -0
  205. package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -0
  206. package/build/src/testing/relations_reconcile_contract.js +172 -0
  207. package/build/src/testing/relations_reconcile_contract.js.map +1 -0
  208. package/build/src/testing/scope_tree.d.ts +65 -0
  209. package/build/src/testing/scope_tree.d.ts.map +1 -0
  210. package/build/src/testing/scope_tree.js +145 -0
  211. package/build/src/testing/scope_tree.js.map +1 -0
  212. package/build/src/traits/authz_scopes.d.ts +30 -6
  213. package/build/src/traits/authz_scopes.d.ts.map +1 -1
  214. package/build/src/traits/authz_scopes.js +30 -18
  215. package/build/src/traits/authz_scopes.js.map +1 -1
  216. package/build/src/traits/has_uuid.d.ts +12 -12
  217. package/build/src/traits/has_uuid.d.ts.map +1 -1
  218. package/build/src/types.d.ts +1313 -28
  219. package/build/src/types.d.ts.map +1 -1
  220. package/build/src/types.js +20 -4
  221. package/build/src/types.js.map +1 -1
  222. package/build/stubs/config/app_acl.stub +4 -2
  223. package/build/stubs/config/authorization.stub +168 -14
  224. package/build/stubs/migration.stub +183 -13
  225. package/build/stubs/scopes_outbox_migration.stub +57 -0
  226. package/package.json +14 -7
  227. package/build/commands/openfga_import.d.ts +0 -28
  228. package/build/commands/openfga_import.d.ts.map +0 -1
  229. package/build/commands/openfga_import.js +0 -74
  230. package/build/commands/openfga_import.js.map +0 -1
  231. package/build/src/catalog.d.ts +0 -3
  232. package/build/src/catalog.d.ts.map +0 -1
  233. package/build/src/catalog.js +0 -103
  234. package/build/src/catalog.js.map +0 -1
  235. package/build/src/middleware/app_access_middleware.d.ts.map +0 -1
  236. package/build/src/middleware/app_access_middleware.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/catalog/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC5C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAUnC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpI,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC3H,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA+B;IAChE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAY;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3C,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,qBAAqB,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AAErD;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,GAAY;IACtD,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,sIAAsI;AACtI,MAAM,UAAU,kBAAkB,CAChC,IAA4C,EAC5C,UAAkB,EAClB,MAAmC;IAEnC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,wBAAwB,CAChC,WAAW,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,SAAS,uBAAuB,UAAU,mCAAmC;YACjH,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+EAA+E,CACtG,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAEpC,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAA;AAuE/C;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,OAAoB;IAChD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuC,CAAA;IACnE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,qEAAqE;QACrE,iEAAiE;QACjE,oEAAoE;QACpE,gDAAgD;QAChD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,oBAAoB,CAC5B,6BAA6B,IAAI,CAAC,IAAI,oFAAoF;oBACxH,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAC1E,CAAA;YACH,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY;gBAAE,eAAe,CAAC,KAAK,CAAC,CAAA;YAC7D,6DAA6D;YAC7D,+DAA+D;YAC/D,sEAAsE;YACtE,gEAAgE;YAChE,uDAAuD;YACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAE,CAAA;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;gBACvC,MAAM,IAAI,oBAAoB,CAC5B,6BAA6B,IAAI,CAAC,IAAI,+CAA+C;oBACnF,IAAI,OAAO,CAAC,MAAM,uBAAuB,iBAAiB,gDAAgD,CAC7G,CAAA;YACH,CAAC;QACH,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC/F,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACjC,gEAAgE;QAChE,yEAAyE;QACzE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,yEAAyE;QACzE,2EAA2E;QAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,iBAAiB,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAChC,qEAAqE;YACrE,mDAAmD;YACnD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IACD,sBAAsB,CACpB,SAAS,EACT,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACvC,CAAA;IACD,sBAAsB,CACpB,KAAK,EACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACjC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAoB,EACpB,UAA8B,EAAE;IAEhC,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAA;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,0BAA0B,CAAA;IACjE,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAE,EAAa,EAAgB,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IAC7G,MAAM,GAAG,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAa,EAAuB,EAAE,CAC1E,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAExD,wEAAwE;IACxE,0EAA0E;IAC1E,0EAA0E;IAC1E,6CAA6C;IAC7C,EAAE;IACF,oEAAoE;IACpE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,oEAAoE;IACpE,2EAA2E;IAC3E,iDAAiD;IACjD,IAAI,MAAyB,CAAA;IAC7B,IAAI,QAAQ,GAAqC,IAAI,CAAA;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QAC7F,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACpB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC1B,CAAC;YAAS,CAAC;QACT,sBAAsB,EAAE,CAAA;IAC1B,CAAC;IACD,sEAAsE;IACtE,yEAAyE;IACzE,uEAAuE;IACvE,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,OAAO,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAoB,EACpB,KAAuB,EACvB,GAAuD,EACvD,GAA8D,EAC9D,SAAiB,EACjB,UAA8B;IAE9B,MAAM,MAAM,GAAsB,EAAE,gBAAgB,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAA;IACtF,IAAI,QAAQ,GAAqC,IAAI,CAAA;IACrD,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CACrB,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAClC,sEAAsE;QACtE,qEAAqE;QACrE,0EAA0E;QAC1E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAChG,sBAAsB,CAAC,SAAS,EAAE;YAChC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC;SAC5C,CAAC,CAAA;QAEF,mEAAmE;QACnE,wEAAwE;QACxE,yEAAyE;QACzE,gEAAgE;QAChE,yEAAyE;QACzE,gDAAgD;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS;gBAChC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAC1C,CAAC,CAAA;YACF,UAAU,CAAC,iBAAiB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACrD,CAAC;QAED,sEAAsE;QACtE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CACjD,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CACvF,CAAA;YACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,YAAY,EAAE,CAAC;oBAC3E,MAAM,GAAG,CAAC,wBAAwB,EAAE,GAAG,EAAE,CACvC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAC9H,CAAA;gBACH,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,MAAM,GAAG,CAAC,wBAAwB,EAAE,GAAG,EAAE,CACvC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC;gBACpC,IAAI,EAAE,MAAM,EAAE;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;gBACrC,aAAa,EAAE,YAAY;gBAC3B,UAAU,EAAE,WAAW,EAAE;gBACzB,UAAU,EAAE,WAAW,EAAE;aAC1B,CAAC,CACH,CAAA;QACH,CAAC;QAED,yEAAyE;QACzE,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK;YAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW;gBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3F,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAChD,GAAG;aACA,IAAI,CAAC,mBAAmB,CAAC;aACzB,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;aAChC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAC3C,CAAA;QACD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzF,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAC9E,CAAA;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAA;gBACrE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;YAChE,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,sEAAsE;QACtE,mEAAmE;QACnE,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,mEAAmE;QACnE,kEAAkE;QAClE,sEAAsE;QACtE,gDAAgD;QAChD,EAAE;QACF,wEAAwE;QACxE,mEAAmE;QACnE,uEAAuE;QACvE,wEAAwE;QACxE,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;YAC3C,CAAC,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACjC,GAAG;iBACA,IAAI,CAAC,aAAa,CAAC;iBACnB,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC/D,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;iBAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAC3D;YACH,CAAC,CAAC,EAAE,CAAA;QACN,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CACpC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAClF,CAAA;YACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;iBACrC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAC3C,GAAG;iBACA,IAAI,CAAC,aAAa,CAAC;iBACnB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;iBACxB,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;iBACnC,KAAK,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;iBAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAC1B,CAAA;YAED,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAA;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACjC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;oBAC9B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;oBAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;oBACrC,UAAU,EAAE,IAAI,CAAC,SAAS;oBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;oBACpB,eAAe,EAAE,gBAAgB;oBACjC,UAAU,EAAE,WAAW,EAAE;oBACzB,UAAU,EAAE,WAAW,EAAE;iBAC1B,CAAC,CACH,CAAA;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClE,kDAAkD;gBAClD,MAAM,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAC/B,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAC5E,CAAA;YACH,CAAC;YAED,wDAAwD;YACxD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CAAA;YACjF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,CAC3C,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAClG,CAAA;YACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;YAE1E,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAQ;gBAClC,MAAM,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACjC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC;oBACzC,IAAI,EAAE,MAAM,EAAE;oBACd,SAAS,EAAE,QAAQ;oBACnB,eAAe,EAAE,QAAQ;oBACzB,UAAU,EAAE,WAAW,EAAE;iBAC1B,CAAC,CACH,CAAA;YACH,CAAC;YAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;gBACxE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAChC,GAAG;yBACA,IAAI,CAAC,wBAAwB,CAAC;yBAC9B,OAAO,CACN,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B;yBACA,MAAM,EAAE,CACZ,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,sEAAsE;QACtE,oEAAoE;QACpE,+DAA+D;QAC/D,mEAAmE;QACnE,uEAAuE;QACvE,8DAA8D;QAC9D,wEAAwE;QACxE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QACjE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC,CACvD,CAAA;YACD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAC9C,GAAG;iBACA,IAAI,CAAC,wBAAwB,CAAC;iBAC9B,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,kCAAkC,CAAC;iBAC3E,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,wCAAwC,CAAC;iBAC7F,OAAO,CACN,wBAAwB,EACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3B;iBACA,MAAM,CACL,+BAA+B,EAC/B,+BAA+B,EAC/B,sCAAsC,EACtC,gDAAgD,EAChD,2CAA2C,CAC5C,CACJ,CAAA;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;gBACzD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAc,CAAC;oBAAE,SAAQ;gBACzE,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC;oBACjC,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC5B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAc;wBAC/C,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;qBACpC;oBACD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;iBACzC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,mEAAmE;QACnE,wEAAwE;QACxE,wEAAwE;QACxE,sCAAsC;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,GAAG,MAAM,6BAA6B,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACjH,CAAC;QAED,uEAAuE;QACvE,uEAAuE;QACvE,4BAA4B;IAC9B,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CACrC,CAAA;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,MAAoC,EACpC,MAAkE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IAE1F,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3G,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACjF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACpH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAkB,WAAqB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACpH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAoB,KAAe,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3G,KAAK,MAAM,IAAI,IAAI,KAAc,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QAC1D,kEAAkE;QAClE,uCAAuC;QACvC,IAAI,IAAI,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IACD,OAAO;QACL,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;QAC5C,KAAK,EAAE,CAAC,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aAC7D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpE,CAAA;AACH,CAAC;AA2ED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAoB,EACpB,UAAqE,EAAE;IAEvE,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,0BAA0B,CAAA;IACjE,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAE,EAAa,EAAgB,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IAC7G,MAAM,IAAI,GAAgB;QACxB,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,EAAE;QAClB,sBAAsB,EAAE,EAAE;QAC1B,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;QACtB,sBAAsB,EAAE,EAAE;KAC3B,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;IACzH,yDAAyD;IACzD,sBAAsB,CAAC,SAAS,EAAE;QAChC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC;KAC7C,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzF,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACjF,CAAA;IACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAC/E,CAAA;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvC,SAAQ;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;QAClD,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;QAClD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,KAAK,qBAAqB,CAAA;YAChD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;gBAC/B,UAAU,EAAE,IAAI,CAAC,IAAI;gBACrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAiB,CAAC,CAAC,CAAC,IAAI;gBACjE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC3D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,2EAA2E;IAC3E,qDAAqD;IACrD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;gBAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;QACvH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,CAC3C,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC,CACrH,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;QACtG,wEAAwE;QACxE,uEAAuE;QACvE,uCAAuC;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU,CAAC,CAAA;QAClG,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;QAC7G,CAAC;IACH,CAAC;IACD,IAAI,CAAC,sBAAsB,GAAG,MAAM,0BAA0B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC5E,wEAAwE;IACxE,2DAA2D;IAC3D,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACnE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAA;IAC9C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAA;IACtD,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;YAAE,SAAQ;QACvI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,CACf,MAAM,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAC1B,EAAE;aACC,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;aACxB,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;aACnC,KAAK,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;aAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACtB,KAAK,CAAC,CAAC,CAAC,CACZ,CACF,CAAC,CAAC,CAAC,CAAA;QACJ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YACtE,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YACpF,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,IAAI;aACtB,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,CAC3C,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAC9F,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CACpF,CAAA;QACD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YACpF,CAAC;QACH,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,OAAO,CACL,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAChC,IAAI,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAChC,IAAI,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC,CACzC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,0BAA0B,CACvC,GAAuD,EACvD,OAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IACjE,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAiC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAChH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAChD,EAAE;SACC,IAAI,CAAC,wBAAwB,CAAC;SAC9B,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,kCAAkC,CAAC;SAC3E,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,wCAAwC,CAAC;SAC7F,OAAO,CACN,wBAAwB,EACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3B;SACA,MAAM,CACL,+BAA+B,EAC/B,sCAAsC,EACtC,gDAAgD,EAChD,2CAA2C,CAC5C,CACJ,CAAA;IACD,MAAM,KAAK,GAA0C,EAAE,CAAA;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;QACzD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAc,CAAC;YAAE,SAAQ;QACzE,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAc;YAC/C,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;YACnC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;SACzC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,gBAAgB,CAC7B,GAAuD,EACvD,YAAiC;IAEjC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAC5C,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC,CACvE,CAAA;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,UAAU,EAAE,CAAA;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IACjD,MAAM,OAAO,GAAG,KAAK,EAAE,QAAgB,EAA4B,EAAE;QACnE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAA;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QACpC,IAAI,IAAI,GAAoB,IAAI,CAAA;QAChC,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC3C,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,MAAM,GAAoF;QAC9F,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;KACvB,CAAA;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,SAAQ;QAC/B,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAwB,CAAA;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAA;QAC3D,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,iEAAiE;YACjE,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,oEAAoE;QACpE,+DAA+D;QAC/D,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,CAAC,MAAM;gBAAE,SAAQ;YACrB,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBACrB,oEAAoE;gBACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,SAAQ;gBACjC,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpC,4DAA4D;oBAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;oBAC7B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;wBAC3H,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;oBAClE,CAAC;oBACD,SAAQ;gBACV,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,MAAM;gBAAE,SAAQ;YAC/B,0EAA0E;YAC1E,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAiB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,UAAU,EAAE,CAAA;IAChF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB;QAAE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAA;IAC7F,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAC1G,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACvF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,mDAAmD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACzG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3F,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAC1E,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CACR,qCAAqC,CAAC,CAAC,UAAU,UAAU,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC;gBAChH,qFAAqF,CACxF,CAAA;YACD,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,UAAU,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1G,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CACR,kCAAkC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,UAAU,KAAK;YAC/F,qGAAqG,CACxG,CAAA;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR,0FAA0F,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,GAAG;YAChH,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,8EAA8E;YAC3G,wFAAwF,CAC3F,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;AAClG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAkE;IACpG,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CACR,kDAAkD,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,KAAK,sBAAsB;YAC7G,2GAA2G;YAC3G,qDAAqD,CACxD,CAAA;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,iDAAiD,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,KAAK,qBAAqB;YAC3G,GAAG,CAAC,CAAC,UAAU,yCAAyC,CAAC,CAAC,KAAK,6CAA6C;YAC5G,sDAAsD,CACzD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAKD;;;;;;;GAOG;AACH,KAAK,UAAU,uBAAuB,CAAC,QAAyB;IAC9D,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,EAAE,CAAC,CAAA;IACzD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC3C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAA;IACjD,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAA;YAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;;gBACzF,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,gBAAgB,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;YAClF,CAAC;;gBAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,oBAAoB,CAC5B,2BAA2B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C;YACxF,6FAA6F,CAChG,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,UAA0E,EAAE;IAE5E,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IACrD,0EAA0E;IAC1E,qEAAqE;IACrE,iEAAiE;IACjE,kEAAkE;IAClE,0DAA0D;IAC1D,IAAI,MAAM,GAAa,EAAE,CAAA;IACzB,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,aAAa;IACb,MAAM,OAAO,GAAiE;QAC5E,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;KACvB,CAAA;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAC3H,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxC,IACE,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAChH,EACD,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QACD,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACjD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,WAAW,CAAC,CAAA;YAC7C,SAAQ;QACV,CAAC;QACD,MAAM,GAAG,KAAK,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,eAAe,CAAC,CAAA;QACjD,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAA;QACrG,KAAK,MAAM,IAAI,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACpD,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,GAAG,KAAK,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACvD,KAAK,MAAM,IAAI,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CACR,gHAAgH;gBAC9G,uCAAuC,CAC1C,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAyB,EACzB,UAA8B,EAAE;IAEhC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,gBAAgB,GAAqB,EAAE,CAAA;IAC7C,MAAM,sBAAsB,GAAgD,EAAE,CAAA;IAC9E,KAAK,MAAM,IAAI,IAAI,MAAM,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpD,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACjD,sBAAsB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC7D,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,324 @@
1
+ import type { TransactionClientContract } from '@adonisjs/lucid/types/database';
2
+ import type { CatalogRole, CatalogRoleRef, ScopeType } from '../types.js';
3
+ export type { CatalogRole, CatalogRoleRef };
4
+ /**
5
+ * Memo del CATÁLOGO (roles, permisos y vínculos rol→permiso), y de nada más.
6
+ *
7
+ * El camino caliente de `authorize` consultaba `authz_*` en cada pregunta
8
+ * (`findPermission` en ambos drivers; `rolesGranting` además en openfga)
9
+ * para leer algo que solo cambia cuando el consumidor sincroniza su config.
10
+ * Este memo carga las tres tablas una vez, perezosamente, y las sirve desde
11
+ * memoria mientras la BASE diga que siguen vigentes. Lo que NUNCA cachea:
12
+ * hechos (asignaciones, denies) ni decisiones — un `authorize` siempre
13
+ * pregunta al backend de hechos; lo que se ahorra es el "¿qué uuid tiene
14
+ * `docs:read`?".
15
+ *
16
+ * Invariante (2D · F1): **el catálogo que decide es el de la BD.** La tabla
17
+ * `authz_catalog_version` (una fila, `id = 1`) lleva un entero que
18
+ * `syncAuthzCatalog` incrementa DENTRO de su transacción. Cada foto recuerda
19
+ * con qué versión se cargó y, antes de servirse, la contrasta con la fila
20
+ * (un SELECT por clave primaria, con deadline y clasificado 503): si difiere,
21
+ * recarga. Así un sync en OTRO proceso (otro worker, `node ace
22
+ * authz:catalog:sync` en un despliegue) se ve en la siguiente pregunta de
23
+ * todos los procesos, sin pub/sub y sin reiniciar. El memo nunca sirve una
24
+ * decisión con una versión distinta de la de la base.
25
+ *
26
+ * Contrato de invalidación (README, "Performance"):
27
+ * 1. `syncAuthzCatalog` (y por tanto `authz:catalog:sync`) sube la fila en
28
+ * su transacción (lo ven todos los procesos) y además el contador de
29
+ * este módulo (lo ve este proceso al instante, también con `everyMs`).
30
+ * 2. `invalidateAuthzCatalog()` invalida los memos de ESTE proceso; la fila
31
+ * la sube `bumpAuthzCatalogVersion(trx)` para TODOS, y SOLO como última
32
+ * sentencia de la transacción que escribe `authz_*` (2E · H2): un bump
33
+ * que se confirma antes que su escritura hace que otro proceso recargue
34
+ * los datos viejos etiquetados con la versión nueva y no vuelva a
35
+ * revalidar jamás. Quien escribe `authz_*` por fuera del sync (un seeder,
36
+ * una migración de datos) lo hace con `withAuthzCatalogWrite(async (trx)
37
+ * => …)`, que abre la transacción y sube la versión al final, dentro; sin
38
+ * eso los demás procesos no se enteran (caso negativo fijado por test).
39
+ * 3. `revalidate: 'always'` (default) contrasta la fila en cada `view()`.
40
+ * `{ everyMs }` (opt-in) la contrasta como mucho una vez por ventana: es
41
+ * una ventana ACOTADA de catálogo viejo —de revocación fail-open— que el
42
+ * consumidor acepta a sabiendas a cambio de ahorrarse ese SELECT.
43
+ *
44
+ * Es composición: cada driver del paquete construye el suyo (o recibe uno
45
+ * compartido en `catalog`); un driver de terceros no necesita saber que existe.
46
+ */
47
+ /** Tabla de la versión compartida del catálogo (una fila, `id = 1`). */
48
+ export declare const CATALOG_VERSION_TABLE = "authz_catalog_version";
49
+ /** Un permiso del catálogo: su uuid y los niveles cuyos roles pueden llevarlo (`null` = cualquiera, 3B · B5). */
50
+ export interface CatalogPermission {
51
+ uuid: string;
52
+ assignableAt: readonly ScopeType[] | null;
53
+ }
54
+ /**
55
+ * Clave de owner de los roles GLOBALES (`authz_roles.owner_scope_key`, 3B ·
56
+ * B1): los del catálogo del config (`syncAuthzCatalog`). Reservada: ningún
57
+ * `scopeKey()` la produce (la raíz da `app`; el resto lleva `|`).
58
+ */
59
+ export declare const GLOBAL_OWNER_KEY = "global";
60
+ /** ¿El rol cuenta en un scope cuya cadena tiene esas claves (owner global o en la cadena)? */
61
+ export declare function isRoleVisibleWith(role: {
62
+ owner: string;
63
+ }, chainKeys: ReadonlySet<string> | readonly string[]): boolean;
64
+ /** Foto inmutable del catálogo. Se reemplaza entera, nunca se muta. */
65
+ export interface CatalogView {
66
+ /** `{ uuid, assignableAt }` del permiso, o `null` si el catálogo no lo declara. */
67
+ permission(slug: string): CatalogPermission | null;
68
+ /**
69
+ * El rol GLOBAL `(slug, scopeType)`, o `null`. Los locales no se buscan por
70
+ * aquí: con owners, `(slug, scopeType)` ya no identifica un rol (3B); usa
71
+ * `roleVisible` con la cadena del scope que pregunta, o `rolesNamed`.
72
+ */
73
+ role(slug: string, scopeType: ScopeType): CatalogRole | null;
74
+ /**
75
+ * EL rol `(slug, scopeType)` visible desde un scope cuya cadena tiene esas
76
+ * claves (3B · B2): el global, o el local cuyo owner está en la cadena.
77
+ * `null` si ninguno.
78
+ *
79
+ * Si hay MÁS DE UNO visible LANZA 422 `E_AUTHZ_AMBIGUOUS_ROLE` (3D · M1).
80
+ * Hasta 3C ganaba «el owner más cercano», y eso convertía un homónimo en
81
+ * una escalada: el admin de A concedía el rol de B por el mismo slug
82
+ * (auditor V3) y un local tapaba al global cambiándole el significado
83
+ * (V2-B). La ambigüedad no se resuelve, se denuncia: fail-closed. La
84
+ * unicidad se defiende al escribir (colisiones + serialización del
85
+ * catálogo, M2), pero un árbol que se mueve puede juntar dos owners
86
+ * legítimos y esa lectura tiene que fallar, no elegir.
87
+ */
88
+ roleVisible(slug: string, scopeType: ScopeType, chainKeys: readonly string[]): CatalogRole | null;
89
+ /** TODOS los roles `(slug, scopeType)`, sea cual sea su owner (para revoke, colisiones). Copia por llamada. */
90
+ rolesNamed(slug: string, scopeType: ScopeType): CatalogRole[];
91
+ /** El rol por uuid, o `null` si el catálogo no lo declara (un rol retirado, un id ajeno) (3A · A3). */
92
+ roleByUuid(uuid: string): CatalogRole | null;
93
+ /**
94
+ * Roles declarados para un nivel cuyo owner es global o está en
95
+ * `ownerKeys` (las claves de la cadena del scope que pregunta) (3B · B2).
96
+ * Copia por llamada.
97
+ */
98
+ rolesFor(scopeType: ScopeType, ownerKeys: Iterable<string>): CatalogRole[];
99
+ /**
100
+ * Roles LOCALES cuyo owner es exactamente esa clave (3D · M4): lo que
101
+ * `scopes.detached` tiene que purgar para que el scope no deje roles
102
+ * huérfanos que bloqueen su `(slug, nivel)` para siempre. Copia por llamada.
103
+ */
104
+ /**
105
+ * TODOS los roles LOCALES (owner ≠ `global`), sea cual sea su owner
106
+ * (3b-2e · E1). Es lo que el barrido de `scopes.moved` del driver `facts`
107
+ * necesita para saber qué bindings pueden haber dejado de ser visibles: un
108
+ * rol GLOBAL no cambia nunca de visibilidad, así que un catálogo SIN roles
109
+ * locales hace que el barrido cueste CERO requests. Copia por llamada.
110
+ */
111
+ localRoles(): CatalogRole[];
112
+ rolesOwnedBy(ownerKey: string): CatalogRole[];
113
+ /** Roles que conceden el permiso (con su owner), agrupados por nivel (`scope_type`). Copia por llamada. */
114
+ rolesGranting(permissionUuid: string): Map<ScopeType, CatalogRoleRef[]>;
115
+ /** Slugs de permiso que concede el rol (por uuid); vacío si el rol no existe. Copia por llamada. */
116
+ rolePermissionsOf(roleUuid: string): Set<string>;
117
+ /** Slug del permiso por uuid, o `null` si el catálogo ya no lo declara (2.1, B5). */
118
+ permissionSlug(uuid: string): string | null;
119
+ /** Todos los slugs de permiso. */
120
+ readonly permissionSlugs: readonly string[];
121
+ /** El `rank` más alto entre los roles GLOBALES (0 sin roles): el techo de la delegación (3B · B3). */
122
+ readonly topGlobalRank: number;
123
+ /** Instante de carga (ms de pared, `systemClock`; informativo). */
124
+ readonly loadedAt: number;
125
+ /** Versión de `authz_catalog_version` con la que se cargó la foto. */
126
+ readonly version: number;
127
+ }
128
+ /**
129
+ * Invalida todos los memos del catálogo de este proceso. En otro proceso no
130
+ * hace nada: para eso está la fila compartida (`bumpAuthzCatalogVersion`).
131
+ */
132
+ export declare function invalidateAuthzCatalog(): void;
133
+ /** Deadline de cada consulta de carga (el mismo default que el catálogo). */
134
+ export declare const DEFAULT_CATALOG_CACHE_TIMEOUT_MS = 5000;
135
+ /**
136
+ * Cota por defecto de `readLocalRoles` (3b-0b · AB2): cuántos roles LOCALES
137
+ * puede devolver una pasada de `prune-orphans` antes de rendirse con 500.
138
+ * Es del mismo orden que `maxScopes`/`maxDescendants`: una lectura sin
139
+ * `LIMIT` sobre una tabla que el consumidor hace crecer.
140
+ */
141
+ export declare const DEFAULT_MAX_LOCAL_ROLES = 10000;
142
+ /** Lo mínimo que se necesita de un cliente de Lucid para leer la fila. */
143
+ export interface CatalogVersionClient {
144
+ from(table: string): any;
145
+ table(table: string): any;
146
+ }
147
+ /**
148
+ * El cliente de una TRANSACCIÓN de Lucid (o de knex): lo que `db.transaction`
149
+ * entrega a su callback. Se reconoce en tiempo de ejecución por
150
+ * `isTransaction === true`, que ambos ponen; el `db` global y un
151
+ * `QueryClient` suelto lo llevan a `false` (o no lo tienen) y se rechazan.
152
+ */
153
+ export interface CatalogVersionTransaction extends CatalogVersionClient {
154
+ isTransaction: boolean;
155
+ }
156
+ /**
157
+ * `catalog` (memo compartido) y `catalogRevalidate` juntos se contradicen
158
+ * (2E · I3, auditor 11): la política de revalidación es la del memo y se fija
159
+ * al construir el `CatalogCache`; el `catalogRevalidate` del driver se
160
+ * ignoraba en silencio. 500 al construir: config rota, no una pregunta. Lo
161
+ * llaman los dos drivers del paquete desde su constructor.
162
+ */
163
+ export declare function assertCatalogOptions(driver: string, options: {
164
+ catalog?: unknown;
165
+ catalogRevalidate?: unknown;
166
+ }): void;
167
+ /**
168
+ * Versión compartida del catálogo: la fila `authz_catalog_version`. Sin fila
169
+ * legible (semilla ausente, fila borrada, valor no numérico) es 503
170
+ * `E_AUTHZ_BACKEND_UNAVAILABLE` con «migración 2.0 no aplicada» (I1); sin
171
+ * TABLA se clasifica como el resto de fallos SQL (503).
172
+ */
173
+ export declare function readAuthzCatalogVersion(options?: {
174
+ client?: CatalogVersionClient;
175
+ driver?: string;
176
+ timeoutMs?: number;
177
+ }): Promise<number>;
178
+ /**
179
+ * Sube la versión compartida del catálogo: TODOS los memos de TODOS los
180
+ * procesos recargan en su siguiente pregunta (o al cerrar su ventana
181
+ * `everyMs`). Exige el cliente de la transacción que escribe `authz_*` (500
182
+ * `E_AUTHZ_CONFIG` sin él, 2E · H2) y tiene que ser su ÚLTIMA sentencia: lo
183
+ * garantiza `withAuthzCatalogWrite`, que es por donde escriben
184
+ * `syncAuthzCatalog` y cualquier seeder o migración de datos. Sin fila
185
+ * (semilla ausente) la crea; la carrera de dos procesos que la crean a la vez
186
+ * la resuelve la clave primaria: el perdedor vuelve a hacer UPDATE. Es SOLO el
187
+ * canal entre procesos: no toca el contador de este (con `everyMs`, hasta este
188
+ * proceso tarda una ventana en verlo; con `'always'`, la siguiente pregunta lo
189
+ * ve).
190
+ */
191
+ export declare function bumpAuthzCatalogVersion(trx: CatalogVersionTransaction, options?: {
192
+ driver?: string;
193
+ timeoutMs?: number;
194
+ }): Promise<void>;
195
+ /**
196
+ * TODOS los roles LOCALES (owner ≠ `global`) leídos de la BASE, en fresco y
197
+ * con sus permisos.
198
+ *
199
+ * Lo usa `AuthorizationManager.pruneOrphanRoles` —el motor de
200
+ * `authz:catalog:prune-orphans` (3b-0 · Z2)—, que necesita mirar el catálogo
201
+ * ENTERO: los roles cuyo owner ya no resuelve son precisamente los que nadie
202
+ * enumera desde el árbol (no cuelgan de ningún scope vivo), así que no hay
203
+ * lista de owners con la que preguntar.
204
+ *
205
+ * De la BASE y no del memo: con `catalogRevalidate: { everyMs }` —config
206
+ * legal y documentada— la foto puede no tener lo que otro proceso acaba de
207
+ * confirmar (auditor A2 bis), y aquí se decide qué se BORRA.
208
+ *
209
+ * El orden es ESTABLE por `uuid` (3F · U5, tester 3E · §4.3): sin `ORDER BY`
210
+ * lo pone el motor, así que la lista del `--dry-run`, la secuencia de
211
+ * `role_purged` que ve el hook de auditoría y el rol por el que seguiría una
212
+ * pasada interrumpida cambiaban entre PostgreSQL, MySQL y SQLite. Con uuid
213
+ * v7 es además el orden de creación.
214
+ *
215
+ * **Lo que NO devuelve son los HECHOS del rol** (3b-2j). Hasta aquí contaba
216
+ * también sus asignaciones vigentes (3b-0b · AA1) leyendo
217
+ * `authz_assignments`, que es la tabla del driver `database`: con `openfga`
218
+ * los hechos viven en el store y ese conteo era siempre cero, así que el
219
+ * `stillGranting` del barrido —«falso ⇒ no concede SEGURO», leído justo
220
+ * antes de un borrado destructivo— mentía. Contarlos es ahora una pregunta
221
+ * del PUERTO (`AuthorizationDriver.countRoleAssignments`), que es de quien
222
+ * son los hechos.
223
+ *
224
+ * Cota `maxLocalRoles` (3b-0b · AB2, default 10 000): la lectura es una sola
225
+ * consulta y un catálogo local enorme la convierte en amplificación. Se pide
226
+ * una fila de más y, si aparece, 500 `E_AUTHZ_TOO_MANY_LOCAL_ROLES` — nunca
227
+ * una lista parcial, que aquí sería purgar a ciegas la mitad del catálogo.
228
+ */
229
+ export declare function readLocalRoles(options?: {
230
+ timeoutMs?: number;
231
+ driver?: string;
232
+ maxLocalRoles?: number;
233
+ }): Promise<Array<{
234
+ role: CatalogRole;
235
+ permissions: string[];
236
+ }>>;
237
+ export interface AuthzCatalogWriteOptions {
238
+ /** Etiqueta del driver en los errores 503 (default `catalog`). */
239
+ driver?: string;
240
+ /** Deadline de la subida de versión (default 5000): vencido ⇒ 503. */
241
+ timeoutMs?: number;
242
+ /** Conexión de Lucid sobre la que abrir la transacción (default: la del `db` global). */
243
+ connection?: string;
244
+ }
245
+ /**
246
+ * LA forma de escribir `authz_*` por fuera de `syncAuthzCatalog` (2E · H2):
247
+ * abre una transacción, ejecuta `fn(trx)` —tu escritura, con ESE cliente— y
248
+ * sube `authz_catalog_version` como última sentencia, dentro. O se confirma
249
+ * todo (datos nuevos + versión nueva) o nada: un memo de otro proceso nunca
250
+ * puede leer la versión nueva con los datos viejos. Devuelve lo que devuelva
251
+ * `fn`. Si `fn` lanza, la transacción se revierte, la versión no sube y su
252
+ * error sale tal cual (es tuyo) — salvo que sea un error del cliente SQL
253
+ * (2.5-B · K12), que se clasifica como 503 igual que un fallo al abrir o
254
+ * confirmar la transacción. NO te tragues errores de SQL dentro de `fn`: en
255
+ * PostgreSQL la transacción queda abortada y todo lo que sigue falla; en
256
+ * MySQL y SQLite el motor no la aborta y lo que sigue SE CONFIRMA.
257
+ *
258
+ * Es solo el canal entre procesos (la fila): en este proceso la siguiente
259
+ * pregunta lo ve con `'always'` y, con `{ everyMs }`, al cerrar la ventana —
260
+ * `syncAuthzCatalog` además invalida en memoria; hazlo tú con
261
+ * `invalidateAuthzCatalog()` si usas `everyMs` y lo necesitas al instante.
262
+ *
263
+ * await withAuthzCatalogWrite(async (trx) => {
264
+ * await trx.from('authz_role_permissions').where('role_uuid', role).delete()
265
+ * })
266
+ */
267
+ export declare function withAuthzCatalogWrite<T>(fn: (trx: TransactionClientContract) => Promise<T>, options?: AuthzCatalogWriteOptions): Promise<T>;
268
+ /** Política de revalidación contra la fila compartida (2D · F1). */
269
+ export type CatalogRevalidate = 'always' | {
270
+ everyMs: number;
271
+ };
272
+ export interface CatalogCacheOptions {
273
+ /**
274
+ * Cuándo contrastar la foto con `authz_catalog_version`: `'always'`
275
+ * (default) en cada `view()` —un SELECT por clave primaria—; `{ everyMs }`
276
+ * como mucho una vez por ventana. Con ventana, un sync de OTRO proceso
277
+ * tarda hasta `everyMs` en verse: es una ventana acotada de revocación
278
+ * fail-open que se acepta a sabiendas (el sync de ESTE proceso se ve al
279
+ * instante igualmente).
280
+ */
281
+ revalidate?: CatalogRevalidate;
282
+ /** Deadline de cada consulta de carga y revalidación (default 5000): vencido ⇒ 503. */
283
+ timeoutMs?: number;
284
+ /** Etiqueta del driver en los errores 503 (default `catalog`). */
285
+ driver?: string;
286
+ /**
287
+ * SOLO TESTS: fuente del reloj MONÓTONO (ms) con el que se mide la ventana
288
+ * `everyMs` (default `performance.now`, 2E · H3): un reloj de pared que
289
+ * retrocede —NTP, snapshot— no alarga la ventana. En producción no se toca.
290
+ */
291
+ now?: () => number;
292
+ }
293
+ export declare class CatalogCache {
294
+ #private;
295
+ constructor(options?: CatalogCacheOptions);
296
+ /**
297
+ * La foto vigente. Sin foto, o invalidada en este proceso ⇒ carga (las
298
+ * llamadas concurrentes comparten la misma promesa: un arranque con cien
299
+ * requests no dispara cien cargas). Con foto ⇒ se contrasta su versión
300
+ * con la fila compartida (según `revalidate`; las comprobaciones
301
+ * concurrentes también comparten promesa) y, si la base va por delante,
302
+ * recarga. Una carga o comprobación que falla (503, clasificado por
303
+ * `guardSql`) no deja nada cacheado ni servido: la siguiente pregunta
304
+ * vuelve a intentarlo.
305
+ */
306
+ view(): Promise<CatalogView>;
307
+ /**
308
+ * Olvida la foto de ESTE memo. La siguiente pregunta recarga. Es un bump
309
+ * de generación, no un `#view = null`: una carga en vuelo capturó la
310
+ * generación anterior y su foto aterriza ya vieja (F4, CR2).
311
+ */
312
+ invalidate(): void;
313
+ /** ¿Hay una foto cargada y vigente para este proceso? (Observabilidad para tests y diagnóstico; no consulta la base.) */
314
+ get loaded(): boolean;
315
+ }
316
+ /**
317
+ * `assignable_at` tal como viene de la base: `NULL` = cualquier nivel; si
318
+ * no, un JSON con una lista no vacía de tipos de scope válidos. Otra cosa
319
+ * (una edición a mano) es catálogo corrupto: 500 `E_AUTHZ_INTERNAL`, nunca
320
+ * «cualquiera» (sería relajar una restricción en silencio) ni «ninguno»
321
+ * disfrazado de dato.
322
+ */
323
+ export declare function parseAssignableAt(slug: string, raw: unknown): readonly ScopeType[] | null;
324
+ //# sourceMappingURL=catalog_cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog_cache.d.ts","sourceRoot":"","sources":["../../../src/catalog/catalog_cache.ts"],"names":[],"mappings":"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"}