six-degrees 0.4.8 → 0.4.10

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 (239) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/routes-manifest.json +6 -0
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.rsc +13 -13
  15. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +12 -12
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js +2 -1
  23. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/company-scores/route.js +2 -1
  25. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/scraper/route.js +2 -2
  39. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/settings/route.js +3 -2
  41. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js +2 -1
  43. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js +2 -1
  45. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/social/messages/route/app-paths-manifest.json +3 -0
  48. package/.next/standalone/.next/server/app/api/social/messages/route/build-manifest.json +12 -0
  49. package/.next/standalone/.next/server/app/api/social/messages/route/server-reference-manifest.json +4 -0
  50. package/.next/standalone/.next/server/app/api/social/messages/route.js +9 -0
  51. package/.next/standalone/.next/server/app/api/social/messages/route.js.map +5 -0
  52. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -0
  53. package/.next/standalone/.next/server/app/api/social/messages/route_client-reference-manifest.js +3 -0
  54. package/.next/standalone/.next/server/app/api/social/route.js +4 -2
  55. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/import.html +1 -1
  65. package/.next/standalone/.next/server/app/import.rsc +15 -15
  66. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +15 -15
  67. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  68. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +14 -14
  69. package/.next/standalone/.next/server/app/index.html +1 -1
  70. package/.next/standalone/.next/server/app/index.rsc +15 -15
  71. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +14 -14
  72. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  73. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  74. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/launch.html +2 -2
  77. package/.next/standalone/.next/server/app/launch.rsc +15 -15
  78. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +15 -15
  79. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  80. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +14 -14
  81. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/paths.html +1 -1
  86. package/.next/standalone/.next/server/app/paths.rsc +15 -15
  87. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +15 -15
  88. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  89. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +14 -14
  90. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/profile.html +1 -1
  93. package/.next/standalone/.next/server/app/profile.rsc +15 -15
  94. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +15 -15
  95. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  96. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +14 -14
  97. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/queue.html +1 -1
  100. package/.next/standalone/.next/server/app/queue.rsc +15 -15
  101. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +15 -15
  102. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  103. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +14 -14
  104. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/scores.html +1 -1
  107. package/.next/standalone/.next/server/app/scores.rsc +15 -15
  108. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +15 -15
  109. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  110. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +14 -14
  111. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/settings.html +1 -1
  114. package/.next/standalone/.next/server/app/settings.rsc +15 -15
  115. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +15 -15
  116. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  117. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +14 -14
  118. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/setup.html +1 -1
  121. package/.next/standalone/.next/server/app/setup.rsc +15 -15
  122. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +15 -15
  123. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  124. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +14 -14
  125. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  126. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/social.html +1 -1
  128. package/.next/standalone/.next/server/app/social.rsc +15 -15
  129. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +15 -15
  130. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  131. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +14 -14
  132. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06mi9k2._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08f5awg._.js +8 -0
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bat8nx._.js +1 -1
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17hjtzl._.js +8 -0
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20tmem7._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/_0ea9qwy._.js +3 -0
  139. package/.next/standalone/.next/server/chunks/_1_fynia._.js +6 -6
  140. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/_1xh07bp._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_social_messages_route_actions_0skh09r.js +3 -0
  143. package/.next/standalone/.next/server/chunks/lib_18cr1gi._.js +8 -0
  144. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +1 -1
  145. package/.next/standalone/.next/server/chunks/lib_rpc_03i8xef.js +1 -1
  146. package/.next/standalone/.next/server/chunks/lib_rpc_08fc3rp.js +1 -1
  147. package/.next/standalone/.next/server/chunks/lib_rpc_08r2t_q.js +1 -1
  148. package/.next/standalone/.next/server/chunks/lib_rpc_0btpv1t.js +1 -1
  149. package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +5 -5
  150. package/.next/standalone/.next/server/chunks/lib_rpc_0cm2ev3.js +1 -1
  151. package/.next/standalone/.next/server/chunks/lib_rpc_0iovswz.js +1 -1
  152. package/.next/standalone/.next/server/chunks/lib_rpc_0is8flp.js +1 -1
  153. package/.next/standalone/.next/server/chunks/lib_rpc_0v8ajtd.js +1 -1
  154. package/.next/standalone/.next/server/chunks/lib_rpc_0xgmvvt.js +1 -1
  155. package/.next/standalone/.next/server/chunks/lib_rpc_144mzbf.js +1 -1
  156. package/.next/standalone/.next/server/chunks/lib_rpc_1bggi0n.js +1 -1
  157. package/.next/standalone/.next/server/chunks/lib_rpc_1dkcu9f.js +1 -1
  158. package/.next/standalone/.next/server/chunks/lib_rpc_1o0jb6w.js +1 -1
  159. package/.next/standalone/.next/server/chunks/lib_scoring_1-e4ur0.js +3 -0
  160. package/.next/standalone/.next/server/chunks/node_modules_next_1zc5q0a._.js +1 -1
  161. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1feicqq._.js → [root-of-the-server]__0qdeuyo._.js} +1 -1
  162. package/.next/standalone/.next/server/chunks/ssr/_0c_y09g._.js +3 -0
  163. package/.next/standalone/.next/server/chunks/ssr/_0ezj4e0._.js +1 -1
  164. package/.next/standalone/.next/server/chunks/ssr/{_1mj739k._.js → _0l8cxmo._.js} +2 -2
  165. package/.next/standalone/.next/server/chunks/ssr/_1errbuf._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/{_0wxbq78._.js → app_components_19c2d9c._.js} +2 -2
  167. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +1 -1
  169. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +3 -0
  172. package/.next/standalone/.next/server/chunks/ssr/{node_modules_1wax83z._.js → node_modules_0h91jdk._.js} +2 -2
  173. package/.next/standalone/.next/server/chunks/ssr/{node_modules_1nkgb45._.js → node_modules_1f8t_rp._.js} +1 -1
  174. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  175. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  176. package/.next/standalone/.next/server/pages/404.html +1 -1
  177. package/.next/standalone/.next/server/pages/500.html +1 -1
  178. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  180. package/.next/standalone/.next/static/chunks/07dyt47mp4s9-.js +1 -0
  181. package/.next/standalone/.next/static/chunks/{3q3pmt5vv-4pi.js → 160wjb73ddwqd.js} +1 -1
  182. package/.next/standalone/.next/static/chunks/{1z-zp93cyoxvz.js → 1c_n0973t07l0.js} +1 -1
  183. package/.next/standalone/.next/static/chunks/{0bo1dxn5gwzpk.css → 1xptlvtcz6654.css} +1 -1
  184. package/.next/standalone/.next/static/chunks/{2_wcobfqry2uj.js → 206rm6j42gl_a.js} +1 -1
  185. package/.next/standalone/.next/static/chunks/2coxzjm_k6ilr.js +1 -0
  186. package/.next/{static/chunks/0g_p4p7oci18u.js → standalone/.next/static/chunks/2kfhc58df2xyo.js} +1 -1
  187. package/.next/standalone/.next/static/chunks/2pw6_osz1n_te.js +1 -0
  188. package/.next/standalone/.next/static/chunks/{38wwtni5e1ec1.js → 39hr8d-b2ibtw.js} +1 -1
  189. package/.next/standalone/CHANGELOG.md +48 -0
  190. package/.next/standalone/app/api/social/messages/route.js +130 -0
  191. package/.next/standalone/app/api/social/route.js +89 -47
  192. package/.next/standalone/app/components/GalaxyLab.js +4 -1
  193. package/.next/standalone/app/components/ScanStatusBar.js +112 -50
  194. package/.next/standalone/app/components/settings/DataSection.js +2 -1
  195. package/.next/standalone/app/globals.css +4 -0
  196. package/.next/standalone/app/setup/page.js +4 -3
  197. package/.next/standalone/app/social/Conversations.js +246 -0
  198. package/.next/standalone/app/social/page.js +88 -9
  199. package/.next/standalone/lib/galaxy-lab.js +6 -1
  200. package/.next/standalone/lib/island.js +36 -0
  201. package/.next/standalone/lib/linkedin-export.js +175 -5
  202. package/.next/standalone/lib/social-store.js +73 -0
  203. package/.next/standalone/package-lock.json +2 -2
  204. package/.next/standalone/package.json +1 -1
  205. package/.next/standalone/scripts/scrape.py +156 -23
  206. package/.next/static/chunks/07dyt47mp4s9-.js +1 -0
  207. package/.next/static/chunks/{3q3pmt5vv-4pi.js → 160wjb73ddwqd.js} +1 -1
  208. package/.next/static/chunks/{1z-zp93cyoxvz.js → 1c_n0973t07l0.js} +1 -1
  209. package/.next/static/chunks/{0bo1dxn5gwzpk.css → 1xptlvtcz6654.css} +1 -1
  210. package/.next/static/chunks/{2_wcobfqry2uj.js → 206rm6j42gl_a.js} +1 -1
  211. package/.next/static/chunks/2coxzjm_k6ilr.js +1 -0
  212. package/.next/{standalone/.next/static/chunks/0g_p4p7oci18u.js → static/chunks/2kfhc58df2xyo.js} +1 -1
  213. package/.next/static/chunks/2pw6_osz1n_te.js +1 -0
  214. package/.next/static/chunks/{38wwtni5e1ec1.js → 39hr8d-b2ibtw.js} +1 -1
  215. package/CHANGELOG.md +48 -0
  216. package/lib/galaxy-lab.js +6 -1
  217. package/lib/island.js +36 -0
  218. package/lib/linkedin-export.js +175 -5
  219. package/lib/social-store.js +73 -0
  220. package/package.json +1 -1
  221. package/scripts/scrape.py +156 -23
  222. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17kn1mk._.js +0 -8
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1dmc7-t._.js +0 -8
  224. package/.next/standalone/.next/server/chunks/ssr/_005q9n1._.js +0 -3
  225. package/.next/standalone/.next/server/chunks/ssr/_217nddo._.js +0 -3
  226. package/.next/standalone/.next/server/chunks/ssr/app_0i3fw_m._.js +0 -3
  227. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1dato.js +0 -3
  228. package/.next/standalone/.next/static/chunks/0y1yms5kez2f3.js +0 -1
  229. package/.next/standalone/.next/static/chunks/14m1zu-8warte.js +0 -1
  230. package/.next/standalone/.next/static/chunks/15qbli9udo0vh.js +0 -1
  231. package/.next/static/chunks/0y1yms5kez2f3.js +0 -1
  232. package/.next/static/chunks/14m1zu-8warte.js +0 -1
  233. package/.next/static/chunks/15qbli9udo0vh.js +0 -1
  234. /package/.next/standalone/.next/static/{T0eWMsKjgSiPnmx1E0q3G → 7zWJnSkfSoRhRsqY6ZKtD}/_buildManifest.js +0 -0
  235. /package/.next/standalone/.next/static/{T0eWMsKjgSiPnmx1E0q3G → 7zWJnSkfSoRhRsqY6ZKtD}/_clientMiddlewareManifest.js +0 -0
  236. /package/.next/standalone/.next/static/{T0eWMsKjgSiPnmx1E0q3G → 7zWJnSkfSoRhRsqY6ZKtD}/_ssgManifest.js +0 -0
  237. /package/.next/static/{T0eWMsKjgSiPnmx1E0q3G → 7zWJnSkfSoRhRsqY6ZKtD}/_buildManifest.js +0 -0
  238. /package/.next/static/{T0eWMsKjgSiPnmx1E0q3G → 7zWJnSkfSoRhRsqY6ZKtD}/_clientMiddlewareManifest.js +0 -0
  239. /package/.next/static/{T0eWMsKjgSiPnmx1E0q3G → 7zWJnSkfSoRhRsqY6ZKtD}/_ssgManifest.js +0 -0
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/0cz1d0mv5g_q7.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/T0eWMsKjgSiPnmx1E0q3G/_buildManifest.js",
11
- "static/T0eWMsKjgSiPnmx1E0q3G/_ssgManifest.js",
12
- "static/T0eWMsKjgSiPnmx1E0q3G/_clientMiddlewareManifest.js"
10
+ "static/7zWJnSkfSoRhRsqY6ZKtD/_buildManifest.js",
11
+ "static/7zWJnSkfSoRhRsqY6ZKtD/_ssgManifest.js",
12
+ "static/7zWJnSkfSoRhRsqY6ZKtD/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/310vm2bl3xxpt.js",
@@ -27,11 +27,11 @@
27
27
  "wasm": [],
28
28
  "assets": [],
29
29
  "env": {
30
- "__NEXT_BUILD_ID": "T0eWMsKjgSiPnmx1E0q3G",
31
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "LahmUCqJGrx0DN+zaPMi2bbRNv3Y4L5jZmRLBZAlpvQ=",
32
- "__NEXT_PREVIEW_MODE_ID": "1be94e591d7e00b2446797065d32be5d",
33
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "5d1e75f11f6e94510a881ff49fc8459f3743b20be4b3a1124b7c0e33741b75b2",
34
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "fd4edba2779a6fdf906b248fefc9dd528acf9127dd0aaa01131c937551c2892d"
30
+ "__NEXT_BUILD_ID": "7zWJnSkfSoRhRsqY6ZKtD",
31
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "iYGBfW5pztwRh3AZ8uC4c5EC1OorrYxAqV3TkREbris=",
32
+ "__NEXT_PREVIEW_MODE_ID": "62bff897e9803a135e1278ec00cb8cc3",
33
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "28b65aae07a8c36fdbf43f606571565a41f792eafc9b996e35a4c9d4d44a9039",
34
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "f8564b7fd285e584343d132db796633055bd4ae87b36c2ab4d530427febf691e"
35
35
  }
36
36
  }
37
37
  },
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="geist_2ae47f08-module__h69qWW__variable geist_mono_eb58308d-module__w_p2Lq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0bo1dxn5gwzpk.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/310vm2bl3xxpt.js"/><script src="/_next/static/chunks/19mx3mg6lkumu.js" async=""></script><script src="/_next/static/chunks/0bma92pht_c97.js" async=""></script><script src="/_next/static/chunks/2-rtuqsgzmno4.js" async=""></script><script src="/_next/static/chunks/turbopack-43vu1xwipchft.js" async=""></script><script src="/_next/static/chunks/15qbli9udo0vh.js" async=""></script><script src="/_next/static/chunks/24tvdun1cb3g1.js" async=""></script><meta name="robots" content="noindex"/><title>Six Degrees</title><meta name="description" content="Maps your LinkedIn network: who you know, who they know, and the shortest path to someone you haven&#x27;t met. Runs on your own computer; nothing is uploaded."/><link rel="icon" href="/favicon.ico?favicon.23vm2o6v3er2z.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body style="margin:0;padding:0;background:#0a0a1a"><div hidden=""><!--$--><!--/$--></div><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><!--$--><!--/$--><script src="/_next/static/chunks/310vm2bl3xxpt.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[15812,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n3:I[39756,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n5:I[37711,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n6:I[40643,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n7:I[87915,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n8:I[97367,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nc:I[97367,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"ViewportBoundary\"]\ne:I[97367,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"MetadataBoundary\"]\n10:I[68027,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0bo1dxn5gwzpk.css\",\"style\"]\nb:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0bo1dxn5gwzpk.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/15qbli9udo0vh.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/24tvdun1cb3g1.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_2ae47f08-module__h69qWW__variable geist_mono_eb58308d-module__w_p2Lq__variable\",\"children\":[\"$\",\"body\",null,{\"style\":{\"margin\":0,\"padding\":0,\"background\":\"#0a0a1a\"},\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,\"$b\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0bo1dxn5gwzpk.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"T0eWMsKjgSiPnmx1E0q3G\"}\nb:C\nd:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n11:I[27201,[\"/_next/static/chunks/15qbli9udo0vh.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"IconMark\"]\na:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"Six Degrees\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Maps your LinkedIn network: who you know, who they know, and the shortest path to someone you haven't met. Runs on your own computer; nothing is uploaded.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.23vm2o6v3er2z.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L11\",\"3\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="geist_2ae47f08-module__h69qWW__variable geist_mono_eb58308d-module__w_p2Lq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/1xptlvtcz6654.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/310vm2bl3xxpt.js"/><script src="/_next/static/chunks/19mx3mg6lkumu.js" async=""></script><script src="/_next/static/chunks/0bma92pht_c97.js" async=""></script><script src="/_next/static/chunks/2-rtuqsgzmno4.js" async=""></script><script src="/_next/static/chunks/turbopack-43vu1xwipchft.js" async=""></script><script src="/_next/static/chunks/2coxzjm_k6ilr.js" async=""></script><script src="/_next/static/chunks/24tvdun1cb3g1.js" async=""></script><meta name="robots" content="noindex"/><title>Six Degrees</title><meta name="description" content="Maps your LinkedIn network: who you know, who they know, and the shortest path to someone you haven&#x27;t met. Runs on your own computer; nothing is uploaded."/><link rel="icon" href="/favicon.ico?favicon.23vm2o6v3er2z.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body style="margin:0;padding:0;background:#0a0a1a"><div hidden=""><!--$--><!--/$--></div><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><!--$--><!--/$--><script src="/_next/static/chunks/310vm2bl3xxpt.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[15812,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n3:I[39756,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n5:I[37711,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n6:I[40643,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n7:I[87915,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\"]\n8:I[97367,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nc:I[97367,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"ViewportBoundary\"]\ne:I[97367,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"MetadataBoundary\"]\n10:I[68027,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/1xptlvtcz6654.css\",\"style\"]\nb:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1xptlvtcz6654.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/24tvdun1cb3g1.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_2ae47f08-module__h69qWW__variable geist_mono_eb58308d-module__w_p2Lq__variable\",\"children\":[\"$\",\"body\",null,{\"style\":{\"margin\":0,\"padding\":0,\"background\":\"#0a0a1a\"},\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,\"$b\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1xptlvtcz6654.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"7zWJnSkfSoRhRsqY6ZKtD\"}\nb:C\nd:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n11:I[27201,[\"/_next/static/chunks/2coxzjm_k6ilr.js\",\"/_next/static/chunks/24tvdun1cb3g1.js\"],\"IconMark\"]\na:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"Six Degrees\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Maps your LinkedIn network: who you know, who they know, and the shortest path to someone you haven't met. Runs on your own computer; nothing is uploaded.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.23vm2o6v3er2z.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L11\",\"3\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/310vm2bl3xxpt.js"/><script src="/_next/static/chunks/19mx3mg6lkumu.js" async=""></script><script src="/_next/static/chunks/0bma92pht_c97.js" async=""></script><script src="/_next/static/chunks/2-rtuqsgzmno4.js" async=""></script><script src="/_next/static/chunks/turbopack-43vu1xwipchft.js" async=""></script><script src="/_next/static/chunks/3fntmmi971322.js" async=""></script><link rel="icon" href="/favicon.ico?favicon.23vm2o6v3er2z.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><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;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/310vm2bl3xxpt.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"T0eWMsKjgSiPnmx1E0q3G\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:I[27201,[\"/_next/static/chunks/3fntmmi971322.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.23vm2o6v3er2z.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$Ld\",\"1\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/310vm2bl3xxpt.js"/><script src="/_next/static/chunks/19mx3mg6lkumu.js" async=""></script><script src="/_next/static/chunks/0bma92pht_c97.js" async=""></script><script src="/_next/static/chunks/2-rtuqsgzmno4.js" async=""></script><script src="/_next/static/chunks/turbopack-43vu1xwipchft.js" async=""></script><script src="/_next/static/chunks/3fntmmi971322.js" async=""></script><link rel="icon" href="/favicon.ico?favicon.23vm2o6v3er2z.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><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;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/310vm2bl3xxpt.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/3fntmmi971322.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/3fntmmi971322.js\"],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"7zWJnSkfSoRhRsqY6ZKtD\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:I[27201,[\"/_next/static/chunks/3fntmmi971322.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.23vm2o6v3er2z.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$Ld\",\"1\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"LahmUCqJGrx0DN+zaPMi2bbRNv3Y4L5jZmRLBZAlpvQ=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"iYGBfW5pztwRh3AZ8uC4c5EC1OorrYxAqV3TkREbris=\"\n}"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "LahmUCqJGrx0DN+zaPMi2bbRNv3Y4L5jZmRLBZAlpvQ="
4
+ "encryptionKey": "iYGBfW5pztwRh3AZ8uC4c5EC1OorrYxAqV3TkREbris="
5
5
  }
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2776,e=>{"use strict";var t=e.i(43476),n=e.i(15812);e.s(["default",0,function({children:e}){let{userId:o,ready:r}=(0,n.useUser)();return r&&o?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff",padding:24,textAlign:"center",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:r?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},8819,e=>{"use strict";var t=e.i(43476);let n="1px solid rgba(255,255,255,0.1)";function o({children:e,style:n}){return(0,t.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...n},children:e})}e.s(["Body",0,o,"Btn",0,function({children:e,onClick:o,disabled:r,primary:s,tone:i,type:l="button"}){return(0,t.jsx)("button",{type:l,onClick:o,disabled:r,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:r?"#667":"#fff",border:n,background:r?"rgba(255,255,255,0.05)":"bad"===i?"rgba(255,80,80,0.15)":s?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:r?"not-allowed":"pointer"},children:e})},"FONT",0,'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',"LINE",0,n,"Mono",0,function({children:e}){return(0,t.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:e})},"Section",0,function({id:e,title:r,intro:s,children:i}){return(0,t.jsxs)("section",{id:e,style:{padding:"24px 0",borderBottom:n,scrollMarginTop:16},children:[(0,t.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:r}),s&&(0,t.jsx)(o,{style:{marginTop:0,marginBottom:12},children:s}),i]})},"Status",0,function({children:e,tone:n}){return(0,t.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===n?"#00ff88":"bad"===n?"#ff7676":"#e8e8ee",background:"ok"===n?"rgba(0,255,136,0.08)":"bad"===n?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===n?"rgba(0,255,136,0.3)":"bad"===n?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===n&&"✓ ",e]})}])},60451,e=>{"use strict";var t=e.i(43476),n=e.i(71645),o=e.i(22016),r=e.i(2776),s=e.i(15812),i=e.i(19821),l=e.i(84278),a=e.i(39160),c=e.i(7214),d=e.i(40996),u=e.i(8819),p=e.i(64745);let h={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},f=["S","A","B","C","D"],g=e=>/^https:\/\/(www\.)?linkedin\.com\//.test(String(e||""))?e:null;function m({byKey:e,connected:o,ready:r,keep:s,onKeep:i,switching:a,token:c}){let[d,p]=(0,n.useState)(null),[h,g]=(0,n.useState)(""),[x,b]=(0,n.useState)(null),[w,v]=(0,n.useState)(null),[S,j]=(0,n.useState)(100);(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/messages").then(e=>e.json()).then(t=>{e&&p(t)}).catch(()=>{e&&p({conversations:[]})}),()=>{e=!1}},[c,s]),(0,n.useEffect)(()=>{let e=h.trim();if(!s||e.length<2)return;let t=!0,n=setTimeout(()=>{fetch(`/api/social/messages?q=${encodeURIComponent(e)}`).then(e=>e.json()).then(n=>{t&&b({q:e,ids:new Set(n.ids||[])})}).catch(()=>{})},250);return()=>{t=!1,clearTimeout(n)}},[h,s,c]);let{rows:k,leftOut:C}=(0,n.useMemo)(()=>{let t=d?.conversations||[],n=t.filter(e=>e.people.some(e=>o.has(e))),r=n.map(t=>{let n=t.people.map(t=>e.get(t)).filter(Boolean),o=f.find(e=>n.some(t=>t.tier===e))||null;return{...t,persons:n,tier:o}});return{rows:(0,l.sortConversations)(r,e=>e.tier),leftOut:t.length-n.length}},[d,e,o]),T=(0,n.useMemo)(()=>{let e=h.trim().toLowerCase();if(!e)return k;let t=s&&x?.q===h.trim()?x.ids:null;return k.filter(n=>n.persons.some(t=>String(t.name||"").toLowerCase().includes(e))||String(n.title||"").toLowerCase().includes(e)||t?.has(n.id))},[k,h,x,s]),F={padding:"12px 14px",borderRadius:8,border:u.LINE,background:"rgba(255,255,255,0.03)",marginTop:10};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:F,children:[(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13.5,color:"#fff",cursor:a?"default":"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:s,disabled:a,onChange:e=>i(e.target.checked)}),(0,t.jsx)("b",{children:"Keep my messages on this computer"}),(0,t.jsx)("span",{style:{fontSize:11.5,color:s?"#00ff88":"#8b9a9a"},children:s?"on":"off"})]}),(0,t.jsxs)(u.Body,{style:{margin:"6px 0 0",fontSize:12.5},children:["Off unless you turn it on. When it’s on, the messages themselves, including what other people wrote to you, are saved only in the app’s data folder on this computer. They’re never sent anywhere, and they aren’t in “Save a copy of my network”. ",(0,t.jsx)("i",{children:"Forget it"}),", or switching this off, deletes them. With it off, the list below still shows who, when and who wrote last."]})]}),(0,t.jsxs)("div",{style:{...F,padding:0},children:[(0,t.jsxs)("div",{style:{padding:"10px 14px",borderBottom:u.LINE,display:"flex",gap:10,alignItems:"center"},children:[(0,t.jsx)("input",{type:"search",value:h,onChange:e=>{g(e.target.value),j(100)},placeholder:s?"Search by name or by what was said":"Search by name","aria-label":"Search conversations",style:{flex:1,minWidth:0,padding:"6px 10px",borderRadius:6,border:u.LINE,background:"rgba(0,0,0,0.3)",color:"#fff",fontSize:13}}),(0,t.jsxs)("span",{style:{fontSize:12,color:"#8b9a9a",whiteSpace:"nowrap"},children:[T.length.toLocaleString()," ",1===T.length?"conversation":"conversations"]})]}),(!d||!r)&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"Loading…"}),d&&r&&0===k.length&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"No conversations with your connections yet. Choose your export folder above, or sync your messages."}),d&&r&&k.length>0&&0===T.length&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"Nothing matches that."}),r&&T.slice(0,S).map(e=>(0,t.jsx)(y,{c:e,open:w===e.id,onToggle:()=>v(w===e.id?null:e.id),keep:s,token:c},e.id)),r&&T.length>S&&(0,t.jsxs)("button",{onClick:()=>j(S+100),style:{width:"100%",padding:10,background:"none",border:"none",color:"#3498DB",cursor:"pointer",fontSize:13},children:["Show ",Math.min(100,T.length-S).toLocaleString()," more"]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:["Waiting on you first (they wrote last), then S and A tier, then the most recent. Groups are shown but not counted in warmth.",C>0?` ${C.toLocaleString()} ${1===C?"conversation is":"conversations are"} with people who aren’t your connections and aren’t shown.`:""]})]})}function y({c:e,open:n,onToggle:o,keep:r,token:s}){let i,l=e.group?null:e.persons[0],a=e.persons.map(e=>e.name).filter(Boolean),c=e.group?e.title||(a.length?`${a.slice(0,3).join(", ")}${e.people.length>3?` +${e.people.length-3}`:""}`:`${e.people.length} people`):l?.name||String(e.people[0]||"").replace(/\/+$/,"").split("/").pop(),d=g(e.threadUrl)||(e.group?null:g(l?.profile_url||e.people[0])),u=!e.group&&!0===e.lastFromThem;return(0,t.jsxs)("div",{style:{borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":n,onClick:o,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:10,padding:"8px 14px",fontSize:13,cursor:"pointer",background:n?"rgba(255,255,255,0.04)":"none"},children:[(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:h[e.tier]||"#556",flexShrink:0}}),(0,t.jsxs)("span",{style:{flex:"1 1 160px",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[(0,t.jsx)("b",{children:c}),e.group&&(0,t.jsx)("span",{style:{marginLeft:6,fontSize:10.5,padding:"1px 6px",borderRadius:4,background:"rgba(255,255,255,0.08)",color:"#b8c4c4"},children:"Group"}),l?.company?(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",l.company]}):null]}),e.unread>0&&(0,t.jsxs)("span",{style:{fontSize:11,padding:"1px 7px",borderRadius:10,background:"#3498DB",color:"#fff"},children:[e.unread," unread"]}),null!=e.lastFromThem&&(0,t.jsx)("span",{style:{color:u?"#ff9f43":"#8b9a9a",fontSize:12,whiteSpace:"nowrap"},children:e.lastFromThem?"They wrote last":"You wrote last"}),(0,t.jsx)("span",{style:{color:"#b8c4c4",fontSize:12,whiteSpace:"nowrap",minWidth:86,textAlign:"right"},children:(i=e.last)?new Date(i).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):""}),(0,t.jsx)("span",{style:{color:"#8b9a9a",fontSize:12,whiteSpace:"nowrap",minWidth:74,textAlign:"right"},children:null!=e.count?`${e.count.toLocaleString()} ${1===e.count?"message":"messages"}`:""}),d?(0,t.jsx)("a",{href:d,target:"_blank",rel:"noreferrer",onClick:e=>e.stopPropagation(),style:{color:"#3498DB",textDecoration:"none",whiteSpace:"nowrap",fontSize:12},children:"Open on LinkedIn ↗"}):(0,t.jsx)("span",{style:{minWidth:104}})]}),n&&(0,t.jsx)(x,{id:e.id,keep:r,group:e.group,token:s},`${e.id}:${s}:${r}`)]})}function x({id:e,keep:o,group:r,token:s}){let[i,l]=(0,n.useState)(null),[a,c]=(0,n.useState)(null),d=(0,n.useRef)(null),p=(0,n.useRef)(null);async function h(){let t=d.current,n=await fetch(`/api/social/messages?id=${encodeURIComponent(e)}&before=${i.start}&limit=200`).then(e=>e.json()).catch(()=>null);n&&!n.error&&(p.current=t?t.scrollHeight-t.scrollTop:null,l({...i,start:n.start,messages:[...n.messages,...i.messages]}))}(0,n.useEffect)(()=>{if(!o)return;let t=!0;return fetch(`/api/social/messages?id=${encodeURIComponent(e)}&limit=100`).then(e=>e.json()).then(e=>{t&&(e.error?c(e.error):(p.current="bottom",l(e)))}).catch(()=>{t&&c("It couldn’t be read.")}),()=>{t=!1}},[e,o,s]),(0,n.useLayoutEffect)(()=>{let e=d.current;e&&p.current&&("bottom"===p.current?e.scrollTop=e.scrollHeight:e.scrollTop=e.scrollHeight-p.current,p.current=null)},[i]);let f={padding:"10px 14px 14px 32px",fontSize:12.5,color:"#8b9a9a"};return o?a?(0,t.jsx)("div",{style:{...f,color:"#ff9b9b"},children:a}):i?i.total?(0,t.jsxs)("div",{ref:d,style:{maxHeight:440,overflowY:"auto",padding:"8px 14px 12px",background:"rgba(0,0,0,0.2)"},children:[i.start>0&&(0,t.jsx)("div",{style:{textAlign:"center",margin:"4px 0 10px"},children:(0,t.jsxs)("button",{onClick:h,style:{background:"rgba(255,255,255,0.06)",border:u.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 12px"},children:["Show earlier (",i.start.toLocaleString()," more)"]})}),i.messages.map((e,n)=>{let o;return(0,t.jsx)("div",{style:{display:"flex",justifyContent:e.fromMe?"flex-end":"flex-start",margin:"6px 0"},children:(0,t.jsxs)("div",{style:{maxWidth:"72%"},children:[(0,t.jsx)("div",{style:{padding:"7px 11px",borderRadius:12,fontSize:13,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere",background:e.fromMe?"rgba(52,152,219,0.35)":"rgba(255,255,255,0.08)",color:"#eef",borderBottomRightRadius:e.fromMe?4:12,borderBottomLeftRadius:e.fromMe?12:4},children:e.text||(0,t.jsx)("i",{style:{color:"#8b9a9a"},children:"(no words: an attachment or a reaction)"})}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"#778",marginTop:2,textAlign:e.fromMe?"right":"left"},children:[e.fromMe?"You":r?"Someone in the group":"Them"," · ",(o=e.t)?new Date(o).toLocaleString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit"}):""]})]})},i.start+n)})]}):(0,t.jsx)("div",{style:f,children:"No messages are kept for this conversation yet. Choose your export folder again, or sync your messages, to bring them in."}):(0,t.jsx)("div",{style:f,children:"Opening…"}):(0,t.jsxs)("div",{style:f,children:["Turn on ",(0,t.jsx)("b",{children:"Keep my messages"})," to read them here."]})}let b={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},w={warm:["Warm","#ff9f43"],cool:["Cool","#3498DB"],dormant:["Dormant","#8899aa"],never:["Never messaged","#556"]},v={"connections.csv":"first name","messages.csv":"conversation id","invitations.csv":"direction","positions.csv":"company name","shares.csv":"date"},S=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";async function j(e){let t=[],n={},o=0;for(let r of e)for(let e of r.messages){let s=JSON.stringify(e).length+2;o+s>25e5&&o>0&&(t.push(n),n={},o=0),n[r.id]||(n[r.id]={title:r.title||"",messages:[]},o+=r.id.length+(r.title||"").length+40),n[r.id].messages.push(e),o+=s}t.push(n);for(let e=0;e<t.length;e++){let n=await fetch("/api/social/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({part:e,parts:t.length,threads:t[e]})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The messages couldn’t be saved.")}}function k(){let{userId:e}=(0,s.useUser)(),[r,h]=(0,n.useState)(void 0),[f,g]=(0,n.useState)(null),[y,x]=(0,n.useState)(!1),[k,C]=(0,n.useState)(null),[T,F]=(0,n.useState)(!1),[I,M]=(0,n.useState)(()=>(0,d.scannerNow)()),[z,B]=(0,n.useState)(!1),[L,D]=(0,n.useState)(0),O=(0,n.useRef)(null),N=r?.keepMessages===!0,E=()=>fetch("/api/social").then(e=>e.json()).then(e=>h(e.social||null)).catch(()=>h(null)).finally(()=>D(e=>e+1));(0,n.useEffect)(()=>{E()},[]),(0,n.useEffect)(()=>(0,d.watchScanner)(()=>M((0,d.scannerNow)())),[]),(0,n.useEffect)(()=>{if(!e)return;let t=!0;return(0,i.loadNetwork)(e).then(e=>{t&&g(e)}).catch(()=>{}),()=>{t=!1}},[e]);let $=(0,n.useMemo)(()=>{let e=new Map;for(let t of[...f?.degree1||[],...f?.degree2||[]])e.has((0,c.keyFor)(t))||e.set((0,c.keyFor)(t),t);return e},[f]),A=(0,n.useMemo)(()=>new Set((f?.degree1||[]).map(c.keyFor)),[f]);async function W(e){F(!0),C(null);try{let t={};for(let n of Array.from(e||[])){let e=n.name.toLowerCase();v[e]&&!t[e]&&(t[e]=(0,l.readTable)(await n.text(),v[e]))}if(!Object.keys(t).length)throw Error("That folder doesn’t have LinkedIn’s export files in it (Connections.csv, messages.csv and so on).");let n=t["connections.csv"]||[],o=t["messages.csv"]?(0,l.messageStats)(t["messages.csv"]):{asOf:null,people:new Map},r=t["messages.csv"]?(0,l.buildConversations)(t["messages.csv"],{keepText:N}):null;O.current=t["messages.csv"]||null;let s={};for(let[e,t]of o.people)s[e]={last:t.last,lastFromThem:t.lastFromThem,total:t.total,recent:t.recent};if(y)for(let e of n){let t=e["email address"];if(!t)continue;let n=(0,c.keyFor)({profile_url:e.url});s[n]={...s[n]||{},email:t}}let i=o.asOf||Date.now(),a={asOf:i,people:s,conversations:r?r.conversations.map(l.conversationSummary):[],chapters:(0,l.careerChapters)(t["positions.csv"]||[],n,i),posts:t["shares.csv"]?(0,l.postingEffect)(t["shares.csv"],n):null,invites:t["invitations.csv"]?(0,l.invitationSplit)(t["invitations.csv"]):null,emails:y},d=await fetch("/api/social",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"It couldn’t be saved.");r&&N&&await j(r.conversations),C({good:!0,text:`Read ${Object.keys(t).length} of LinkedIn’s files: ${o.people.size.toLocaleString()} people you’ve messaged one to one`+(r?`, ${r.conversations.length.toLocaleString()} conversations${N?", their messages kept on this computer":""}.`:".")}),await E()}catch(e){C({good:!1,text:e.message})}finally{F(!1)}}async function R(){C(null);try{let e=await (0,d.runScrape)("messages");C(e?.exitCode===0?{good:!0,text:"Your messages list is read."}:{good:!1,text:"The sync stopped before it finished. The Scan page has the log."}),await E()}catch(e){C({good:!1,text:e.message})}}async function _(e){await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoSync:e})}),E()}async function U(e){if(e||window.confirm("Delete the messages kept on this computer? The list of conversations stays; the messages themselves are deleted.")){B(!0),C(null);try{if(e||await fetch("/api/social/messages",{method:"DELETE"}),!(await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepMessages:e})})).ok)throw Error("The switch couldn’t be saved.");e&&O.current?(await j((0,l.buildConversations)(O.current,{keepText:!0}).conversations),C({good:!0,text:"Your messages are kept on this computer now."})):e?C({good:!0,text:"On. Choose your export folder again, or sync your messages, to bring the messages in."}):C({good:!0,text:"Off. The kept messages are deleted."})}catch(e){C({good:!1,text:e.message})}finally{B(!1),E()}}}async function P(){await fetch("/api/social",{method:"DELETE"}),O.current=null,C({good:!0,text:"Forgotten. Nothing from your export or messages is kept here now, the messages themselves included."}),E()}let{merged:H,asOf:J}=(0,n.useMemo)(()=>(0,a.mergeSocial)(r),[r]),K=(0,n.useMemo)(()=>{let e={warm:0,cool:0,dormant:0,never:0};for(let t of f?.degree1||[])e[(0,l.warmthOf)(H.get((0,c.keyFor)(t)),J)]+=1;return e},[f,H,J]),Y=(0,n.useMemo)(()=>{let e={asOf:J,people:new Map([...H].filter(([,e])=>null!=e.lastFromThem))},t=(0,l.repliesWaiting)(e).map(e=>({...e,person:$.get(e.url)}));for(let[e,n]of H)n.unread>0&&!t.some(t=>t.url===e)&&t.push({url:e,unread:n.unread,person:$.get(e)});let n=e=>({S:0,A:1})[e.person?.tier]??2;return t.sort((e,t)=>n(e)-n(t)||(e.days??0)-(t.days??0)).slice(0,15)},[H,J,$]);if(p.IS_DEMO)return(0,t.jsx)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#aaa",padding:40,fontFamily:u.FONT},children:"Not part of the demo."});let q=I?.running,G={padding:"12px 14px",borderRadius:8,border:u.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},V={fontSize:16,margin:"24px 0 6px"};return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:u.FONT},children:[(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:u.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(o.default,{href:"/",style:{color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:u.LINE},children:"← Back to Map"}),(0,t.jsxs)("h1",{style:{fontSize:22,fontWeight:700,margin:0,color:"#FFD700"},children:["Social ",(0,t.jsx)("span",{style:{fontSize:12,color:"#8b9a9a",fontWeight:600},children:"experimental"})]})]}),(0,t.jsxs)("main",{style:{maxWidth:980,margin:"0 auto",padding:"8px 24px 64px"},children:[(0,t.jsxs)(u.Body,{style:{marginTop:16},children:["Who you’re warm with, who’s waiting on a reply, and how each chapter of your career built your network, from your own LinkedIn data. Only dates, who wrote last and counts are kept on this computer, and what messages say only if you turn on ",(0,t.jsx)("i",{children:"Keep my messages"})," under Conversations."]}),(0,t.jsx)("h2",{style:V,children:"Your LinkedIn export"}),(0,t.jsxs)("div",{style:G,children:[(0,t.jsxs)(u.Body,{style:{margin:0},children:["On LinkedIn: ",(0,t.jsx)("i",{children:"Settings → Data privacy → Get a copy of your data"}),", pick the larger archive, and unzip the file it emails you. Then choose that folder here. It’s read in this window; nothing goes to LinkedIn."]}),(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",marginTop:10},children:[(0,t.jsx)("input",{type:"checkbox",checked:y,onChange:e=>x(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Also keep email addresses from it, on this computer only, for one-click email."})]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsxs)("label",{style:{padding:"7px 14px",borderRadius:8,background:"rgba(52,152,219,0.18)",color:"#cfe6f7",cursor:T?"default":"pointer",fontSize:13},children:[T?"Reading…":r?"Choose a newer export":"Choose the export folder",(0,t.jsx)("input",{type:"file",webkitdirectory:"",directory:"",multiple:!0,disabled:T,style:{display:"none"},onChange:e=>W(e.target.files)})]}),r&&(0,t.jsxs)("span",{style:{fontSize:12,color:"#8b9a9a"},children:["From an export up to ",S(r.asOf),r.liveAt?` \xb7 messages synced ${S(Date.parse(r.liveAt))}`:""]}),r&&(0,t.jsx)("button",{onClick:P,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:12},children:"Forget it"})]})]}),(0,t.jsxs)("h2",{style:V,children:["Live messages sync ",(0,t.jsx)("span",{style:{fontSize:11,color:"#FFD700"},children:"experimental"})]}),(0,t.jsxs)("div",{style:G,children:[(0,t.jsxs)(u.Body,{style:{margin:0},children:["Reads your messages list once, in your own Chrome: who each one-to-one conversation is with, when it was last active, whether it’s unread and who wrote last. It uses no search budget and opens no conversation. The newest message’s words are kept only if ",(0,t.jsx)("i",{children:"Keep my messages"})," is on."]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:R,disabled:q,style:{padding:"7px 14px",borderRadius:8,border:"none",background:q?"#333":"rgba(0,255,136,0.15)",color:q?"#777":"#00ff88",cursor:q?"default":"pointer",fontSize:13},children:q?"The scanner is busy":"Sync messages now"}),(0,t.jsxs)("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12.5,color:"#b8c4c4"},children:[(0,t.jsx)("input",{type:"checkbox",checked:r?.autoSync===!0,onChange:e=>_(e.target.checked)}),"Once a day while the app is open (daytime only)"]})]})]}),k&&(0,t.jsx)("div",{style:{marginTop:10,fontSize:13,color:k.good?"#00ff88":"#ff9b9b"},children:k.text}),(0,t.jsx)("h2",{style:V,children:"Conversations"}),(0,t.jsx)(m,{byKey:$,connected:A,ready:!!f,keep:N,onKeep:U,switching:z||T,token:L}),r&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:V,children:"Warmth"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:10},children:Object.entries(w).map(([e,[n,o]])=>(0,t.jsxs)("div",{style:{...G,marginTop:0},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:o},children:(K[e]||0).toLocaleString()}),(0,t.jsx)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:n})]},e))}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:"Of your connections. Warm: messaged in the last 30 days, or 3+ messages in 90. Cool: within a year. Dormant: longer ago."}),(0,t.jsx)("h2",{style:V,children:"Waiting on you"}),(0,t.jsxs)("div",{style:{...G,padding:0},children:[0===Y.length&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"No one is waiting on a reply."}),Y.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)",fontSize:13},children:[(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:b[e.person?.tier]||"#556",flexShrink:0}}),(0,t.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("b",{children:e.person?.name||String(e.url||"").replace(/\/+$/,"").split("/").pop()}),e.person?.company?(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",e.person.company]}):null]}),(0,t.jsx)("span",{style:{color:"#b8c4c4"},children:e.unread?`${e.unread} unread`:`wrote ${e.days} days before your export`}),(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Open ↗"})]},e.url))]}),r.chapters?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:V,children:"Career chapters"}),(0,t.jsx)("div",{style:{...G,padding:0},children:r.chapters.map(e=>{let n=(e.people||[]).filter(e=>["warm","cool"].includes((0,l.warmthOf)(H.get((0,c.keyFor)({profile_url:e})),J))).length;return(0,t.jsxs)("div",{style:{display:"flex",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)",fontSize:13,alignItems:"baseline"},children:[(0,t.jsxs)("span",{style:{flex:1},children:[(0,t.jsx)("b",{children:e.company})," ",(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[e.title," · ",new Date(e.from).getFullYear(),"–",e.to?new Date(e.to).getFullYear():"now"]})]}),(0,t.jsxs)("span",{style:{color:"#b8c4c4"},children:[e.made.toLocaleString()," connections made"]}),(0,t.jsx)("span",{style:{color:"#ff9f43",minWidth:90,textAlign:"right"},children:e.made?`${Math.round(100*n/e.made)}% still in touch`:""})]},`${e.company}-${e.from}`)})})]}),r.posts?.posts?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:V,children:"Does posting work?"}),(0,t.jsxs)("div",{style:G,children:[(0,t.jsxs)("div",{style:{fontSize:13},children:["In the week after a post you made ",(0,t.jsx)("b",{children:r.posts.afterPosts.toFixed(1)})," new connections on average; a usual week, ",(0,t.jsx)("b",{children:r.posts.usualWeek.toFixed(1)}),"."]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:"What came after a post, not proof it came from it."}),[...r.posts.posts].sort((e,t)=>t.week-e.week).slice(0,3).map(e=>(0,t.jsxs)("div",{style:{fontSize:12.5,color:"#b8c4c4",marginTop:6},children:[S(e.t),": ",e.week," new connections that week ",e.link?(0,t.jsx)("a",{href:e.link,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Post ↗"}):null]},e.t))]})]}),r.invites?.total>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:V,children:"Who reaches out"}),(0,t.jsx)("div",{style:G,children:(0,t.jsxs)("span",{style:{fontSize:13},children:[r.invites.incoming.toLocaleString()," requests came to you and you sent ",r.invites.outgoing.toLocaleString()," ","(",Math.round(100*r.invites.incoming/r.invites.total),"% came to you), as far as your export shows."]})})]})]})]})]})}e.s(["default",0,function(){return(0,t.jsx)(r.default,{children:(0,t.jsx)(k,{})})}],60451)},39160,84278,e=>{"use strict";var t=e.i(7214),n=e.i(7837);function o(e){let t=String(e||"").trim();if(!t)return null;let n=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(?:\s*UTC)?$/);if(n)return Date.UTC(+n[1],n[2]-1,+n[3],+n[4],+n[5],+(n[6]||0));if(n=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2,4}),?\s+(\d{1,2}):(\d{2})\s*(AM|PM)?$/i)){let e=100>+n[3]?2e3+ +n[3]:+n[3],t=n[4]%12;return"PM"===(n[6]||"").toUpperCase()&&(t+=12),Date.UTC(e,n[1]-1,+n[2],t,+n[5])}if(n=t.match(/^([A-Za-z]{3,9})\s+(\d{4})$/)){let e=Date.parse(`1 ${n[1]} ${n[2]} UTC`);return Number.isNaN(e)?null:e}let o=Date.parse(/\d{4}$/.test(t)?`${t} UTC`:t);return Number.isNaN(o)?null:o}let r=e=>(0,t.keyFor)({profile_url:e});function s(e=[]){let t=new Map;for(let n of e){let e=r(n["sender profile url"]),o=n["conversation id"];o&&e&&(t.has(e)||t.set(e,new Set),t.get(e).add(o))}let n=null;for(let[e,o]of t)(!n||o.size>t.get(n).size)&&(n=e);return n}function i(e,t){if(!e||!e.total)return"never";let n=t-e.last;return n<=2592e6||e.recent>=3?"warm":n<=31536e6?"cool":"dormant"}e.s(["buildConversations",0,function(e=[],{keepText:t=!1}={}){let n=s(e),i=new Map;for(let s of e){let e=r(s["sender profile url"]),l=s["conversation id"];if(!l||!e)continue;let a=o(s.date);if(null==a)continue;i.has(l)||i.set(l,{id:l,title:"",everyone:new Set,messages:[]});let c=i.get(l);c.everyone.add(e),String(s["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).forEach(e=>c.everyone.add(r(e)));let d={t:a,fromMe:e===n};t&&(d.text=[s.subject,s.content].map(e=>String(e||"").trim()).filter(Boolean).join("\n\n"),!c.title&&s["conversation title"]&&(c.title=String(s["conversation title"]).trim())),c.messages.push(d)}let l=[];for(let e of i.values()){if(!e.everyone.has(n))continue;let o=[...e.everyone].filter(e=>e&&e!==n).sort();if(!o.length)continue;e.messages.sort((e,t)=>e.t-t.t);let r={id:e.id,people:o,group:o.length>1,messages:e.messages};t&&(r.title=e.title),l.push(r)}return{self:n,conversations:l}},"careerChapters",0,function(e=[],t=[],n=Date.now()){let s=e.map(e=>({company:e["company name"]||"",title:e.title||"",from:o(e["started on"]),to:o(e["finished on"])})).filter(e=>e.company&&null!=e.from).sort((e,t)=>e.from-t.from),i=t.map(e=>({url:r(e.url||e.profile_url),t:o(e["connected on"]||e.connected_on)})).filter(e=>null!=e.t);return s.map(e=>{let t=e.to??n,o=i.filter(n=>n.t>=e.from&&n.t<t);return{...e,to:e.to,made:o.length,people:o.map(e=>e.url)}})},"conversationSummary",0,function(e){let t=e.messages[e.messages.length-1];return{id:e.id,people:e.people,group:e.group,last:t?t.t:null,lastFromThem:t?!t.fromMe:null,count:e.messages.length}},"invitationSplit",0,function(e=[]){let t=0,n=0;for(let o of e){let e=String(o.direction||"").toUpperCase();"INCOMING"===e?t+=1:"OUTGOING"===e&&(n+=1)}return{incoming:t,outgoing:n,total:t+n}},"messageStats",0,function(e=[]){let t=s(e),n=new Map;for(let t of e){let e=r(t["sender profile url"]),s=t["conversation id"];if(!s||!e)continue;let i=String(t["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(r),l=o(t.date);if(null==l)continue;n.has(s)||n.set(s,{people:new Set,msgs:[]});let a=n.get(s);a.people.add(e),i.forEach(e=>a.people.add(e)),a.msgs.push({from:e,t:l})}let i=0,l=new Map;for(let e of n.values()){let n=[...e.people].filter(e=>e!==t);if(1!==n.length||!e.people.has(t))continue;let o=n[0],r=l.get(o)||{last:0,lastFromThem:!1,total:0,times:[]};for(let n of e.msgs)r.total+=1,r.times.push(n.t),n.t>=r.last&&(r.last=n.t,r.lastFromThem=n.from!==t),n.t>i&&(i=n.t);l.set(o,r)}for(let e of l.values())e.recent=e.times.filter(e=>e>i-7776e6).length,delete e.times;return{self:t,asOf:i||null,people:l}},"postingEffect",0,function(e=[],t=[]){let n=e.map(e=>({t:o(e.date),link:e.sharelink||e["share link"]||""})).filter(e=>null!=e.t).sort((e,t)=>e.t-t.t),r=t.map(e=>o(e["connected on"]||e.connected_on)).filter(e=>null!=e).sort((e,t)=>e-t);if(!r.length)return{posts:[],usualWeek:0,afterPosts:0};let s=Math.max(6048e5,r[r.length-1]-r[0]),i=r.length/s*6048e5,l=n.map(e=>({...e,week:r.filter(t=>t>=e.t&&t<e.t+6048e5).length})),a=l.length?l.reduce((e,t)=>e+t.week,0)/l.length:0;return{posts:l,usualWeek:i,afterPosts:a}},"readTable",0,function(e,t){let o=(0,n.parseCsv)(String(e||"")),r=o.findIndex(e=>e.some(e=>e.trim().toLowerCase()===t.toLowerCase()));if(r<0)return[];let s=o[r].map(e=>e.trim().toLowerCase());return o.slice(r+1).filter(e=>e.some(e=>e.trim())).map(e=>Object.fromEntries(s.map((t,n)=>[t,(e[n]??"").trim()])))},"repliesWaiting",0,function(e){let t=[];for(let[n,o]of e.people){let r=e.asOf-o.last;o.lastFromThem&&r>=2592e5&&r<=2592e6&&t.push({url:n,days:Math.round(r/864e5),total:o.total})}return t.sort((e,t)=>e.days-t.days)},"sortConversations",0,function(e=[],t=()=>null){let n=e=>e.group||!0!==e.lastFromThem?1:0,o=e=>({S:0,A:1})[t(e)]??2;return[...e].sort((e,t)=>n(e)-n(t)||o(e)-o(t)||(t.last||0)-(e.last||0))},"warmthOf",0,i],84278);let l="six-degrees-galaxy-lab",a="six-degrees-galaxy-layouts",c=Object.freeze({on:!1,gravity:0,rings:1,push:15,pull:1,distance:1,dotSize:1,lines:1,sizeBy:"power",names:"key",branch:!0,colourBy:"tier",speed:15,loop:!1,labels:!0}),d=["gravity","rings","push","pull","distance","dotSize","lines","sizeBy","names","branch","colourBy","speed","loop"],u=Object.freeze({gravity:.25,rings:0,push:25,pull:2.5,distance:.35,sizeBy:"reach"}),p=new Set,h=null;function f(){return h||(h=function(){try{let e=JSON.parse(localStorage.getItem(l)||"null");return e&&"object"==typeof e?{...c,...e}:c}catch{return c}}()),h}function g(e){h=null===e?{...c,on:f().on,labels:f().labels}:{...f(),...e};try{localStorage.setItem(l,JSON.stringify(h))}catch{}p.forEach(e=>e())}let m=null,y=new Set;function x(){if(!m){try{m=JSON.parse(localStorage.getItem(a)||"[]")}catch{m=[]}Array.isArray(m)||(m=[])}return m}function b(e){m=e;try{localStorage.setItem(a,JSON.stringify(e))}catch{}y.forEach(e=>e())}let w=new Set,v={at:null,playing:!1,min:null,max:null,of:0,find:"",fly:0,found:0,social:void 0},S=null;function j(e){let t={...v,...e};Object.keys(e).every(e=>Object.is(t[e],v[e]))||(v=t,w.forEach(e=>e()))}function k(){cancelAnimationFrame(S),S=null,j({playing:!1})}let C=null;function T(e){let n=new Map;for(let[o,r]of Object.entries(e?.people||{}))n.set((0,t.keyFor)({profile_url:o}),{...r});for(let[o,r]of Object.entries(e?.live||{})){let e=(0,t.keyFor)({profile_url:o}),s=n.get(e)||{total:0,recent:0};r.last&&(!s.last||r.last>s.last)&&(s.last=r.last,"boolean"==typeof r.lastFromThem&&(s.lastFromThem=r.lastFromThem)),s.unread=r.unread,s.total=Math.max(s.total||0,1),n.set(e,s)}let o=Math.max(e?.asOf||0,e?.liveAt&&Date.parse(e.liveAt)||0);for(let e of n.values())(e.last||0)>o&&(o=e.last);return{merged:n,asOf:o,chapters:e?.chapters||[],posts:e?.posts?.posts||[]}}let F={1:"#4FC3F7",2:"#BA68C8",3:"#FFB74D"},I=["#FF6B6B","#4ECDC4","#FFD93D","#A29BFE","#00B894","#FD79A8","#74B9FF","#E17055"],M={warm:"#FF7043",cool:"#4FC3F7",dormant:"#8D6E63",never:"#546E7A"},z="#4a5568",B=e=>String(e||"").trim().toLowerCase();e.s(["CLUSTERS",0,u,"LAB_DEFAULTS",0,c,"applyLayout",0,function(e){let t=x().find(t=>t.name===e);t&&g(Object.fromEntries(d.filter(e=>e in t.settings).map(e=>[e,t.settings[e]])))},"bornTimes",0,function(e,t){let n=new Map(e.map(e=>[e.id,e])),o=new Map,r=(e,s=0)=>{if(o.has(e.id))return o.get(e.id);let i=-1/0,l=t.get(e.id);if(1===e.degree||null==l||s>6){let t=e.connected_date?Date.parse(e.connected_date):NaN;i=Number.isNaN(t)?-1/0:t}return null!=l&&n.has(l)&&s<=6&&(i=Math.max(i,r(n.get(l),s+1))),o.set(e.id,i),i};return e.map(e=>r(e))},"chapterAt",0,function(e,t){let n=null;for(let o of e?.chapters||[])Number.isFinite(o.from)&&o.from<=t&&(!n||o.from>n.from)&&(n=o);return n&&(!Number.isFinite(n.to)||n.to>t)?n:null},"clockNow",0,()=>v,"colourScheme",0,function(e,n,o,r){if("degree"===e)return{of:e=>F[Math.min(e.degree||1,3)],legend:[["1st",F[1]],["2nd",F[2]],["3rd+",F[3]]]};if("company"===e){let e=new Map;for(let t of n){let n=B(t.company);if(!n)continue;let o=e.get(n)||{name:String(t.company).trim(),n:0};o.n+=1,e.set(n,o)}let t=[...e.entries()].filter(([,e])=>e.n>1).sort((e,t)=>t[1].n-e[1].n).slice(0,I.length),o=new Map(t.map(([e],t)=>[e,I[t]]));return{of:e=>o.get(B(e.company))||z,legend:[...t.map(([,e],t)=>[e.name,I[t]]),["Other",z]]}}return"warmth"===e&&r?{of:e=>1===(e.degree||1)?M[i(r.merged.get((0,t.keyFor)(e)),r.asOf)]:"#2d3748",legend:[["Warm",M.warm],["Cool",M.cool],["Dormant",M.dormant],["Never messaged",M.never]]}:{of:e=>o[e.tier]||"#666",legend:Object.entries(o)}},"effectiveLab",0,e=>e.on?e:e.labels===c.labels?c:{...c,labels:e.labels},"findMatches",0,function(e,t){let n=String(t||"").trim().toLowerCase();if(n.length<2)return null;let o=new Set;for(let t of e)[t.name,t.company,t.role,t.headline].some(e=>e&&String(e).toLowerCase().includes(n))&&o.add(t.id);return o},"forgetLayout",0,function(e){b(x().filter(t=>t.name!==e))},"labNow",0,f,"layoutsNow",0,x,"loadSocial",0,function(){return C||(C=fetch("/api/social").then(e=>e.ok?e.json():{}).then(e=>{j({social:e.social?T(e.social):null})}).catch(()=>j({social:null}))),C},"mergeSocial",0,T,"milestones",0,function(e){let t=[];for(let n of e?.chapters||[])Number.isFinite(n.from)&&t.push({t:n.from,kind:"job",label:n.company});for(let n of e?.posts||[])Number.isFinite(n.t)&&t.push({t:n.t,kind:"post",label:"You posted"});return t.sort((e,t)=>e.t-t.t)},"pause",0,k,"play",0,function e(){if(null==v.min||null==v.max||v.max<=v.min)return;let t=v.max-v.min,n=1e3*Math.max(1,Number(f().speed)||15),o=null==v.at||v.at>=v.max?v.min:v.at,r=performance.now()-(o-v.min)/t*n;j({at:o,playing:!0});let s=o=>{let i=Math.min(v.max,v.min+(o-r)/n*t);if(j({at:i}),i>=v.max){S=null,j({playing:!1}),f().loop&&setTimeout(()=>{S||v.at!==v.max||(j({at:v.min}),e())},1200);return}S=requestAnimationFrame(s)};cancelAnimationFrame(S),S=requestAnimationFrame(s)},"reachCounts",0,function(e,t){let n=new Map(e.map(e=>[e.id,0]));for(let o of e){let e=t.get(o.id);for(let o=0;null!=e&&o<7;o++)n.set(e,(n.get(e)||0)+1),e=t.get(e)}return n},"saveLayout",0,function(e){let t=String(e||"").trim().slice(0,40);if(!t)return;let n=f(),o=Object.fromEntries(d.map(e=>[e,n[e]]));b([...x().filter(e=>e.name!==t),{name:t,settings:o}])},"setClock",0,j,"setLab",0,g,"stopReplay",0,function(){k(),j({at:null})},"watchClock",0,function(e){return w.add(e),()=>w.delete(e)},"watchLab",0,function(e){p.add(e);let t=t=>{t.key===l&&(h=null,e())};return window.addEventListener("storage",t),()=>{p.delete(e),window.removeEventListener("storage",t)}},"watchLayouts",0,function(e){return y.add(e),()=>y.delete(e)}],39160)},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",n=await fetch(t);if(!n.ok)throw Error(`Failed to load network (${n.status})`);let o=await n.json();return{degree1:o.degree1||[],degree2:o.degree2||[],degree3:o.degree3||[],ties:Number(o.ties)||0}}e.s(["loadNetwork",0,t])},36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";e.s(["localPhoto",0,function(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}])},7214,e=>{"use strict";var t=e.i(36774);let n={S:0,A:1,B:2,C:3,D:4};function o(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function r(e){return Math.round(10*o(e))/10}function s(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let i=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function l(e,t){return(n[e.tier]??9)-(n[t.tier]??9)||o(t)-o(e)||String(e.name||"").localeCompare(String(t.name||""))||i(e.id,t.id)}function a(e,t){return e.bridge&&t.bridge?l(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:i(e.id,t.id)}function c(e,t){return t.score-e.score||t.waysIn-e.waysIn||a(e.routes[0]||d,t.routes[0]||d)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let d={id:null,bridge:null};function u(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function p(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,l,"compareWaysIn",0,function(e,t){return t.waysIn-e.waysIn||c(e,t)},"keyFor",0,s,"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=s(n),o=t.get(e);o||(o=new Set,t.set(e,o)),o.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(s(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(a):[]},"score",0,o,"score1",0,r,"separationPeople",0,function(e=[],n=[]){let o=new Map;for(let e of n||[])o.set(e.id,e);let l=new Map,d=new Map;for(let n of e||[]){let e=s(n);d.set(n.id,e);let o=l.get(e);o?function(e,n){let o=r(e)-r(n);if(o)return o>0;let s=!!(0,t.localPhoto)(e.profile_image_url);return!!(0,t.localPhoto)(n.profile_image_url)!==s?s:0>i(e.id,n.id)}(n,o.person)&&(o.person=n):(o={key:e,person:n,rowIds:[],routeIds:new Set},l.set(e,o)),o.rowIds.push(n.id),o.routeIds.add(n.source_connection_id??null)}let u={people:l.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},p=new Set,h=new Set,f=new Set,g=[];for(let e of l.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:o.get(e)??null}));t.sort(a);let n=t.filter(e=>e.bridge);for(let e of t)(e.bridge?p:h).add(e.id);if(!n.length)for(let e of(u.peopleOnlyUnresolved++,t))f.add(e.id);let{person:s}=e,i=s.tier;void 0!==u.byTier[i]&&u.byTier[i]++,t.length>1&&u.multi++,g.push({key:e.key,person:s,score:r(s),tier:i,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[s.name,s.headline,s.company,s.role,...n.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return u.bridges=p.size,u.unresolvedIds=h.size,u.onlyUnresolvedVia=f.size,g.sort(c),function(e){for(let t=0;t<e.length;t++){let n=e[t],o=e[t-1],r=o&&o.score===n.score&&o.waysIn===n.waysIn;n.rank=r?o.rank:t+1,r&&(n.tied=!0,o.tied=!0)}}(g),{people:g,rowToKey:d,summary:u}},"shortName",0,u,"summitLayout",0,function(e=[],t=800,n=!1){let o=n?36:26,r=Math.round(.42*t),s=Math.round(.58*t),i=e.map((e,n)=>{var r;return{key:e.key,p:e,x:s,y:16+n*o,r:(r=e.waysIn)>=4?8.5:3===r?7:2===r?5.5:4,label:p(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-s-60)/6.2))}}),a=new Map,c="\0unresolved";for(let e of i)for(let t of e.p.routes){let n=t.bridge?t.id:c,o=a.get(n);o||(o={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},a.set(n,o)),o.count++,o.ys.push(e.y)}let d=[...a.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));d.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?l(e.bridge,t.bridge):0));let h=i.length?i[i.length-1].y:16,f=d.length>1?Math.max(18,(h-16)/(d.length-1)):0,g=Math.max(4,Math.floor((r-10-42)/6));d.forEach((e,t)=>{if(e.x=r,e.y=1===d.length?(16+h)/2:16+t*f,e.r=5,e.unresolved)e.label=p(`can't be named (${e.count})`,g);else{let t=e.bridge.name||"";e.label=t.length<=g?t:p(u(t),g)}delete e.ys});let m=new Map(d.map(e=>[e.unresolved?c:e.id,e])),y=[];for(let e of i){let t=new Set;e.p.routes.forEach((n,o)=>{let r=n.bridge?n.id:c;if(t.has(r))return;t.add(r);let s=m.get(r);y.push({key:e.key,bridgeId:s.id,primary:0===o&&!s.unresolved,unresolved:s.unresolved,tier:s.bridge?.tier??null,x1:s.x,y1:s.y,x2:e.x,y2:e.y})})}let x=Math.max(h,d.length?d[d.length-1].y:0),b=i.length?Math.ceil(x+16):0,w={x:20,y:i.length?(16+Math.max(h,x))/2:16,r:14},v=d.map(e=>({id:e.id,x1:w.x,y1:w.y,x2:e.x,y2:e.y}));return{width:t,height:b,you:w,people:i,bridges:d,links:y,spokes:v}}])}]);
@@ -2,5 +2,5 @@
2
2
 
3
3
  Set ${n.daily} a day anyway?`:0===n.monthly&&0!==e.monthly?`With no monthly cap, only the daily budget stops a scan. A real account was restricted after 373 searches in 24 hours with no monthly cap set.
4
4
 
5
- Turn the monthly cap off anyway?`:null}(o,{...o,...e});(!n||window.confirm(n))&&a(e)},d=function({daily:e,monthly:n}={}){if(!(({daily:e,monthly:n}={})=>Number(e)>100||0===n)({daily:e,monthly:n}))return null;let t=["A real account was restricted after 373 searches in 24 hours."];return Number(e)>100&&t.push(`${e} a day can use up a free account's month in a day or two.`),0===n&&t.push("With no monthly cap, nothing but the daily budget stops a long run."),t.join(" ")}(o);return(0,n.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:h,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#b8c4c4"},children:[(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(210px, 1fr))",gap:14},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:s})," of ",o.daily||"no limit"," searches in the last 24 hours"]}),(0,n.jsx)(b,{used:e.searchesToday||0,cap:o.daily})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:e.searchesMonth})," of ",o.monthly||"no limit"," this month · resets ",y(e.monthResets)]}),(0,n.jsx)(b,{used:e.searchesMonth,cap:o.monthly})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:r})," of ",o.profiles," profile views today"]}),(0,n.jsx)(b,{used:e.unreadable?o.profiles:e.profilesToday,cap:o.profiles})]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",marginTop:10},children:[(0,n.jsx)("span",{children:"Budget:"}),(0,n.jsx)("select",{value:o.daily,disabled:i,onChange:e=>l({daily:Number(e.target.value)}),style:k,children:u.map(e=>(0,n.jsxs)("option",{value:e,children:[e," a day"]},e))}),(0,n.jsx)("select",{value:o.monthly,disabled:i,onChange:e=>l({monthly:Number(e.target.value)}),style:k,children:g.map(e=>(0,n.jsx)("option",{value:e,children:e?`${e} a month`:"no monthly cap (Premium)"},e))}),(0,n.jsx)("select",{value:o.profiles,disabled:i,onChange:e=>a({profiles:Number(e.target.value)}),style:k,children:f.map(e=>(0,n.jsxs)("option",{value:e,children:[e," profile views a day"]},e))})]}),(0,n.jsx)("div",{style:{marginTop:8,color:"#778",lineHeight:1.6},children:"Every page of someone’s connections is one search. LinkedIn limits a free account’s people searches by the month (it doesn’t say how many; reports put it around 250–350), resetting on the 1st. When a budget is used, a scan saves what it read and stops; the next one carries on from the same page."}),d&&(0,n.jsxs)("div",{style:{marginTop:8,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",color:"#FFD700",lineHeight:1.6},children:[(0,n.jsx)("b",{style:{flex:1,minWidth:200},children:d}),(0,n.jsxs)("button",{onClick:()=>a(c),disabled:i,style:{...k,cursor:i?"not-allowed":"pointer",color:"#FFD700",borderColor:"rgba(255,215,0,0.4)"},children:["Back to ",c.daily," a day, ",c.monthly," a month"]})]}),(0,n.jsx)("div",{style:{marginTop:6,color:"#778",lineHeight:1.6},children:"Each circle scan opens the person’s profile once, which is one profile view. Profile views are what LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and once today’s are used, a scan stops before the next profile and tries that person next time."})]})}function w({paused:e=[],onResume:i,onResumeAll:o,disabled:s}){let[r,a]=(0,t.useState)(!1);if(!e.length)return null;let l=e.filter(e=>e.legacy).length,d=r?e:e.slice(0,8);return(0,n.jsxs)("div",{style:{borderRadius:8,border:h,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:h,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{style:{fontSize:13.5},children:["Paused — ",e.length," ",1===e.length?"list":"lists"," with more to read"]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginTop:2},children:["Each carries on from the page it stopped at",l?`; ${l} were read to page 10 before whole lists were read`:"","."]})]}),(0,n.jsx)("button",{onClick:o,disabled:s,style:{...j,opacity:s?.4:1,cursor:s?"not-allowed":"pointer",background:s?"rgba(255,255,255,0.06)":"linear-gradient(135deg, #3498DB, #9B59B6)"},children:"Resume all"})]}),(0,n.jsx)("div",{children:d.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:p[e.tier]||"#667",flexShrink:0}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a"},children:["Read to page ",e.pagesRead," · carries on at ",e.nextPage,e.at?` \xb7 ${y(e.at)}`:"",e.unclear>=2?" · came back unclear twice, so it waits at the back of Resume all":""]})]}),(0,n.jsx)("button",{onClick:()=>i(e),disabled:s,style:{...j,padding:"6px 12px",fontSize:12,opacity:s?.4:1,cursor:s?"not-allowed":"pointer"},children:"Resume"})]},e.id))}),e.length>8&&(0,n.jsx)("button",{onClick:()=>a(!r),style:{...v,padding:"10px 14px"},children:r?"Show fewer":`Show all ${e.length}`})]})}let j={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:h,background:"rgba(255,255,255,0.08)",color:"#fff"},v={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},k={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:h};var S=e.i(8819),T=e.i(98197);e.i(77170);var I=e.i(69083),C=e.i(56899);let B={color:"#3498DB"};function z({onDone:e}){let[i,o]=(0,t.useState)([]),[s,r]=(0,t.useState)(null),[a,l]=(0,t.useState)(null);async function d(){r("pick"),l(null);let n=await (0,C.saveSettings)({sectorFocus:{sectors:i,strength:"lean"},fieldAsked:!0});n.settings?e(n.settings.sectorFocus.sectors):(l(n.error),r(null))}async function c(){r("skip"),l(null),await (0,C.saveSettings)({fieldAsked:!0}),e([])}return(0,n.jsxs)("section",{"aria-labelledby":"field-question","data-field-question":!0,style:{margin:"8px 0 0",padding:"20px 22px 0",borderRadius:12,border:S.LINE,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:"Before you scan · optional"}),(0,n.jsx)("h2",{id:"field-question",style:{fontSize:18,fontWeight:700,margin:"6px 0 4px"},children:"What field are you in?"}),(0,n.jsx)(S.Body,{style:{marginTop:0,marginBottom:14},children:"Pick up to three. Companies in your field count for more when your network is scored, so the people there rank higher. You can change it anytime on the Scores tab."}),(0,n.jsx)(T.default,{sectors:i,onChange:o,disabled:!!s}),(0,n.jsxs)("div",{style:{position:"sticky",bottom:0,margin:"16px -22px 0",padding:"12px 22px 16px",borderTop:S.LINE,borderRadius:"0 0 11px 11px",background:"#111121"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)(S.Btn,{primary:!0,onClick:d,disabled:!i.length||!!s,children:"pick"===s?"Saving…":"Continue"}),(0,n.jsx)(S.Btn,{onClick:c,disabled:!!s,children:"Skip for now"})]}),a&&(0,n.jsx)(S.Status,{tone:"bad",children:a})]})]})}function F({sectors:e}){return e.length?(0,n.jsxs)(S.Status,{tone:"ok",children:["Your field: ",e.map(e=>(0,I.sectorByKey)(e).label).join(" · "),". Your first scan is scored with it. Change it anytime on ",(0,n.jsx)(s.default,{href:"/scores#sector",style:B,children:"Scores"}),"."]}):(0,n.jsxs)(S.Status,{children:["No field for now. You can pick one anytime on ",(0,n.jsx)(s.default,{href:"/scores#sector",style:B,children:"Scores"}),"."]})}let R="1px solid rgba(255,255,255,0.1)",W={photos:"Saving profile photos to this computer",install:"Installing the scanner",setup:"Setting up the scanner",login:"Waiting for you to sign in",full:"Scanning your whole network",refresh:"Checking for new connections","auto-bridge":"Mapping 2nd-degree connections","auto-bridge-retry":"Mapping 2nd degree, hidden ones included",resume:"Carrying on with one paused list","resume-all":"Carrying on with every paused list"};function D(){let e;(0,t.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&window.location.replace("/settings?check=updates")},[]);let[o,c]=(0,t.useState)(null),[h,p]=(0,t.useState)(!1),[u,g]=(0,t.useState)(10),[f,y]=(0,t.useState)(["S","A"]),[b,j]=$("six-degrees-bridge-order","newest"),[v,k]=$("six-degrees-bridge-pages-v2",100),[S,T]=$("six-degrees-bridge-finish",!0),[I,C]=$("six-degrees-experimental-auto",!1),[B,D]=$("six-degrees-hide-chrome",!1),[P,U]=(0,t.useState)(null),G=(0,t.useRef)(null),[Y,K]=(0,t.useState)(void 0),[q,X]=(0,t.useState)(null),J=(0,i.useSearchParams)().get("scan"),[V,Q]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(!J)return;let e=!0;return(0,r.pickedPerson)(J).then(n=>{e&&Q(n?.person?n:null)},()=>{}),()=>{e=!1}},[J]);let Z=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/scraper");c(await e.json())}catch{c(e=>e||{ready:!1,checks:{},log:[]})}},[]);async function ee(){U(null),await (0,r.stopScrape)().catch(e=>U(e.message)),Z()}async function en(e,n={}){U(null),p(!0);try{let t=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,...n})}),i=await t.json();t.ok||U(i.error||"Could not start.")}catch(e){U(e.message)}finally{p(!1),Z()}}(0,t.useEffect)(()=>{Z();let e=setInterval(Z,1500);return()=>clearInterval(e)},[Z]),(0,t.useEffect)(()=>{if(l.IS_DEMO)return;let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(n=>{e||K(n?.settings||null)}).catch(()=>{e||K(null)}),()=>{e=!0}},[]),(0,t.useEffect)(()=>{G.current&&(G.current.scrollTop=G.current.scrollHeight)},[o?.log?.length]);let et=o?.checks||{},ei=o?.running,eo={...e=function(e){let n=e?.checks||{},t=(n,t,i)=>e?.running&&e.action===n?i:t;if(n.dependencies)return"bundled"===n.pythonSource?{done:!0,text:"Ready. The scanner and its Python come with the app, so there is nothing to install.",button:null}:"custom"===n.pythonSource?{done:!0,text:`Ready, on the Python named in SIX_DEGREES_PYTHON (${n.pythonPath}).`,button:null}:{done:!0,text:"Installed.",button:null};let i=n.ownPython&&"bundled"!==n.ownPython.source?`The Python named in SIX_DEGREES_PYTHON didn't work (${n.ownPython.problem}), so the scanner needs setting up another way. `:"";if(n.installFrom)return{done:!1,text:i+("downloaded"===n.installFrom.source?"Its own Python is already here. One more step, about a minute: it installs the browser-automation packages into it.":"One-time, about a minute. Downloads the browser-automation packages."),button:{action:"install",label:t("install","Install","Installing…")}};if(n.download){let e=Math.round(n.download.size/1048576);return{done:!1,text:`${i}${function(e){if(!e?.version)return"This computer has no Python the scanner can use.";let[n,t]=String(e.version).split(".").map(Number);return 3===n&&t>=10&&t<=14&&!1===e.venv?`This computer's Python ${e.version} can't make the scanner's own environment (on Ubuntu or Debian, python3-venv isn't installed).`:`This computer has Python ${e.version}, and the scanner needs 3.10 to 3.14.`}(n.systemPython)} Set up the scanner downloads its own Python ${n.download.version} (${e} MB, from GitHub) and the scanner's packages (from PyPI) into your data folder. Nothing else on this computer changes. About two minutes.`,button:{action:"setup",label:t("setup","Set up the scanner","Setting up…")}}}return{done:!1,text:`${i}No Python 3.10 to 3.14 was found on this machine. Install one from python.org, then reload.`,button:null}}(o),note:function(e,{done:n,button:t}){if(e?.source!=="bundled")return null;let i=/SIGKILL|code signature|not valid for use in process|quarantine|not permitted/i.test(e.problem||""),o=[`The Python that comes with the app didn't work (${e.problem}).`];return i&&o.push("macOS may have blocked it."),!1===e.retry&&o.push("Six Degrees won't try it again until you restart it."),n?o.push("The scanner uses another Python on this computer instead."):t?o.push(`To scan now, use ${a[t.action]} below: it gives the scanner a Python of its own in your data folder.`):o.push("To scan now, install Python 3.10 to 3.14 from python.org, then reload."),o.join(" ")}(o?.checks?.ownPython,e)};o&&et.dependencies;let es=o&&!et.chrome,er=o&&!et.scriptsFound,ea=o?.ready&&!ei,el=o?.linkedin,ed=!!el?.cooldown,ec=ea&&!ed,eh=o?.network||{first:0,second:0,third:0},ep=eh.first,eu=!l.IS_DEMO&&!q&&function(e,n){if(!e)return null;let t=e.network;return!!t&&!t.first&&!t.second&&!t.third&&!e.running&&(void 0===n?null:!!(n&&!n.fieldAsked&&!n.sectorFocus?.sectors?.length))}(o,Y),eg=o&&!ei&&null!=o.exitCode&&0!==o.exitCode,ef=eg?o.failure?.length?o.failure.join("\n"):[...o.log||[]].reverse().find(e=>!/^Stopped \(exit/.test(e)&&!/Warning|warnings\.warn/.test(e)):null;return(0,n.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,n.jsxs)("header",{style:{padding:"16px 24px",borderBottom:R,display:"flex",alignItems:"center",gap:16},children:[(0,n.jsx)(s.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:R},children:"← Back to Map"}),(0,n.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Scan your network"})]}),(0,n.jsxs)("div",{style:{maxWidth:720,margin:"0 auto",padding:"32px 24px 64px"},children:[(0,n.jsxs)("p",{style:{color:"#9aa",fontSize:15,lineHeight:1.6,marginTop:0},children:["This reads your own LinkedIn connections in a real Chrome window on this machine and saves them here. Nothing leaves your computer, and you will never be asked for your password — you sign in yourself, once.",!ep&&(eu?" One optional question, then three steps and your galaxy appears.":" Three steps and your galaxy appears; each one ticks itself off.")]}),null===eu&&(0,n.jsx)("p",{style:{color:"#778",fontSize:13},children:"Checking your setup…"}),eu&&(0,n.jsx)(z,{onDone:function(e){X({sectors:e}),window.scrollTo(0,0)}}),q&&(0,n.jsx)(F,{sectors:q.sectors}),!1===eu&&(0,n.jsxs)(n.Fragment,{children:[V?.person.id===J&&(0,n.jsx)(L,{pick:V,pages:v,setPages:k,li:el,running:ei,s:o,canSearch:ec,busy:h,onUnpick:function(){Q(null);try{window.history.replaceState(null,"",window.location.pathname)}catch{}},onStart:()=>en("bridge",{id:V.person.id,maxPages:v})}),ep>0&&!ei&&(0,n.jsx)(H,{children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{children:[ep.toLocaleString()," connections"]}),eh.second>0&&(0,n.jsxs)(n.Fragment,{children:[", plus ",eh.second.toLocaleString()," people in their circles"]}),eh.third>0&&(0,n.jsxs)(n.Fragment,{children:[" and ",eh.third.toLocaleString()," from company scans"]}),"."," ",(0,n.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,n.jsx)(s.default,{href:"/",style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:700,color:"#0a0a1a",textDecoration:"none",background:"linear-gradient(135deg, #FFD700, #FF6B35)"},children:"See your network →"})]})}),o?.photosWaiting>0&&!ei&&(0,n.jsx)(H,{children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{children:[o.photosWaiting.toLocaleString()," ",1===o.photosWaiting?"photo isn’t":"photos aren’t"," saved on this computer yet."]})," ",(0,n.jsx)("span",{style:{color:"#9aa"},children:"An older version kept them as links to LinkedIn. The app doesn’t load photos from LinkedIn while you browse, so those people show initials until the photos are saved here: now, or at the end of your next scan. An expired link can’t be saved; that person’s photo comes back when they’re next scanned."}),o&&!et.dependencies&&(0,n.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:6},children:"Set up the scanner first (step 1 below): it saves them."})]}),(0,n.jsx)(M,{onClick:()=>en("photos"),disabled:h||!et.dependencies,children:"Save photos"})]})}),eg&&(0,n.jsxs)(H,{tone:"bad",children:[(0,n.jsx)("b",{children:"The last run stopped before it finished."}),ef&&(0,n.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:ef}),(0,n.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),er&&(0,n.jsxs)(H,{tone:"bad",children:[(0,n.jsx)("b",{children:"Can’t find the scanner files."}),(0,n.jsx)("br",{}),(0,n.jsxs)("span",{style:{color:"#9aa"},children:["Expected ",(0,n.jsx)("code",{style:E,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),es&&(0,n.jsxs)(H,{tone:"bad",children:[(0,n.jsx)("b",{children:"Google Chrome isn’t installed."}),(0,n.jsx)("br",{}),(0,n.jsxs)("span",{style:{color:"#9aa"},children:["The scanner drives your real Chrome. Install it from"," ",(0,n.jsx)("a",{href:"https://www.google.com/chrome/",target:"_blank",rel:"noreferrer",style:{color:"#3498DB"},children:"google.com/chrome"}),", then reload this page."]})]}),o&&eo.note&&(0,n.jsx)(H,{tone:eo.done?void 0:"bad",children:eo.note}),(0,n.jsx)(A,{n:1,done:eo.done,title:"Set up the scanner",body:o?eo.text:"",action:o&&eo.button&&(0,n.jsx)(M,{onClick:()=>en(eo.button.action),disabled:h||ei,children:eo.button.label})}),(0,n.jsx)(A,{n:2,done:!!et.signedIn,title:"Sign into LinkedIn",body:et.signedIn?"Signed in on this machine. If LinkedIn ever asks for a security check, or a scan says you were signed out, open LinkedIn here and finish it by hand.":"Opens a Chrome window. Sign in with your email and password — “Continue with Google” cannot work here, because Google blocks its sign-in inside automated browsers.",action:et.dependencies&&(0,n.jsx)(M,{onClick:()=>en("login"),disabled:h||ei,children:ei&&"login"===o.action?"Waiting for you…":"Open LinkedIn"})}),(0,n.jsx)(A,{n:3,done:ep>0,title:"1st degree — the people you know",body:"The first scan walks your whole connections list, about a minute and a half for 750 people. After that, Check for new only looks at what has been added since.",action:(0,n.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)(M,{onClick:()=>en("full"),disabled:!ec,primary:!0,children:ei&&"full"===o.action?"Scanning…":"Scan my whole network"}),(0,n.jsx)(M,{onClick:()=>en("refresh"),disabled:!ec,children:ei&&"refresh"===o.action?"Checking…":"Check for new"})]})}),(0,n.jsx)(A,{n:4,done:!1,title:"2nd degree — the people they know",body:(0,n.jsxs)(n.Fragment,{children:["This is what fills ",(0,n.jsx)("b",{children:"Degrees"})," and ",(0,n.jsx)("b",{children:"Outlink"}),": it opens each of your connections in turn and reads who ",(0,n.jsx)("i",{children:"they"})," know. Most people hide their connections — those are noted and never tried again.",(0,n.jsx)("br",{}),(0,n.jsx)("br",{}),"It is slow on purpose, about two minutes between each person, because this is the part LinkedIn notices. During development a real account was temporarily restricted after roughly ",(0,n.jsx)("b",{children:"19 people in one sitting"}),". Run a batch, leave it for a day, run another — and stop the moment LinkedIn mentions unusual activity. It always picks up where it left off: anyone still without a mapped circle, in the order you choose below — your newest connections first, or highest tier first. Each person’s list is read to the end, saving every 10 pages, and a read that is stopped carries on from the same page next time."]}),action:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsx)(x,{cooldown:el?.cooldown,disabled:h,onLift:()=>en("lift-cooldown")}),(0,n.jsx)(m,{li:el,disabled:h,onSetLimits:e=>en("set-limits",e)}),"score"===b&&(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Work through"}),["S","A","B","C","D"].map(e=>{let t=f.includes(e);return(0,n.jsx)("button",{onClick:()=>y(n=>n.includes(e)?n.filter(n=>n!==e):[...n,e]),disabled:ei,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:ei?"not-allowed":"pointer",border:R,background:t?"rgba(52,152,219,0.22)":"rgba(255,255,255,0.05)",color:t?"#cfe6f7":"#667"},children:e},e)}),(0,n.jsx)("span",{style:{fontSize:11.5,color:"#667"},children:f.length?"":"pick at least one"})]}),"newest"===b&&(0,n.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",lineHeight:1.6},children:["Goes by the date you connected, newest first, across every tier. Run"," ",(0,n.jsx)("b",{children:"Check for new"})," first so your latest connections are in the list."]}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Start with"}),(0,n.jsxs)("select",{value:b,onChange:e=>j(e.target.value),disabled:ei,style:N,children:[(0,n.jsx)("option",{value:"newest",children:"Newest connections first"}),(0,n.jsx)("option",{value:"score",children:"Highest tier first"})]}),(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Read up to"}),(0,n.jsxs)("select",{value:v,onChange:e=>k(Number(e.target.value)),disabled:ei,style:N,children:[(0,n.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,n.jsx)("option",{value:50,children:"50 pages each"}),(0,n.jsx)("option",{value:25,children:"25 pages each"}),(0,n.jsx)("option",{value:10,children:"10 pages (~100 people) each"})]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:12.5,color:"#cfd8d8",cursor:ei?"not-allowed":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:S,onChange:e=>T(e.target.checked),disabled:ei}),"Also finish people already mapped, from the page each one stopped at"]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ei?"default":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:I,disabled:ei,style:{marginTop:3},onChange:e=>{C(e.target.checked),window.dispatchEvent(new Event("six-degrees:experimental"))}}),(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{style:{color:"#FFD700"},children:"Experimental:"})," all-day pacing. Up to 10 pages in a sitting, then a 45-minute rest; searches only from 9:00 to 19:00; at the daily budget it waits for it to free up instead of stopping; and it saves every page. It also reads LinkedIn’s own data beside the page text, to fill gaps and measure how the two compare. It keeps running while the app is open."]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ei?"default":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:B,disabled:ei,style:{marginTop:3},onChange:e=>D(e.target.checked)}),(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{style:{color:"#FFD700"},children:"Hide the Chrome window while scanning."})," Every scan runs with no window popping up; the status bar still shows what it’s doing, and Stop still works. Signing in always opens the window.",(0,n.jsx)("span",{style:{display:"block",marginTop:4,color:"#e0a080"},children:"The risks: a hidden Chrome is easier for LinkedIn to tell apart from a person, so it may make a warning or restriction more likely. If LinkedIn asks you to check it’s you (a code, a puzzle, signing in again) you won’t see it, and the scan will stop instead of waiting for you. Untick this and scan again to see what LinkedIn wants. It changes nothing about pacing or your daily budget."})]})]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"#FFD700",lineHeight:1.6},children:["Every page is a LinkedIn search, so it rests 20 seconds before each one and a minute after every 10, and a long list can take"," ","about ",(0,d.circleScanCost)(v).minutes," minutes a person. LinkedIn shows 100 pages of anyone’s connections at most. Free accounts have a monthly search limit: if LinkedIn says it has been reached, the scan saves what it read and stops, and carries on from that page next time. Keep batches small."]}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,n.jsx)(M,{onClick:()=>en("auto-bridge",{maxBridges:u,tiers:"score"===b?f:[],order:b,maxPages:v,deeper:S,experimental:I}),disabled:!ec||"score"===b&&!f.length,primary:!0,children:ei&&"auto-bridge"===o.action?"Mapping…":"Map 2nd degree"}),(0,n.jsxs)("select",{value:u,onChange:e=>g(Number(e.target.value)),disabled:ei,style:N,children:[(0,n.jsx)("option",{value:5,children:"5 people"}),(0,n.jsx)("option",{value:10,children:"10 people"}),(0,n.jsx)("option",{value:25,children:"25 people"}),(0,n.jsx)("option",{value:0,children:"everyone — not advised"})]}),(0,n.jsx)(M,{onClick:()=>en("auto-bridge-retry",{maxBridges:u,tiers:"score"===b?f:[],order:b,maxPages:v,deeper:S}),disabled:!ec||"score"===b&&!f.length,children:"Retry hidden ones"})]}),(0,n.jsx)(w,{paused:o?.paused||[],disabled:!ec,onResume:e=>en("resume",{id:e.id}),onResumeAll:()=>en("resume-all",{maxBridges:u})})]})}),ei&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:20,padding:"14px 16px",borderRadius:8,background:"rgba(255,255,255,0.05)",border:R},children:[(0,n.jsx)(_,{}),(0,n.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,n.jsx)("b",{children:W[o.action]||"Working"}),o.progress&&(0,n.jsx)(O,{p:o.progress,action:o.action}),(0,n.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:2},children:"Stopping closes the browser cleanly and keeps everything found so far."})]}),(0,n.jsx)(M,{onClick:ee,tone:"bad",children:"Stop"})]}),P&&(0,n.jsx)(H,{tone:"bad",children:P}),o?.log?.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,margin:"28px 0 8px",fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:[ei&&(0,n.jsx)(_,{}),ei?"Working":"Last run"]}),(0,n.jsx)("pre",{ref:G,style:{background:"rgba(0,0,0,0.45)",border:R,borderRadius:8,padding:14,maxHeight:280,overflow:"auto",margin:0,fontSize:12.5,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:o.log.join("\n")})]})]}),(0,n.jsxs)("div",{style:{marginTop:32,paddingTop:20,borderTop:R,fontSize:13.5,color:"#8b9a9a"},children:["Checking for updates has moved to"," ",(0,n.jsx)(s.default,{href:"/settings#updates",style:{color:"#3498DB"},children:"Settings →"})]}),(0,n.jsxs)("p",{style:{color:"#667",fontSize:12.5,lineHeight:1.7,marginTop:32},children:["Automating LinkedIn may go against its User Agreement, and accounts have been restricted for it. This runs locally against your own account, at your own risk. LinkedIn’s own CSV export is the supported route and needs none of this —"," ",(0,n.jsx)(s.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,n.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
5
+ Turn the monthly cap off anyway?`:null}(o,{...o,...e});(!n||window.confirm(n))&&a(e)},d=function({daily:e,monthly:n}={}){if(!(({daily:e,monthly:n}={})=>Number(e)>100||0===n)({daily:e,monthly:n}))return null;let t=["A real account was restricted after 373 searches in 24 hours."];return Number(e)>100&&t.push(`${e} a day can use up a free account's month in a day or two.`),0===n&&t.push("With no monthly cap, nothing but the daily budget stops a long run."),t.join(" ")}(o);return(0,n.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:h,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#b8c4c4"},children:[(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(210px, 1fr))",gap:14},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:s})," of ",o.daily||"no limit"," searches in the last 24 hours"]}),(0,n.jsx)(b,{used:e.searchesToday||0,cap:o.daily})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:e.searchesMonth})," of ",o.monthly||"no limit"," this month · resets ",y(e.monthResets)]}),(0,n.jsx)(b,{used:e.searchesMonth,cap:o.monthly})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:r})," of ",o.profiles," profile views today"]}),(0,n.jsx)(b,{used:e.unreadable?o.profiles:e.profilesToday,cap:o.profiles})]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",marginTop:10},children:[(0,n.jsx)("span",{children:"Budget:"}),(0,n.jsx)("select",{value:o.daily,disabled:i,onChange:e=>l({daily:Number(e.target.value)}),style:k,children:u.map(e=>(0,n.jsxs)("option",{value:e,children:[e," a day"]},e))}),(0,n.jsx)("select",{value:o.monthly,disabled:i,onChange:e=>l({monthly:Number(e.target.value)}),style:k,children:g.map(e=>(0,n.jsx)("option",{value:e,children:e?`${e} a month`:"no monthly cap (Premium)"},e))}),(0,n.jsx)("select",{value:o.profiles,disabled:i,onChange:e=>a({profiles:Number(e.target.value)}),style:k,children:f.map(e=>(0,n.jsxs)("option",{value:e,children:[e," profile views a day"]},e))})]}),(0,n.jsx)("div",{style:{marginTop:8,color:"#778",lineHeight:1.6},children:"Every page of someone’s connections is one search. LinkedIn limits a free account’s people searches by the month (it doesn’t say how many; reports put it around 250–350), resetting on the 1st. When a budget is used, a scan saves what it read and stops; the next one carries on from the same page."}),d&&(0,n.jsxs)("div",{style:{marginTop:8,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",color:"#FFD700",lineHeight:1.6},children:[(0,n.jsx)("b",{style:{flex:1,minWidth:200},children:d}),(0,n.jsxs)("button",{onClick:()=>a(c),disabled:i,style:{...k,cursor:i?"not-allowed":"pointer",color:"#FFD700",borderColor:"rgba(255,215,0,0.4)"},children:["Back to ",c.daily," a day, ",c.monthly," a month"]})]}),(0,n.jsx)("div",{style:{marginTop:6,color:"#778",lineHeight:1.6},children:"Each circle scan opens the person’s profile once, which is one profile view. Profile views are what LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and once today’s are used, a scan stops before the next profile and tries that person next time."})]})}function w({paused:e=[],onResume:i,onResumeAll:o,disabled:s}){let[r,a]=(0,t.useState)(!1);if(!e.length)return null;let l=e.filter(e=>e.legacy).length,d=r?e:e.slice(0,8);return(0,n.jsxs)("div",{style:{borderRadius:8,border:h,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:h,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{style:{fontSize:13.5},children:["Paused — ",e.length," ",1===e.length?"list":"lists"," with more to read"]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginTop:2},children:["Each carries on from the page it stopped at",l?`; ${l} were read to page 10 before whole lists were read`:"","."]})]}),(0,n.jsx)("button",{onClick:o,disabled:s,style:{...j,opacity:s?.4:1,cursor:s?"not-allowed":"pointer",background:s?"rgba(255,255,255,0.06)":"linear-gradient(135deg, #3498DB, #9B59B6)"},children:"Resume all"})]}),(0,n.jsx)("div",{children:d.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:p[e.tier]||"#667",flexShrink:0}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a"},children:["Read to page ",e.pagesRead," · carries on at ",e.nextPage,e.at?` \xb7 ${y(e.at)}`:"",e.unclear>=2?" · came back unclear twice, so it waits at the back of Resume all":""]})]}),(0,n.jsx)("button",{onClick:()=>i(e),disabled:s,style:{...j,padding:"6px 12px",fontSize:12,opacity:s?.4:1,cursor:s?"not-allowed":"pointer"},children:"Resume"})]},e.id))}),e.length>8&&(0,n.jsx)("button",{onClick:()=>a(!r),style:{...v,padding:"10px 14px"},children:r?"Show fewer":`Show all ${e.length}`})]})}let j={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:h,background:"rgba(255,255,255,0.08)",color:"#fff"},v={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},k={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:h};var S=e.i(8819),I=e.i(98197);e.i(77170);var T=e.i(69083),C=e.i(56899);let B={color:"#3498DB"};function z({onDone:e}){let[i,o]=(0,t.useState)([]),[s,r]=(0,t.useState)(null),[a,l]=(0,t.useState)(null);async function d(){r("pick"),l(null);let n=await (0,C.saveSettings)({sectorFocus:{sectors:i,strength:"lean"},fieldAsked:!0});n.settings?e(n.settings.sectorFocus.sectors):(l(n.error),r(null))}async function c(){r("skip"),l(null),await (0,C.saveSettings)({fieldAsked:!0}),e([])}return(0,n.jsxs)("section",{"aria-labelledby":"field-question","data-field-question":!0,style:{margin:"8px 0 0",padding:"20px 22px 0",borderRadius:12,border:S.LINE,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:"Before you scan · optional"}),(0,n.jsx)("h2",{id:"field-question",style:{fontSize:18,fontWeight:700,margin:"6px 0 4px"},children:"What field are you in?"}),(0,n.jsx)(S.Body,{style:{marginTop:0,marginBottom:14},children:"Pick up to three. Companies in your field count for more when your network is scored, so the people there rank higher. You can change it anytime on the Scores tab."}),(0,n.jsx)(I.default,{sectors:i,onChange:o,disabled:!!s}),(0,n.jsxs)("div",{style:{position:"sticky",bottom:0,margin:"16px -22px 0",padding:"12px 22px 16px",borderTop:S.LINE,borderRadius:"0 0 11px 11px",background:"#111121"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)(S.Btn,{primary:!0,onClick:d,disabled:!i.length||!!s,children:"pick"===s?"Saving…":"Continue"}),(0,n.jsx)(S.Btn,{onClick:c,disabled:!!s,children:"Skip for now"})]}),a&&(0,n.jsx)(S.Status,{tone:"bad",children:a})]})]})}function F({sectors:e}){return e.length?(0,n.jsxs)(S.Status,{tone:"ok",children:["Your field: ",e.map(e=>(0,T.sectorByKey)(e).label).join(" · "),". Your first scan is scored with it. Change it anytime on ",(0,n.jsx)(s.default,{href:"/scores#sector",style:B,children:"Scores"}),"."]}):(0,n.jsxs)(S.Status,{children:["No field for now. You can pick one anytime on ",(0,n.jsx)(s.default,{href:"/scores#sector",style:B,children:"Scores"}),"."]})}let R="1px solid rgba(255,255,255,0.1)",W={photos:"Saving profile photos to this computer",install:"Installing the scanner",setup:"Setting up the scanner",login:"Waiting for you to sign in",full:"Scanning your whole network",refresh:"Checking for new connections","auto-bridge":"Mapping 2nd-degree connections","auto-bridge-retry":"Mapping 2nd degree, hidden ones included",resume:"Carrying on with one paused list","resume-all":"Carrying on with every paused list"};function D(){let e;(0,t.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&window.location.replace("/settings?check=updates")},[]);let[o,c]=(0,t.useState)(null),[h,p]=(0,t.useState)(!1),[u,g]=(0,t.useState)(10),[f,y]=(0,t.useState)(["S","A"]),[b,j]=$("six-degrees-bridge-order","newest"),[v,k]=$("six-degrees-bridge-pages-v2",100),[S,I]=$("six-degrees-bridge-finish",!0),[T,C]=$("six-degrees-experimental-auto",!1),[B,D]=$("six-degrees-hide-chrome",!1),[P,U]=(0,t.useState)(null),G=(0,t.useRef)(null),[Y,K]=(0,t.useState)(void 0),[q,X]=(0,t.useState)(null),J=(0,i.useSearchParams)().get("scan"),[V,Q]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(!J)return;let e=!0;return(0,r.pickedPerson)(J).then(n=>{e&&Q(n?.person?n:null)},()=>{}),()=>{e=!1}},[J]);let Z=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/scraper");c(await e.json())}catch{c(e=>e||{ready:!1,checks:{},log:[]})}},[]);async function ee(){U(null),await (0,r.stopScrape)().catch(e=>U(e.message)),Z()}async function en(e,n={}){U(null),p(!0);try{let t=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,...n})}),i=await t.json();t.ok||U(i.error||"Could not start.")}catch(e){U(e.message)}finally{p(!1),Z()}}(0,t.useEffect)(()=>{Z();let e=setInterval(Z,1500);return()=>clearInterval(e)},[Z]),(0,t.useEffect)(()=>{if(l.IS_DEMO)return;let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(n=>{e||K(n?.settings||null)}).catch(()=>{e||K(null)}),()=>{e=!0}},[]),(0,t.useEffect)(()=>{G.current&&(G.current.scrollTop=G.current.scrollHeight)},[o?.log?.length]);let et=o?.checks||{},ei=o?.running,eo={...e=function(e){let n=e?.checks||{},t=(n,t,i)=>e?.running&&e.action===n?i:t;if(n.dependencies)return"bundled"===n.pythonSource?{done:!0,text:"Ready. The scanner and its Python come with the app, so there is nothing to install.",button:null}:"custom"===n.pythonSource?{done:!0,text:`Ready, on the Python named in SIX_DEGREES_PYTHON (${n.pythonPath}).`,button:null}:{done:!0,text:"Installed.",button:null};let i=n.ownPython&&"bundled"!==n.ownPython.source?`The Python named in SIX_DEGREES_PYTHON didn't work (${n.ownPython.problem}), so the scanner needs setting up another way. `:"";if(n.installFrom)return{done:!1,text:i+("downloaded"===n.installFrom.source?"Its own Python is already here. One more step, about a minute: it installs the browser-automation packages into it.":"One-time, about a minute. Downloads the browser-automation packages."),button:{action:"install",label:t("install","Install","Installing…")}};if(n.download){let e=Math.round(n.download.size/1048576);return{done:!1,text:`${i}${function(e){if(!e?.version)return"This computer has no Python the scanner can use.";let[n,t]=String(e.version).split(".").map(Number);return 3===n&&t>=10&&t<=14&&!1===e.venv?`This computer's Python ${e.version} can't make the scanner's own environment (on Ubuntu or Debian, python3-venv isn't installed).`:`This computer has Python ${e.version}, and the scanner needs 3.10 to 3.14.`}(n.systemPython)} Set up the scanner downloads its own Python ${n.download.version} (${e} MB, from GitHub) and the scanner's packages (from PyPI) into your data folder. Nothing else on this computer changes. About two minutes.`,button:{action:"setup",label:t("setup","Set up the scanner","Setting up…")}}}return{done:!1,text:`${i}No Python 3.10 to 3.14 was found on this machine. Install one from python.org, then reload.`,button:null}}(o),note:function(e,{done:n,button:t}){if(e?.source!=="bundled")return null;let i=/SIGKILL|code signature|not valid for use in process|quarantine|not permitted/i.test(e.problem||""),o=[`The Python that comes with the app didn't work (${e.problem}).`];return i&&o.push("macOS may have blocked it."),!1===e.retry&&o.push("Six Degrees won't try it again until you restart it."),n?o.push("The scanner uses another Python on this computer instead."):t?o.push(`To scan now, use ${a[t.action]} below: it gives the scanner a Python of its own in your data folder.`):o.push("To scan now, install Python 3.10 to 3.14 from python.org, then reload."),o.join(" ")}(o?.checks?.ownPython,e)};o&&et.dependencies;let es=o&&!et.chrome,er=o&&!et.scriptsFound,ea=o?.ready&&!ei,el=o?.linkedin,ed=!!el?.cooldown,ec=ea&&!ed,eh=o?.network||{first:0,second:0,third:0},ep=eh.first,eu=!l.IS_DEMO&&!q&&function(e,n){if(!e)return null;let t=e.network;return!!t&&!t.first&&!t.second&&!t.third&&!e.running&&(void 0===n?null:!!(n&&!n.fieldAsked&&!n.sectorFocus?.sectors?.length))}(o,Y),eg=o&&!ei&&null!=o.exitCode&&0!==o.exitCode,ef=eg?o.failure?.length?o.failure.join("\n"):[...o.log||[]].reverse().find(e=>!/^Stopped \(exit/.test(e)&&!/Warning|warnings\.warn/.test(e)):null;return(0,n.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,n.jsxs)("header",{style:{padding:"16px 24px",borderBottom:R,display:"flex",alignItems:"center",gap:16},children:[(0,n.jsx)(s.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:R},children:"← Back to Map"}),(0,n.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Scan your network"})]}),(0,n.jsxs)("div",{style:{maxWidth:720,margin:"0 auto",padding:"32px 24px 64px"},children:[(0,n.jsxs)("p",{style:{color:"#9aa",fontSize:15,lineHeight:1.6,marginTop:0},children:["This reads your own LinkedIn connections in a real Chrome window on this machine and saves them here. Nothing leaves your computer, and you will never be asked for your password — you sign in yourself, once.",!ep&&(eu?" One optional question, then three steps and your galaxy appears.":" Three steps and your galaxy appears; each one ticks itself off.")]}),null===eu&&(0,n.jsx)("p",{style:{color:"#778",fontSize:13},children:"Checking your setup…"}),eu&&(0,n.jsx)(z,{onDone:function(e){X({sectors:e}),window.scrollTo(0,0)}}),q&&(0,n.jsx)(F,{sectors:q.sectors}),!1===eu&&(0,n.jsxs)(n.Fragment,{children:[V?.person.id===J&&(0,n.jsx)(L,{pick:V,pages:v,setPages:k,li:el,running:ei,s:o,canSearch:ec,busy:h,onUnpick:function(){Q(null);try{window.history.replaceState(null,"",window.location.pathname)}catch{}},onStart:()=>en("bridge",{id:V.person.id,maxPages:v})}),ep>0&&!ei&&(0,n.jsx)(H,{children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{children:[ep.toLocaleString()," connections"]}),eh.second>0&&(0,n.jsxs)(n.Fragment,{children:[", plus ",eh.second.toLocaleString()," people in their circles"]}),eh.third>0&&(0,n.jsxs)(n.Fragment,{children:[" and ",eh.third.toLocaleString()," from company scans"]}),"."," ",(0,n.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,n.jsx)(s.default,{href:"/",style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:700,color:"#0a0a1a",textDecoration:"none",background:"linear-gradient(135deg, #FFD700, #FF6B35)"},children:"See your network →"})]})}),o?.photosWaiting>0&&!ei&&(0,n.jsx)(H,{children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{children:[o.photosWaiting.toLocaleString()," ",1===o.photosWaiting?"photo isn’t":"photos aren’t"," saved on this computer yet."]})," ",(0,n.jsx)("span",{style:{color:"#9aa"},children:"An older version kept them as links to LinkedIn. The app doesn’t load photos from LinkedIn while you browse, so those people show initials until the photos are saved here: now, or at the end of your next scan. An expired link can’t be saved; that person’s photo comes back when they’re next scanned."}),o&&!et.dependencies&&(0,n.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:6},children:"Set up the scanner first (step 1 below): it saves them."})]}),(0,n.jsx)(M,{onClick:()=>en("photos"),disabled:h||!et.dependencies,children:"Save photos"})]})}),eg&&(0,n.jsxs)(H,{tone:"bad",children:[(0,n.jsx)("b",{children:"The last run stopped before it finished."}),ef&&(0,n.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:ef}),(0,n.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),er&&(0,n.jsxs)(H,{tone:"bad",children:[(0,n.jsx)("b",{children:"Can’t find the scanner files."}),(0,n.jsx)("br",{}),(0,n.jsxs)("span",{style:{color:"#9aa"},children:["Expected ",(0,n.jsx)("code",{style:E,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),es&&(0,n.jsxs)(H,{tone:"bad",children:[(0,n.jsx)("b",{children:"Google Chrome isn’t installed."}),(0,n.jsx)("br",{}),(0,n.jsxs)("span",{style:{color:"#9aa"},children:["The scanner drives your real Chrome. Install it from"," ",(0,n.jsx)("a",{href:"https://www.google.com/chrome/",target:"_blank",rel:"noreferrer",style:{color:"#3498DB"},children:"google.com/chrome"}),", then reload this page."]})]}),o&&eo.note&&(0,n.jsx)(H,{tone:eo.done?void 0:"bad",children:eo.note}),(0,n.jsx)(A,{n:1,done:eo.done,title:"Set up the scanner",body:o?eo.text:"",action:o&&eo.button&&(0,n.jsx)(M,{onClick:()=>en(eo.button.action),disabled:h||ei,children:eo.button.label})}),(0,n.jsx)(A,{n:2,done:!!et.signedIn,title:"Sign into LinkedIn",body:et.signedIn?"Signed in on this machine. If LinkedIn ever asks for a security check, or a scan says you were signed out, open LinkedIn here and finish it by hand.":"Opens a Chrome window. Sign in with your email and password — “Continue with Google” cannot work here, because Google blocks its sign-in inside automated browsers.",action:et.dependencies&&(0,n.jsx)(M,{onClick:()=>en("login"),disabled:h||ei,children:ei&&"login"===o.action?"Waiting for you…":"Open LinkedIn"})}),(0,n.jsx)(A,{n:3,done:ep>0,title:"1st degree — the people you know",body:"The first scan walks your whole connections list, about a minute and a half for 750 people. After that, Check for new only looks at what has been added since.",action:(0,n.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)(M,{onClick:()=>en("full"),disabled:!ec,primary:!0,children:ei&&"full"===o.action?"Scanning…":"Scan my whole network"}),(0,n.jsx)(M,{onClick:()=>en("refresh"),disabled:!ec,children:ei&&"refresh"===o.action?"Checking…":"Check for new"})]})}),(0,n.jsx)(A,{n:4,done:!1,title:"2nd degree — the people they know",body:(0,n.jsxs)(n.Fragment,{children:["This is what fills ",(0,n.jsx)("b",{children:"Degrees"})," and ",(0,n.jsx)("b",{children:"Outlink"}),": it opens each of your connections in turn and reads who ",(0,n.jsx)("i",{children:"they"})," know. Most people hide their connections — those are noted and never tried again.",(0,n.jsx)("br",{}),(0,n.jsx)("br",{}),"It is slow on purpose, about two minutes between each person, because this is the part LinkedIn notices. During development a real account was temporarily restricted after roughly ",(0,n.jsx)("b",{children:"19 people in one sitting"}),". Run a batch, leave it for a day, run another — and stop the moment LinkedIn mentions unusual activity. It always picks up where it left off: anyone still without a mapped circle, in the order you choose below — your newest connections first, or highest tier first. Each person’s list is read to the end, saving every 10 pages, and a read that is stopped carries on from the same page next time."]}),action:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsx)(x,{cooldown:el?.cooldown,disabled:h,onLift:()=>en("lift-cooldown")}),(0,n.jsx)(m,{li:el,disabled:h,onSetLimits:e=>en("set-limits",e)}),"score"===b&&(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Work through"}),["S","A","B","C","D"].map(e=>{let t=f.includes(e);return(0,n.jsx)("button",{onClick:()=>y(n=>n.includes(e)?n.filter(n=>n!==e):[...n,e]),disabled:ei,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:ei?"not-allowed":"pointer",border:R,background:t?"rgba(52,152,219,0.22)":"rgba(255,255,255,0.05)",color:t?"#cfe6f7":"#667"},children:e},e)}),(0,n.jsx)("span",{style:{fontSize:11.5,color:"#667"},children:f.length?"":"pick at least one"})]}),"newest"===b&&(0,n.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",lineHeight:1.6},children:["Goes by the date you connected, newest first, across every tier. Run"," ",(0,n.jsx)("b",{children:"Check for new"})," first so your latest connections are in the list."]}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Start with"}),(0,n.jsxs)("select",{value:b,onChange:e=>j(e.target.value),disabled:ei,style:N,children:[(0,n.jsx)("option",{value:"newest",children:"Newest connections first"}),(0,n.jsx)("option",{value:"score",children:"Highest tier first"})]}),(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Read up to"}),(0,n.jsxs)("select",{value:v,onChange:e=>k(Number(e.target.value)),disabled:ei,style:N,children:[(0,n.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,n.jsx)("option",{value:50,children:"50 pages each"}),(0,n.jsx)("option",{value:25,children:"25 pages each"}),(0,n.jsx)("option",{value:10,children:"10 pages (~100 people) each"})]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:12.5,color:"#cfd8d8",cursor:ei?"not-allowed":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:S,onChange:e=>I(e.target.checked),disabled:ei}),"Also finish people already mapped, from the page each one stopped at"]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ei?"default":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:T,disabled:ei,style:{marginTop:3},onChange:e=>{C(e.target.checked),window.dispatchEvent(new Event("six-degrees:experimental"))}}),(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{style:{color:"#FFD700"},children:"Experimental:"})," all-day pacing. Up to 8 pages in a sitting, then an hour’s rest; searches only from 9:00 to 18:00; never more than 40 searches in a day or 200 in a week, however high your budget; two days’ rest after any check from LinkedIn; at the budget it waits instead of stopping; and it saves every page. It also reads LinkedIn’s own data beside the page text, to fill gaps and measure how the two compare. It keeps running while the app is open."]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ei?"default":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:B,disabled:ei,style:{marginTop:3},onChange:e=>D(e.target.checked)}),(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{style:{color:"#FFD700"},children:"Hide the Chrome window while scanning."})," Every scan runs with no window popping up; the status bar still shows what it’s doing, and Stop still works. Signing in always opens the window.",(0,n.jsx)("span",{style:{display:"block",marginTop:4,color:"#e0a080"},children:"The risks: a hidden Chrome is easier for LinkedIn to tell apart from a person, so it may make a warning or restriction more likely. If LinkedIn asks you to check it’s you (a code, a puzzle, signing in again) you won’t see it, and the scan will stop instead of waiting for you. Untick this and scan again to see what LinkedIn wants. It changes nothing about pacing or your daily budget."})]})]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"#FFD700",lineHeight:1.6},children:["Every page is a LinkedIn search, so it rests 20 seconds before each one and a minute after every 10, and a long list can take"," ","about ",(0,d.circleScanCost)(v).minutes," minutes a person. LinkedIn shows 100 pages of anyone’s connections at most. Free accounts have a monthly search limit: if LinkedIn says it has been reached, the scan saves what it read and stops, and carries on from that page next time. Keep batches small."]}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,n.jsx)(M,{onClick:()=>en("auto-bridge",{maxBridges:u,tiers:"score"===b?f:[],order:b,maxPages:v,deeper:S,experimental:T}),disabled:!ec||"score"===b&&!f.length,primary:!0,children:ei&&"auto-bridge"===o.action?"Mapping…":"Map 2nd degree"}),(0,n.jsxs)("select",{value:u,onChange:e=>g(Number(e.target.value)),disabled:ei,style:N,children:[(0,n.jsx)("option",{value:5,children:"5 people"}),(0,n.jsx)("option",{value:10,children:"10 people"}),(0,n.jsx)("option",{value:25,children:"25 people"}),(0,n.jsx)("option",{value:0,children:"everyone — not advised"})]}),(0,n.jsx)(M,{onClick:()=>en("auto-bridge-retry",{maxBridges:u,tiers:"score"===b?f:[],order:b,maxPages:v,deeper:S}),disabled:!ec||"score"===b&&!f.length,children:"Retry hidden ones"})]}),(0,n.jsx)(w,{paused:o?.paused||[],disabled:!ec,onResume:e=>en("resume",{id:e.id}),onResumeAll:()=>en("resume-all",{maxBridges:u})})]})}),ei&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:20,padding:"14px 16px",borderRadius:8,background:"rgba(255,255,255,0.05)",border:R},children:[(0,n.jsx)(_,{}),(0,n.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,n.jsx)("b",{children:W[o.action]||"Working"}),o.progress&&(0,n.jsx)(O,{p:o.progress,action:o.action}),(0,n.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:2},children:"Stopping closes the browser cleanly and keeps everything found so far."})]}),(0,n.jsx)(M,{onClick:ee,tone:"bad",children:"Stop"})]}),P&&(0,n.jsx)(H,{tone:"bad",children:P}),o?.log?.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,margin:"28px 0 8px",fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:[ei&&(0,n.jsx)(_,{}),ei?"Working":"Last run"]}),(0,n.jsx)("pre",{ref:G,style:{background:"rgba(0,0,0,0.45)",border:R,borderRadius:8,padding:14,maxHeight:280,overflow:"auto",margin:0,fontSize:12.5,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:o.log.join("\n")})]})]}),(0,n.jsxs)("div",{style:{marginTop:32,paddingTop:20,borderTop:R,fontSize:13.5,color:"#8b9a9a"},children:["Checking for updates has moved to"," ",(0,n.jsx)(s.default,{href:"/settings#updates",style:{color:"#3498DB"},children:"Settings →"})]}),(0,n.jsxs)("p",{style:{color:"#667",fontSize:12.5,lineHeight:1.7,marginTop:32},children:["Automating LinkedIn may go against its User Agreement, and accounts have been restricted for it. This runs locally against your own account, at your own risk. LinkedIn’s own CSV export is the supported route and needs none of this —"," ",(0,n.jsx)(s.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,n.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
6
6
  @keyframes slide { 0% { transform: translateX(-100%) } 100% { transform: translateX(300%) } }`})]})}function L({pick:e,pages:t,setPages:i,li:o,running:r,s:a,canSearch:l,busy:c,onStart:h,onUnpick:p}){let{person:u,circle:g}=e,f=String(u.name||"").trim().split(/\s+/)[0]||"them",y=(0,d.circleScanCost)(t),x=r&&a?.target?.id===u.id,b=o?.leftToday!=null&&o.leftToday<y.searches;return(0,n.jsxs)("div",{style:{margin:"16px 0",padding:"16px 18px",borderRadius:10,fontSize:13.5,lineHeight:1.6,background:"rgba(0,255,136,0.05)",border:"1px solid rgba(0,255,136,0.3)"},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#00ff88",letterSpacing:.6,textTransform:"uppercase",marginBottom:4},children:"Scan one circle"}),(0,n.jsxs)("div",{style:{fontSize:16,fontWeight:700},children:[u.name," ",(0,n.jsxs)("span",{style:{fontSize:12,color:P[u.tier]||"#888"},children:[u.tier,"-tier"]})]}),u.unlocked_from_name&&(0,n.jsxs)("div",{style:{fontSize:12.5,color:"#9aa"},children:["Was in ",u.unlocked_from_name,"’s circle"]}),x?(0,n.jsxs)("div",{style:{marginTop:10},children:[(0,n.jsxs)("b",{children:["Scanning ",f,"’s circle."]})," It saves every 10 pages, and"," ",(0,n.jsx)(s.default,{href:`/?chain=${encodeURIComponent(u.id)}`,style:{color:"#00ff88"},children:"Bridge Chains shows it filling in →"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{color:"#b8c4c4",marginTop:10},children:["It costs ",(0,n.jsxs)("b",{children:[y.profileViews," profile view"]})," to find their list, then ",(0,n.jsx)("b",{children:"one LinkedIn search for every page"})," of it: up to ",y.searches," ",1===y.searches?"page":"pages",", about ",y.minutes," minutes.",o?.leftToday!=null&&(0,n.jsxs)(n.Fragment,{children:[" ",(0,n.jsx)("b",{children:o.leftToday})," of your ",o.limits?.daily," searches a day are left",b?"; the scan stops when they run out, and can carry on from that page later":"","."]})]}),"scanned"===g&&(0,n.jsx)("div",{style:{color:"#FFD700",fontSize:12.5,marginTop:6},children:"Their circle is already scanned. This reads their whole list again from page 1; to carry on from where a read stopped, use Resume on their card or in the Paused list below."}),"hidden"===g&&(0,n.jsx)("div",{style:{color:"#FFD700",fontSize:12.5,marginTop:6},children:"Their list was hidden last time it was tried. Trying again costs a profile view."}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",marginTop:12},children:[(0,n.jsxs)(M,{onClick:h,disabled:!l||c,primary:!0,children:["Scan ",f,"’s circle"]}),(0,n.jsxs)("select",{value:t,onChange:e=>i(Number(e.target.value)),disabled:r,style:N,"aria-label":"How many pages of their list to read",children:[(0,n.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,n.jsx)("option",{value:50,children:"up to 50 pages"}),(0,n.jsx)("option",{value:25,children:"up to 25 pages"}),(0,n.jsx)("option",{value:10,children:"up to 10 pages (~100 people)"})]}),(0,n.jsx)(M,{onClick:p,children:"Not now"})]}),!l&&(0,n.jsx)("div",{style:{fontSize:12.5,color:"#8b9a9a",marginTop:8},children:r?"Something else is running. One scan at a time: this one can start when it finishes.":o?.cooldown?"Scanning is paused for now (see below).":"The scanner isn’t ready yet: finish the steps below first."})]})]})}let P={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"};function $(e,n){let[i,o]=(0,t.useState)(n);return(0,t.useEffect)(()=>{try{let n=localStorage.getItem(e);null!==n&&o(JSON.parse(n))}catch{}},[e]),[i,n=>{o(n);try{localStorage.setItem(e,JSON.stringify(n))}catch{}}]}let E={background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},N={padding:"9px 10px",borderRadius:7,fontSize:13.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:R};function A({n:e,done:t,title:i,body:o,action:s}){return(0,n.jsxs)("div",{style:{display:"flex",gap:16,padding:"20px 0",borderBottom:R,alignItems:"flex-start"},children:[(0,n.jsx)("div",{style:{flexShrink:0,width:28,height:28,borderRadius:"50%",display:"grid",placeItems:"center",fontSize:13,fontWeight:700,background:t?"rgba(0,255,136,0.15)":"rgba(255,255,255,0.08)",color:t?"#00ff88":"#889",border:`1px solid ${t?"rgba(0,255,136,0.4)":"rgba(255,255,255,0.14)"}`},children:t?"✓":e}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:15.5,fontWeight:650,marginBottom:4},children:i}),(0,n.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginBottom:12*!!s},children:o}),s]})]})}function M({children:e,onClick:t,disabled:i,primary:o,tone:s}){return(0,n.jsx)("button",{onClick:t,disabled:i,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:i?"#667":"#fff",background:i?"rgba(255,255,255,0.05)":"bad"===s?"rgba(255,80,80,0.15)":o?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",border:R,cursor:i?"not-allowed":"pointer"},children:e})}function H({children:e,tone:t}){return(0,n.jsx)("div",{style:{margin:"16px 0",padding:"14px 16px",borderRadius:8,fontSize:13.5,lineHeight:1.6,background:"bad"===t?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"bad"===t?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:e})}function O({p:e,action:t}){let i;if("saving"===e.kind)return(0,n.jsxs)("div",{style:{margin:"8px 0 6px"},children:[(0,n.jsx)("div",{role:"progressbar","aria-label":"Saving",style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,n.jsx)("div",{style:{width:"35%",height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",animation:"slide 1.2s ease-in-out infinite"}})}),(0,n.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:"Saving to your network and fetching photos — this can take a minute or two."})]});let o=Math.max(0,Math.min(100,Math.round(e.done/e.total*100)));return i="download"===e.kind?`Downloading Python: ${e.done.toFixed(1)} of ${e.total.toFixed(1)} MB \xb7 ${o}%`:"batch"===e.kind?`Person ${e.current} of ${e.total}`:"refresh"===t?`Looked at ${e.done.toLocaleString()} so far — stops once it reaches people already saved`:`${e.done.toLocaleString()} of ${e.total.toLocaleString()} connections \xb7 ${o}%`,(0,n.jsxs)("div",{style:{margin:"8px 0 6px"},children:["refresh"!==t&&(0,n.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":e.total,"aria-valuenow":e.done,"aria-label":i,style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,n.jsx)("div",{style:{width:`${o}%`,height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.6s ease"}})}),(0,n.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:i})]})}function _(){return(0,n.jsx)("span",{style:{width:11,height:11,borderRadius:"50%",display:"inline-block",border:"2px solid rgba(255,255,255,0.2)",borderTopColor:"#3498DB",animation:"spin 0.8s linear infinite"}})}e.s(["default",0,function(){return(0,n.jsx)(o.default,{children:(0,n.jsx)(t.Suspense,{children:(0,n.jsx)(D,{})})})}],68863)}]);