recce-nightly 1.10.0.20250630__tar.gz → 1.11.0.20250702__tar.gz

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.

Potentially problematic release.


This version of recce-nightly might be problematic. Click here for more details.

Files changed (164) hide show
  1. {recce_nightly-1.10.0.20250630/recce_nightly.egg-info → recce_nightly-1.11.0.20250702}/PKG-INFO +1 -1
  2. recce_nightly-1.11.0.20250702/recce/VERSION +1 -0
  3. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/adapter/dbt_adapter/__init__.py +97 -68
  4. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/cli.py +6 -3
  5. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/404.html +2 -2
  6. recce_nightly-1.10.0.20250630/recce/data/_next/static/chunks/708-9ff66431dcebf1bd.js → recce_nightly-1.11.0.20250702/recce/data/_next/static/chunks/181-acc61ddada3bc0ca.js +2 -2
  7. recce_nightly-1.11.0.20250702/recce/data/_next/static/chunks/3998a672-03adacad07b346ac.js +1 -0
  8. recce_nightly-1.11.0.20250702/recce/data/_next/static/chunks/app/page-acebcaa45b4de895.js +1 -0
  9. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/index.html +2 -2
  10. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/index.txt +3 -3
  11. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/models/types.py +20 -0
  12. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/valuediff.py +1 -1
  13. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/cll.py +1 -2
  14. recce_nightly-1.11.0.20250702/recce/util/perf_tracking.py +85 -0
  15. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702/recce_nightly.egg-info}/PKG-INFO +1 -1
  16. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce_nightly.egg-info/SOURCES.txt +7 -6
  17. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/dbt_adapter/test_dbt_cll.py +35 -0
  18. recce_nightly-1.10.0.20250630/recce/VERSION +0 -1
  19. recce_nightly-1.10.0.20250630/recce/data/_next/static/chunks/3998a672-d8f888988d01023f.js +0 -1
  20. recce_nightly-1.10.0.20250630/recce/data/_next/static/chunks/app/page-3daeb9d2f9ffa0ef.js +0 -1
  21. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/LICENSE +0 -0
  22. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/README.md +0 -0
  23. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/pyproject.toml +0 -0
  24. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/__init__.py +0 -0
  25. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/adapter/__init__.py +0 -0
  26. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/adapter/base.py +0 -0
  27. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
  28. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/adapter/sqlmesh_adapter.py +0 -0
  29. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/apis/__init__.py +0 -0
  30. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/apis/check_api.py +0 -0
  31. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/apis/check_func.py +0 -0
  32. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/apis/run_api.py +0 -0
  33. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/apis/run_func.py +0 -0
  34. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/artifact.py +0 -0
  35. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/config.py +0 -0
  36. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/connect_to_cloud.py +0 -0
  37. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/core.py +0 -0
  38. {recce_nightly-1.10.0.20250630/recce/data/_next/static/gjlMeLxcm3GSibv55ZUM_ → recce_nightly-1.11.0.20250702/recce/data/_next/static/0B_qD27U3VEMnPnujEJxV}/_buildManifest.js +0 -0
  39. {recce_nightly-1.10.0.20250630/recce/data/_next/static/gjlMeLxcm3GSibv55ZUM_ → recce_nightly-1.11.0.20250702/recce/data/_next/static/0B_qD27U3VEMnPnujEJxV}/_ssgManifest.js +0 -0
  40. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js +0 -0
  41. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/217-879a84d70f7a907c.js +0 -0
  42. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/29e3cc0d-60045b2e47aa3916.js +0 -0
  43. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js +0 -0
  44. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/3a92ee20-1081c360214f9602.js +0 -0
  45. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/41-f30276c289169376.js +0 -0
  46. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/450c323b-fd94e7ffaa4a5efa.js +0 -0
  47. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/47d8844f-929aed9b1c73a905.js +0 -0
  48. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/608-3b079b544e5d5f5e.js +0 -0
  49. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/6dc81886-adbfa45836061d79.js +0 -0
  50. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js +0 -0
  51. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/7f27ae6c-d5f0438edd5c2a5b.js +0 -0
  52. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/86730205-cfb14e3f051bab35.js +0 -0
  53. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/8d700b6a.8bb140898499c512.js +0 -0
  54. /recce_nightly-1.10.0.20250630/recce/data/_next/static/chunks/92-50d227cce7a25498.js → /recce_nightly-1.11.0.20250702/recce/data/_next/static/chunks/92-2153b66ddfaa2359.js +0 -0
  55. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/9746af58-a42b7d169cacadf0.js +0 -0
  56. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/a30376cd-de84559016d7e133.js +0 -0
  57. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/app/_not-found/page-01ed58b7f971d311.js +0 -0
  58. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/app/layout-292f035bb0d2a98e.js +0 -0
  59. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/b63b1b3f-4282bdcf459e075c.js +0 -0
  60. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js +0 -0
  61. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/c132bf7d-08cb668a789d6afd.js +0 -0
  62. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/ce84277d-2e5d1d46910cf052.js +0 -0
  63. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/febdd86e-c6b525341634b860.js +0 -0
  64. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/fee69bc6-2dbccaf9b90474e6.js +0 -0
  65. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -0
  66. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/main-app-39061b0166c47f55.js +0 -0
  67. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/main-b5b3ae20a1405261.js +0 -0
  68. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/pages/_app-437c455677d62394.js +0 -0
  69. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/pages/_error-e7650df18ca04bde.js +0 -0
  70. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  71. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/chunks/webpack-7b49d5ba7e3a434d.js +0 -0
  72. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/css/17a96168e3a9db13.css +0 -0
  73. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/css/35c6679a098e1e34.css +0 -0
  74. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/css/951e2e0eea2d4a5b.css +0 -0
  75. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/css/a2b12b4ba4227f0a.css +0 -0
  76. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2 +0 -0
  77. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.bd5c9f50.woff +0 -0
  78. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2 +0 -0
  79. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.e6e0d8d0.woff +0 -0
  80. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2 +0 -0
  81. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-latin-800-normal.fc315020.woff +0 -0
  82. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2 +0 -0
  83. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.2e5381b2.woff +0 -0
  84. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.20c545e6.woff +0 -0
  85. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2 +0 -0
  86. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/_next/static/media/reload-image.79aabb7d.svg +0 -0
  87. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/auth_callback.html +0 -0
  88. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/favicon.ico +0 -0
  89. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/imgs/feedback/thumbs-down.png +0 -0
  90. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/imgs/feedback/thumbs-up.png +0 -0
  91. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/imgs/reload-image.svg +0 -0
  92. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/data/logo/recce-logo-white.png +0 -0
  93. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/diff.py +0 -0
  94. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/event/CONFIG +0 -0
  95. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/event/SENTRY_DNS +0 -0
  96. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/event/__init__.py +0 -0
  97. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/event/collector.py +0 -0
  98. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/event/track.py +0 -0
  99. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/exceptions.py +0 -0
  100. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/git.py +0 -0
  101. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/github.py +0 -0
  102. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/models/__init__.py +0 -0
  103. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/models/check.py +0 -0
  104. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/models/run.py +0 -0
  105. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/pull_request.py +0 -0
  106. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/run.py +0 -0
  107. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/server.py +0 -0
  108. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/state.py +0 -0
  109. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/summary.py +0 -0
  110. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/__init__.py +0 -0
  111. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/core.py +0 -0
  112. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/dataframe.py +0 -0
  113. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/histogram.py +0 -0
  114. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/lineage.py +0 -0
  115. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/profile.py +0 -0
  116. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/query.py +0 -0
  117. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/rowcount.py +0 -0
  118. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/schema.py +0 -0
  119. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/tasks/top_k.py +0 -0
  120. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/__init__.py +0 -0
  121. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/api_token.py +0 -0
  122. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/breaking.py +0 -0
  123. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/cache.py +0 -0
  124. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/io.py +0 -0
  125. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/lineage.py +0 -0
  126. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/logger.py +0 -0
  127. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/onboarding_state.py +0 -0
  128. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/pydantic_model.py +0 -0
  129. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/recce_cloud.py +0 -0
  130. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/util/singleton.py +0 -0
  131. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce/yaml/__init__.py +0 -0
  132. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce_nightly.egg-info/dependency_links.txt +0 -0
  133. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce_nightly.egg-info/entry_points.txt +0 -0
  134. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce_nightly.egg-info/requires.txt +0 -0
  135. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/recce_nightly.egg-info/top_level.txt +0 -0
  136. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/setup.cfg +0 -0
  137. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/setup.py +0 -0
  138. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/__init__.py +0 -0
  139. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/__init__.py +0 -0
  140. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/dbt_adapter/__init__.py +0 -0
  141. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/dbt_adapter/conftest.py +0 -0
  142. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
  143. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
  144. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/adapter/dbt_adapter/test_selector.py +0 -0
  145. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/__init__.py +0 -0
  146. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/conftest.py +0 -0
  147. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_histogram.py +0 -0
  148. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_lineage.py +0 -0
  149. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_preset_checks.py +0 -0
  150. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_profile.py +0 -0
  151. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_query.py +0 -0
  152. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_row_count.py +0 -0
  153. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_schema.py +0 -0
  154. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_top_k.py +0 -0
  155. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/tasks/test_valuediff.py +0 -0
  156. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_cli.py +0 -0
  157. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_config.py +0 -0
  158. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_connect_to_cloud.py +0 -0
  159. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_core.py +0 -0
  160. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_dbt.py +0 -0
  161. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_pull_request.py +0 -0
  162. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_server.py +0 -0
  163. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_state.py +0 -0
  164. {recce_nightly-1.10.0.20250630 → recce_nightly-1.11.0.20250702}/tests/test_summary.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: recce-nightly
3
- Version: 1.10.0.20250630
3
+ Version: 1.11.0.20250702
4
4
  Summary: Environment diff tool for dbt
5
5
  Home-page: https://github.com/InfuseAI/recce
6
6
  Author: InfuseAI Dev Team
@@ -0,0 +1 @@
1
+ 1.11.0.20250702
@@ -31,9 +31,10 @@ from recce.util.lineage import (
31
31
  find_downstream,
32
32
  find_upstream,
33
33
  )
34
+ from recce.util.perf_tracking import LineagePerfTracker
34
35
 
35
36
  from ...tasks.profile import ProfileTask
36
- from ...util.breaking import parse_change_category
37
+ from ...util.breaking import BreakingPerformanceTracking, parse_change_category
37
38
 
38
39
  try:
39
40
  import agate
@@ -658,8 +659,8 @@ class DbtAdapter(BaseAdapter):
658
659
  @lru_cache(maxsize=2)
659
660
  def get_lineage_cached(self, base: Optional[bool] = False, cache_key=0):
660
661
  if base is False:
661
- cll_tracker = CLLPerformanceTracking()
662
- cll_tracker.start_lineage()
662
+ perf_tracker = LineagePerfTracker()
663
+ perf_tracker.start_lineage()
663
664
 
664
665
  manifest = self.curr_manifest if base is False else self.base_manifest
665
666
  catalog = self.curr_catalog if base is False else self.base_catalog
@@ -777,10 +778,10 @@ class DbtAdapter(BaseAdapter):
777
778
  parent_map = self.build_parent_map(nodes, base)
778
779
 
779
780
  if base is False:
780
- cll_tracker.end_lineage()
781
- cll_tracker.set_total_nodes(len(nodes))
782
- log_performance("model lineage", cll_tracker.to_dict())
783
- cll_tracker.reset()
781
+ perf_tracker.end_lineage()
782
+ perf_tracker.set_total_nodes(len(nodes))
783
+ log_performance("model lineage", perf_tracker.to_dict())
784
+ perf_tracker.reset()
784
785
 
785
786
  return dict(
786
787
  parent_map=parent_map,
@@ -814,17 +815,22 @@ class DbtAdapter(BaseAdapter):
814
815
 
815
816
  @lru_cache(maxsize=128)
816
817
  def get_change_analysis_cached(self, node_id: str):
818
+ breaking_perf_tracker = BreakingPerformanceTracking()
817
819
  lineage_diff = self.get_lineage_diff()
818
820
  diff = lineage_diff.diff
819
821
 
820
822
  if node_id not in diff or diff[node_id].change_status != "modified":
821
823
  return diff.get(node_id)
822
824
 
825
+ breaking_perf_tracker.increment_modified_nodes()
826
+ breaking_perf_tracker.start_lineage_diff()
827
+
823
828
  base = lineage_diff.base
824
829
  current = lineage_diff.current
825
830
 
826
831
  base_manifest = as_manifest(self.get_manifest(True))
827
832
  curr_manifest = as_manifest(self.get_manifest(False))
833
+ breaking_perf_tracker.record_checkpoint("manifest")
828
834
 
829
835
  def ref_func(*args):
830
836
  if len(args) == 1:
@@ -895,6 +901,7 @@ class DbtAdapter(BaseAdapter):
895
901
  old_schema=base_schema,
896
902
  new_schema=curr_schema,
897
903
  dialect=dialect,
904
+ perf_tracking=breaking_perf_tracker,
898
905
  )
899
906
 
900
907
  # Make sure that the case of the column names are the same
@@ -917,6 +924,9 @@ class DbtAdapter(BaseAdapter):
917
924
  # TODO: telemetry
918
925
  pass
919
926
 
927
+ breaking_perf_tracker.end_lineage_diff()
928
+ log_performance("change analysis per node", breaking_perf_tracker.to_dict())
929
+ breaking_perf_tracker.reset()
920
930
  node_diff = diff.get(node_id)
921
931
  node_diff.change = change
922
932
  return node_diff
@@ -931,7 +941,15 @@ class DbtAdapter(BaseAdapter):
931
941
  no_downstream: Optional[bool] = False,
932
942
  no_filter: Optional[bool] = False,
933
943
  ) -> CllData:
934
- cll_tracker = CLLPerformanceTracking()
944
+ cll_tracker = LineagePerfTracker()
945
+ cll_tracker.set_params(
946
+ has_node=node_id is not None,
947
+ has_column=column is not None,
948
+ change_analysis=change_analysis,
949
+ no_cll=no_cll,
950
+ no_upstream=no_upstream,
951
+ no_downstream=no_downstream,
952
+ )
935
953
  cll_tracker.start_column_lineage()
936
954
 
937
955
  manifest = self.curr_manifest
@@ -944,6 +962,8 @@ class DbtAdapter(BaseAdapter):
944
962
  lineage_diff = self.get_lineage_diff()
945
963
  cll_node_ids = set(lineage_diff.diff.keys())
946
964
 
965
+ cll_tracker.set_init_nodes(len(cll_node_ids))
966
+
947
967
  nodes = {}
948
968
  columns = {}
949
969
  parent_map = {}
@@ -955,29 +975,41 @@ class DbtAdapter(BaseAdapter):
955
975
  cll_node_ids = cll_node_ids.union(find_downstream(cll_node_ids, manifest_dict.get("child_map")))
956
976
 
957
977
  if not no_cll:
978
+ allowed_related_nodes = set()
979
+ for key in ["sources", "nodes", "exposures", "metrics"]:
980
+ attr = getattr(manifest, key)
981
+ allowed_related_nodes.update(set(attr.keys()))
982
+ if hasattr(manifest, "semantic_models"):
983
+ attr = getattr(manifest, "semantic_models")
984
+ allowed_related_nodes.update(set(attr.keys()))
958
985
  for cll_node_id in cll_node_ids:
959
- if (
960
- cll_node_id not in manifest.sources
961
- and cll_node_id not in manifest.nodes
962
- and cll_node_id not in manifest.exposures
963
- ):
986
+ if cll_node_id not in allowed_related_nodes:
964
987
  continue
965
988
  cll_data_one = deepcopy(self.get_cll_cached(cll_node_id, base=False))
989
+ cll_tracker.increment_cll_nodes()
966
990
  if cll_data_one is None:
967
991
  continue
968
992
 
969
993
  nodes[cll_node_id] = cll_data_one.nodes.get(cll_node_id)
970
- node_diff = self.get_change_analysis_cached(cll_node_id) if change_analysis else None
994
+ node_diff = None
995
+ if change_analysis:
996
+ node_diff = self.get_change_analysis_cached(cll_node_id)
997
+ cll_tracker.increment_change_analysis_nodes()
971
998
  if node_diff is not None:
972
999
  nodes[cll_node_id].change_status = node_diff.change_status
973
1000
  if node_diff.change is not None:
974
1001
  nodes[cll_node_id].change_category = node_diff.change.category
975
1002
  for c_id, c in cll_data_one.columns.items():
976
1003
  columns[c_id] = c
977
- if node_diff is not None and node_diff.change is not None and node_diff.change.columns is not None:
978
- column_diff = node_diff.change.columns.get(c.name)
979
- if column_diff:
980
- c.change_status = column_diff
1004
+ if node_diff is not None:
1005
+ if node_diff.change_status == "added":
1006
+ c.change_status = "added"
1007
+ elif node_diff.change_status == "removed":
1008
+ c.change_status = "removed"
1009
+ elif node_diff.change is not None and node_diff.change.columns is not None:
1010
+ column_diff = node_diff.change.columns.get(c.name)
1011
+ if column_diff:
1012
+ c.change_status = column_diff
981
1013
 
982
1014
  for p_id, parents in cll_data_one.parent_map.items():
983
1015
  parent_map[p_id] = parents
@@ -987,13 +1019,7 @@ class DbtAdapter(BaseAdapter):
987
1019
  cll_node_columns: Dict[str, CllColumn] = {}
988
1020
 
989
1021
  if cll_node_id in manifest.sources:
990
- n = manifest.sources[cll_node_id]
991
- cll_node = CllNode(
992
- id=n.unique_id,
993
- name=n.name,
994
- source_name=n.source_name,
995
- package_name=n.package_name,
996
- )
1022
+ cll_node = CllNode.build_cll_node(manifest, "sources", cll_node_id)
997
1023
  if self.curr_catalog and cll_node_id in self.curr_catalog.sources:
998
1024
  cll_node_columns = {
999
1025
  column.name: CllColumn(
@@ -1005,15 +1031,7 @@ class DbtAdapter(BaseAdapter):
1005
1031
  for column in self.curr_catalog.sources[cll_node_id].columns.values()
1006
1032
  }
1007
1033
  elif cll_node_id in manifest.nodes:
1008
- n = manifest.nodes[cll_node_id]
1009
- if n.resource_type not in ["model", "seed", "snapshot"]:
1010
- continue
1011
- cll_node = CllNode(
1012
- id=n.unique_id,
1013
- name=n.name,
1014
- package_name=n.package_name,
1015
- resource_type=n.resource_type,
1016
- )
1034
+ cll_node = CllNode.build_cll_node(manifest, "nodes", cll_node_id)
1017
1035
  if self.curr_catalog and cll_node_id in self.curr_catalog.nodes:
1018
1036
  cll_node_columns = {
1019
1037
  column.name: CllColumn(
@@ -1025,19 +1043,20 @@ class DbtAdapter(BaseAdapter):
1025
1043
  for column in self.curr_catalog.nodes[cll_node_id].columns.values()
1026
1044
  }
1027
1045
  elif cll_node_id in manifest.exposures:
1028
- n = manifest.exposures[cll_node_id]
1029
- cll_node = CllNode(
1030
- id=n.unique_id,
1031
- name=n.name,
1032
- package_name=n.package_name,
1033
- resource_type=n.resource_type,
1034
- )
1046
+ cll_node = CllNode.build_cll_node(manifest, "exposures", cll_node_id)
1047
+ elif hasattr(manifest, "semantic_models") and cll_node_id in manifest.semantic_models:
1048
+ cll_node = CllNode.build_cll_node(manifest, "semantic_models", cll_node_id)
1049
+ elif cll_node_id in manifest.metrics:
1050
+ cll_node = CllNode.build_cll_node(manifest, "metrics", cll_node_id)
1035
1051
 
1036
1052
  if not cll_node:
1037
1053
  continue
1038
1054
  nodes[cll_node_id] = cll_node
1039
1055
 
1040
- node_diff = self.get_change_analysis_cached(cll_node_id) if change_analysis else None
1056
+ node_diff = None
1057
+ if change_analysis:
1058
+ node_diff = self.get_change_analysis_cached(cll_node_id)
1059
+ cll_tracker.increment_change_analysis_nodes()
1041
1060
  if node_diff is not None:
1042
1061
  cll_node.change_status = node_diff.change_status
1043
1062
  if node_diff.change is not None:
@@ -1063,7 +1082,19 @@ class DbtAdapter(BaseAdapter):
1063
1082
  if node_id is None and column is None:
1064
1083
  if change_analysis:
1065
1084
  # If change analysis is requested, we need to find the nodes that have changes
1066
- for nid in self.get_lineage_diff().diff.keys():
1085
+ lineage_diff = self.get_lineage_diff()
1086
+ for nid, nd in lineage_diff.diff.items():
1087
+ if nd.change_status == "added":
1088
+ extra_node_ids.add(nid)
1089
+ n = lineage_diff.current["nodes"].get(nid)
1090
+ n_columns = n.get("columns", {})
1091
+ for c in n_columns:
1092
+ anchor_node_ids.add(build_column_key(nid, c))
1093
+ continue
1094
+ if nd.change_status == "removed":
1095
+ extra_node_ids.add(nid)
1096
+ continue
1097
+
1067
1098
  node_diff = self.get_change_analysis_cached(nid)
1068
1099
  if node_diff is not None and node_diff.change is not None:
1069
1100
  extra_node_ids.add(nid)
@@ -1107,6 +1138,7 @@ class DbtAdapter(BaseAdapter):
1107
1138
  else:
1108
1139
  anchor_node_ids.add(f"{node_id}_{column}")
1109
1140
 
1141
+ cll_tracker.set_anchor_nodes(len(anchor_node_ids))
1110
1142
  result_node_ids = set(anchor_node_ids)
1111
1143
  if not no_upstream:
1112
1144
  result_node_ids = result_node_ids.union(find_upstream(anchor_node_ids, parent_map))
@@ -1125,7 +1157,7 @@ class DbtAdapter(BaseAdapter):
1125
1157
  parent_map, child_map = filter_dependency_maps(parent_map, child_map, result_node_ids)
1126
1158
 
1127
1159
  cll_tracker.end_column_lineage()
1128
- cll_tracker.set_total_nodes(len(nodes))
1160
+ cll_tracker.set_total_nodes(len(nodes) + len(columns))
1129
1161
  log_performance("column level lineage", cll_tracker.to_dict())
1130
1162
  cll_tracker.reset()
1131
1163
 
@@ -1144,6 +1176,9 @@ class DbtAdapter(BaseAdapter):
1144
1176
  if node is None:
1145
1177
  return None
1146
1178
 
1179
+ cll_tracker.set_total_nodes(1)
1180
+ cll_tracker.start_column_lineage()
1181
+
1147
1182
  def _apply_all_columns(node: CllNode, transformation_type):
1148
1183
  cll_data = CllData()
1149
1184
  cll_data.nodes[node.id] = node
@@ -1268,6 +1303,10 @@ class DbtAdapter(BaseAdapter):
1268
1303
  depends_on.add(parent_key)
1269
1304
  column.transformation_type = c2c_map[name].transformation_type
1270
1305
  cll_data.parent_map[column_id] = set(depends_on)
1306
+
1307
+ cll_tracker.end_column_lineage()
1308
+ log_performance("column level lineage per node", cll_tracker.to_dict())
1309
+ cll_tracker.reset()
1271
1310
  return cll_data
1272
1311
 
1273
1312
  def get_cll_node(self, node_id: str, base: Optional[bool] = False) -> Tuple[Optional[CllNode], list[str]]:
@@ -1279,17 +1318,8 @@ class DbtAdapter(BaseAdapter):
1279
1318
  # model, seed, snapshot
1280
1319
  if node_id in manifest.nodes:
1281
1320
  found = manifest.nodes[node_id]
1282
- if found.resource_type not in ["model", "seed", "snapshot"]:
1283
- return None, []
1284
-
1285
1321
  unique_id = found.unique_id
1286
- node = CllNode(
1287
- id=found.unique_id,
1288
- name=found.name,
1289
- package_name=found.package_name,
1290
- resource_type=found.resource_type,
1291
- raw_code=found.raw_code,
1292
- )
1322
+ node = CllNode.build_cll_node(manifest, "nodes", node_id)
1293
1323
  if hasattr(found.depends_on, "nodes"):
1294
1324
  parent_list = found.depends_on.nodes
1295
1325
 
@@ -1305,14 +1335,7 @@ class DbtAdapter(BaseAdapter):
1305
1335
  if node_id in manifest.sources:
1306
1336
  found = manifest.sources[node_id]
1307
1337
  unique_id = found.unique_id
1308
-
1309
- node = CllNode(
1310
- id=found.unique_id,
1311
- name=found.name,
1312
- package_name=found.package_name,
1313
- resource_type=found.resource_type,
1314
- source_name=found.source_name,
1315
- )
1338
+ node = CllNode.build_cll_node(manifest, "sources", node_id)
1316
1339
  parent_list = []
1317
1340
 
1318
1341
  if catalog is not None and unique_id in catalog.sources:
@@ -1326,13 +1349,19 @@ class DbtAdapter(BaseAdapter):
1326
1349
  # exposure
1327
1350
  if node_id in manifest.exposures:
1328
1351
  found = manifest.exposures[node_id]
1352
+ node = CllNode.build_cll_node(manifest, "exposures", node_id)
1353
+ if hasattr(found.depends_on, "nodes"):
1354
+ parent_list = found.depends_on.nodes
1329
1355
 
1330
- node = CllNode(
1331
- id=found.unique_id,
1332
- name=found.name,
1333
- package_name=found.package_name,
1334
- resource_type=found.resource_type,
1335
- )
1356
+ if hasattr(manifest, "semantic_models") and node_id in manifest.semantic_models:
1357
+ found = manifest.semantic_models[node_id]
1358
+ node = CllNode.build_cll_node(manifest, "semantic_models", node_id)
1359
+ if hasattr(found.depends_on, "nodes"):
1360
+ parent_list = found.depends_on.nodes
1361
+
1362
+ if node_id in manifest.metrics:
1363
+ found = manifest.metrics[node_id]
1364
+ node = CllNode.build_cll_node(manifest, "metrics", node_id)
1336
1365
  if hasattr(found.depends_on, "nodes"):
1337
1366
  parent_list = found.depends_on.nodes
1338
1367
 
@@ -228,8 +228,9 @@ def debug(**kwargs):
228
228
 
229
229
  return [True, manifest_is_ready, catalog_is_ready]
230
230
 
231
- target_path = Path(kwargs.get("target_path", "target"))
232
- target_base_path = Path(kwargs.get("target_base_path", "target-base"))
231
+ project_dir_path = Path(kwargs.get("project_dir") or "./")
232
+ target_path = project_dir_path.joinpath(Path(kwargs.get("target_path", "target")))
233
+ target_base_path = project_dir_path.joinpath(Path(kwargs.get("target_base_path", "target-base")))
233
234
 
234
235
  curr_is_ready = check_artifacts("Development", target_path)
235
236
  base_is_ready = check_artifacts("Base", target_base_path)
@@ -411,7 +412,9 @@ def server(host, port, lifetime, state_file=None, **kwargs):
411
412
  }
412
413
 
413
414
  # Check Single Environment Onboarding Mode if the review mode is False
414
- if not Path(kwargs.get("target_base_path", "target-base")).is_dir() and not is_review:
415
+ project_dir_path = Path(kwargs.get("project_dir") or "./")
416
+ target_base_path = project_dir_path.joinpath(Path(kwargs.get("target_base_path", "target-base")))
417
+ if not target_base_path.is_dir() and not is_review:
415
418
  # Mark as single env onboarding mode if user provides the target-path only
416
419
  flag["single_env_onboarding"] = True
417
420
  flag["show_relaunch_hint"] = True
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a2b12b4ba4227f0a.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/951e2e0eea2d4a5b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js"/><script src="/_next/static/chunks/86730205-cfb14e3f051bab35.js" async=""></script><script src="/_next/static/chunks/217-879a84d70f7a907c.js" async=""></script><script src="/_next/static/chunks/main-app-39061b0166c47f55.js" async=""></script><script src="/_next/static/chunks/9746af58-a42b7d169cacadf0.js" async=""></script><script src="/_next/static/chunks/47d8844f-929aed9b1c73a905.js" async=""></script><script src="/_next/static/chunks/a30376cd-de84559016d7e133.js" async=""></script><script src="/_next/static/chunks/6dc81886-adbfa45836061d79.js" async=""></script><script src="/_next/static/chunks/3a92ee20-1081c360214f9602.js" async=""></script><script src="/_next/static/chunks/3998a672-d8f888988d01023f.js" async=""></script><script src="/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js" async=""></script><script src="/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js" async=""></script><script src="/_next/static/chunks/41-f30276c289169376.js" async=""></script><script src="/_next/static/chunks/608-3b079b544e5d5f5e.js" async=""></script><script src="/_next/static/chunks/92-50d227cce7a25498.js" async=""></script><script src="/_next/static/chunks/app/layout-292f035bb0d2a98e.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><style data-emotion="css-global dh58eu">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-colors-brand-100:#fd683e;--chakra-colors-brand-200:#fd683e;--chakra-colors-brand-300:#fd683e;--chakra-colors-brand-400:#fd683e;--chakra-colors-brand-500:#fd683e;--chakra-colors-brand-600:#fd683e;--chakra-colors-brand-700:#fd683e;--chakra-colors-brand-800:#fd683e;--chakra-colors-brand-900:#fd683e;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a2b12b4ba4227f0a.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/951e2e0eea2d4a5b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js"/><script src="/_next/static/chunks/86730205-cfb14e3f051bab35.js" async=""></script><script src="/_next/static/chunks/217-879a84d70f7a907c.js" async=""></script><script src="/_next/static/chunks/main-app-39061b0166c47f55.js" async=""></script><script src="/_next/static/chunks/9746af58-a42b7d169cacadf0.js" async=""></script><script src="/_next/static/chunks/47d8844f-929aed9b1c73a905.js" async=""></script><script src="/_next/static/chunks/a30376cd-de84559016d7e133.js" async=""></script><script src="/_next/static/chunks/6dc81886-adbfa45836061d79.js" async=""></script><script src="/_next/static/chunks/3a92ee20-1081c360214f9602.js" async=""></script><script src="/_next/static/chunks/3998a672-03adacad07b346ac.js" async=""></script><script src="/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js" async=""></script><script src="/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js" async=""></script><script src="/_next/static/chunks/41-f30276c289169376.js" async=""></script><script src="/_next/static/chunks/608-3b079b544e5d5f5e.js" async=""></script><script src="/_next/static/chunks/92-2153b66ddfaa2359.js" async=""></script><script src="/_next/static/chunks/app/layout-292f035bb0d2a98e.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><style data-emotion="css-global dh58eu">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-colors-brand-100:#fd683e;--chakra-colors-brand-200:#fd683e;--chakra-colors-brand-300:#fd683e;--chakra-colors-brand-400:#fd683e;--chakra-colors-brand-500:#fd683e;--chakra-colors-brand-600:#fd683e;--chakra-colors-brand-700:#fd683e;--chakra-colors-brand-800:#fd683e;--chakra-colors-brand-900:#fd683e;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
2
2
  button::-moz-focus-inner,
3
3
  [type="button"]::-moz-focus-inner,
4
4
  [type="reset"]::-moz-focus-inner,
@@ -19,4 +19,4 @@
19
19
  pre
20
20
  ){margin:0;}button{background:transparent;padding:0;}fieldset{margin:0;padding:0;}:where(ol, ul){margin:0;padding:0;}textarea{resize:vertical;}:where(button, [role="button"]){cursor:pointer;}button::-moz-focus-inner{border:0!important;}table{border-collapse:collapse;}:where(h1, h2, h3, h4, h5, h6){font-size:inherit;font-weight:inherit;}:where(button, input, optgroup, select, textarea){padding:0;line-height:inherit;color:inherit;}:where(img, svg, video, canvas, audio, iframe, embed, object){display:block;}:where(img, video){max-width:100%;height:auto;}[data-js-focus-visible] :focus:not([data-focus-visible-added]):not(
21
21
  [data-focus-visible-disabled]
22
- ){outline:none;box-shadow:none;}select::-ms-expand{display:none;}:root,:host{--chakra-vh:100vh;}@supports (height: -webkit-fill-available){:root,:host{--chakra-vh:-webkit-fill-available;}}@supports (height: -moz-fill-available){:root,:host{--chakra-vh:-moz-fill-available;}}@supports (height: 100dvh){:root,:host{--chakra-vh:100dvh;}}</style><style data-emotion="css-global 1cgn62j">body{font-family:var(--chakra-fonts-body);color:var(--chakra-colors-chakra-body-text);background:var(--chakra-colors-chakra-body-bg);transition-property:background-color;transition-duration:var(--chakra-transition-duration-normal);line-height:var(--chakra-lineHeights-base);}*::-webkit-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::-moz-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*:-ms-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*,*::before,::after{border-color:var(--chakra-colors-chakra-border-color);}</style><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/a2b12b4ba4227f0a.css\",\"style\"]\n2:HL[\"/_next/static/css/951e2e0eea2d4a5b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[35639,[],\"\"]\n5:I[51454,[],\"\"]\n6:I[48464,[],\"\"]\n7:I[76413,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-d8f888988d01023f.js\",\"20\",\"static/chunks/1bff33f1-1ef85cf5e658a751.js\",\"413\",\"static/chunks/bbda5537-9ec25eb1dd62348a.js\",\"41\",\"static/chunks/41-f30276c289169376.js\",\"608\",\"static/chunks/608-3b079b544e5d5f5e.js\",\"92\",\"static/chunks/92-50d227cce7a25498.js\",\"185\",\"static/chunks/app/layout-292f035bb0d2a98e.js\"],\"default\"]\nd:I[26480,[],\"\"]\n8:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n9:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\na:{\"display\":\"inline-block\"}\nb:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"gjlMeLxcm3GSibv55ZUM_\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a2b12b4ba4227f0a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/951e2e0eea2d4a5b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$9\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$b\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}]]\n4:null\n"])</script></body></html>
22
+ ){outline:none;box-shadow:none;}select::-ms-expand{display:none;}:root,:host{--chakra-vh:100vh;}@supports (height: -webkit-fill-available){:root,:host{--chakra-vh:-webkit-fill-available;}}@supports (height: -moz-fill-available){:root,:host{--chakra-vh:-moz-fill-available;}}@supports (height: 100dvh){:root,:host{--chakra-vh:100dvh;}}</style><style data-emotion="css-global 1cgn62j">body{font-family:var(--chakra-fonts-body);color:var(--chakra-colors-chakra-body-text);background:var(--chakra-colors-chakra-body-bg);transition-property:background-color;transition-duration:var(--chakra-transition-duration-normal);line-height:var(--chakra-lineHeights-base);}*::-webkit-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::-moz-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*:-ms-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*,*::before,::after{border-color:var(--chakra-colors-chakra-border-color);}</style><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/a2b12b4ba4227f0a.css\",\"style\"]\n2:HL[\"/_next/static/css/951e2e0eea2d4a5b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[35639,[],\"\"]\n5:I[51454,[],\"\"]\n6:I[48464,[],\"\"]\n7:I[76413,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-03adacad07b346ac.js\",\"20\",\"static/chunks/1bff33f1-1ef85cf5e658a751.js\",\"413\",\"static/chunks/bbda5537-9ec25eb1dd62348a.js\",\"41\",\"static/chunks/41-f30276c289169376.js\",\"608\",\"static/chunks/608-3b079b544e5d5f5e.js\",\"92\",\"static/chunks/92-2153b66ddfaa2359.js\",\"185\",\"static/chunks/app/layout-292f035bb0d2a98e.js\"],\"default\"]\nd:I[26480,[],\"\"]\n8:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n9:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\na:{\"display\":\"inline-block\"}\nb:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"0B_qD27U3VEMnPnujEJxV\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a2b12b4ba4227f0a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/951e2e0eea2d4a5b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$9\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$b\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}]]\n4:null\n"])</script></body></html>