@evomap/evolver 1.89.3 → 1.89.4
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.
- package/.cursor/BUGBOT.md +182 -0
- package/.env.example +68 -0
- package/.git-commit-guard-token +1 -0
- package/.github/CODEOWNERS +63 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
- package/.github/pull_request_template.md +45 -0
- package/.github/workflows/test.yml +75 -0
- package/CHANGELOG.md +1237 -0
- package/README.md +86 -528
- package/README.public.md +569 -0
- package/SECURITY.md +108 -0
- package/assets/gep/events.jsonl +3 -0
- package/examples/atp-consumer-quickstart.md +100 -0
- package/examples/hello-world.md +38 -0
- package/index.js +30 -1
- package/package.json +6 -17
- package/proxy-package.json +39 -0
- package/public.manifest.json +143 -0
- package/src/config.js +23 -0
- package/src/evolve/guards.js +721 -1
- package/src/evolve/pipeline/collect.js +1283 -1
- package/src/evolve/pipeline/dispatch.js +421 -1
- package/src/evolve/pipeline/enrich.js +440 -1
- package/src/evolve/pipeline/hub.js +319 -1
- package/src/evolve/pipeline/select.js +274 -1
- package/src/evolve/pipeline/signals.js +206 -1
- package/src/evolve/utils.js +264 -1
- package/src/evolve.js +350 -1
- package/src/experiment/agentRunner.js +229 -0
- package/src/experiment/cli.js +159 -0
- package/src/experiment/comparison.js +233 -0
- package/src/experiment/metrics.js +75 -0
- package/src/forceUpdate.js +147 -59
- package/src/gep/a2aProtocol.js +4455 -1
- package/src/gep/antiAbuseTelemetry.js +233 -0
- package/src/gep/autoDistillConv.js +205 -1
- package/src/gep/autoDistillLlm.js +315 -1
- package/src/gep/candidateEval.js +92 -1
- package/src/gep/candidates.js +198 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +89 -1
- package/src/gep/curriculum.js +163 -1
- package/src/gep/deviceId.js +218 -1
- package/src/gep/envFingerprint.js +118 -1
- package/src/gep/epigenetics.js +31 -1
- package/src/gep/execBridge.js +711 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +359 -1
- package/src/gep/hubReview.js +207 -1
- package/src/gep/hubSearch.js +526 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +89 -1
- package/src/gep/memoryGraph.js +1374 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +203 -1
- package/src/gep/narrativeMemory.js +108 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +836 -1
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/sanitize.js +9 -0
- package/src/gep/selector.js +602 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1699 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +88 -1
- package/src/gep/validator/sandboxExecutor.js +29 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +99 -1
- package/src/proxy/index.js +10 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/lifecycle/manager.js +19 -0
- package/src/proxy/mailbox/store.js +2 -1
- package/src/proxy/router/messages_route.js +5 -2
- package/src/proxy/trace/extractor.js +646 -1
- package/src/proxy/trace/usage.js +105 -1
- package/CONTRIBUTING.md +0 -19
- package/assets/cover.png +0 -0
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/refresh_stars_badge.js +0 -168
- package/scripts/seed-merchants.js +0 -91
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/skills/index.json +0 -14
- /package/assets/gep/{genes.seed.json → genes.json} +0 -0
- /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
package/src/evolve/utils.js
CHANGED
|
@@ -1 +1,264 @@
|
|
|
1
|
-
const _0x24aecf=_0x596c;(function(_0x53066e,_0x13dbd9){const _0x5477ba=_0x596c,_0xf338c7=_0x53066e();while(!![]){try{const _0x7b9b97=-parseInt(_0x5477ba(0x2e4,'\x40\x70\x4d\x5d'))/(0x60c+-0x14a4+-0xe99*-0x1)+parseInt(_0x5477ba(0x2c3,'\x4c\x4d\x32\x4d'))/(0x106d+-0x10fa+0x8f*0x1)+parseInt(_0x5477ba(0x1ca,'\x21\x6b\x49\x78'))/(-0x1833+-0x5a*0x2+0x84e*0x3)+parseInt(_0x5477ba(0x247,'\x64\x75\x4a\x33'))/(-0xa9f*-0x1+-0x3b4+-0x6e7)*(parseInt(_0x5477ba(0x1dd,'\x79\x78\x35\x4e'))/(0xce1+-0xd3a+-0x2f*-0x2))+-parseInt(_0x5477ba(0x206,'\x79\x6f\x31\x5d'))/(0x842*0x2+0x69*0x38+0x2*-0x13bb)+parseInt(_0x5477ba(0x285,'\x51\x6a\x73\x47'))/(-0x8*0x385+0x2ef+0x1940)*(parseInt(_0x5477ba(0x1f6,'\x41\x69\x77\x77'))/(0x1*0x2239+0x2*0xced+-0x3c0b))+parseInt(_0x5477ba(0x2d7,'\x68\x68\x24\x6f'))/(-0x1*-0x7b5+-0x6f1*0x1+-0xbb)*(-parseInt(_0x5477ba(0x2ab,'\x31\x32\x65\x51'))/(-0x668+0x2d2+0x3a0));if(_0x7b9b97===_0x13dbd9)break;else _0xf338c7['push'](_0xf338c7['shift']());}catch(_0x3d2456){_0xf338c7['push'](_0xf338c7['shift']());}}}(_0x2610,-0x59273+-0x5*-0xb221+-0x7d1bb*-0x1));const _0x2f269b=(function(){const _0x26e23a=_0x596c,_0x50bd57={'\x73\x7a\x79\x49\x4b':_0x26e23a(0x2e0,'\x62\x74\x24\x48'),'\x6a\x64\x6c\x45\x48':function(_0x343de9,_0x34ad8c){return _0x343de9!==_0x34ad8c;},'\x62\x7a\x4c\x78\x72':_0x26e23a(0x20f,'\x4e\x6d\x6f\x47'),'\x5a\x47\x67\x6f\x5a':function(_0x5be13d,_0xf741b9,_0x1d23da){return _0x5be13d(_0xf741b9,_0x1d23da);},'\x48\x76\x65\x6e\x43':function(_0x218232,_0x434300){return _0x218232+_0x434300;},'\x56\x49\x67\x54\x78':function(_0x42235a,_0x40a772){return _0x42235a-_0x40a772;},'\x53\x65\x4f\x61\x51':_0x26e23a(0x1ff,'\x79\x6f\x31\x5d')};let _0x30081a=!![];return function(_0x7b7c76,_0x3d1c7e){const _0x56a842=_0x26e23a,_0x5d1d8c={'\x50\x7a\x76\x76\x4d':function(_0x40a8d6,_0x381f50,_0x2994b1){const _0x61bcd8=_0x596c;return _0x50bd57[_0x61bcd8(0x210,'\x37\x57\x74\x61')](_0x40a8d6,_0x381f50,_0x2994b1);},'\x71\x54\x45\x46\x71':function(_0x4289b8,_0x2fcf15){const _0x30bdfa=_0x596c;return _0x50bd57[_0x30bdfa(0x296,'\x71\x73\x43\x45')](_0x4289b8,_0x2fcf15);},'\x70\x49\x53\x5a\x4b':function(_0x4d7af4,_0x208ec6){return _0x4d7af4===_0x208ec6;},'\x58\x61\x44\x66\x6b':function(_0x5091d9,_0x39a354){const _0x3851c2=_0x596c;return _0x50bd57[_0x3851c2(0x2f0,'\x43\x53\x21\x5d')](_0x5091d9,_0x39a354);},'\x4e\x53\x69\x52\x67':_0x50bd57[_0x56a842(0x1cf,'\x6a\x4a\x37\x4a')]},_0x39b89c=_0x30081a?function(){const _0x4e9a9c=_0x56a842;if(_0x50bd57[_0x4e9a9c(0x1df,'\x4e\x6d\x6f\x47')]===_0x50bd57[_0x4e9a9c(0x243,'\x4d\x72\x61\x5b')]){if(_0x3d1c7e){if(_0x50bd57[_0x4e9a9c(0x223,'\x41\x79\x76\x21')](_0x50bd57[_0x4e9a9c(0x1dc,'\x4f\x42\x5d\x30')],_0x50bd57[_0x4e9a9c(0x276,'\x5a\x44\x38\x25')]))_0x5d1d8c[_0x4e9a9c(0x281,'\x73\x75\x6c\x58')](_0x8d119a,_0x1cc861[_0x4e9a9c(0x204,'\x4d\x72\x61\x5b')](_0x160e14,_0x369e5b[_0x4e9a9c(0x1d9,'\x5a\x44\x38\x25')]),_0x5d1d8c[_0x4e9a9c(0x26e,'\x71\x73\x43\x45')](_0x10dc25,-0x77f+-0x1d*0x12d+0x2999*0x1));else{const _0x41cefc=_0x3d1c7e[_0x4e9a9c(0x20b,'\x46\x42\x59\x26')](_0x7b7c76,arguments);return _0x3d1c7e=null,_0x41cefc;}}}else{if(!_0x43a19d[_0x4e9a9c(0x211,'\x71\x73\x43\x45')+'\x6e\x63'](_0x16a5fe))return _0x4e9a9c(0x2a4,'\x64\x75\x4a\x33')+'\x5d\x20'+_0x1ec830;const _0x1759e0=_0x5d7f61[_0x4e9a9c(0x293,'\x64\x75\x4a\x33')](_0x422f6a),_0x15fb06=_0x1759e0['\x73\x69\x7a\x65'];if(_0x5d1d8c[_0x4e9a9c(0x221,'\x68\x26\x44\x25')](_0x15fb06,-0x1744+-0x4a3*-0x5+0x15))return'';const _0x228f53=_0x7ddf44[_0x4e9a9c(0x253,'\x62\x74\x24\x48')](_0x4311ba,_0x15fb06),_0x46f67e=_0x8c7b26[_0x4e9a9c(0x1d3,'\x79\x78\x35\x4e')](_0x228f53),_0x4a83d2=_0x589324[_0x4e9a9c(0x292,'\x48\x5a\x34\x43')](_0x563c6d,'\x72');return _0x23fbf8[_0x4e9a9c(0x2d3,'\x71\x73\x43\x45')](_0x4a83d2,_0x46f67e,0x39a+0x41c+-0x7b6,_0x228f53,_0x5c300e[_0x4e9a9c(0x22c,'\x68\x26\x44\x25')](0x324*0x6+-0x7*0x58f+0x1411,_0x5d1d8c[_0x4e9a9c(0x21a,'\x5a\x44\x38\x25')](_0x15fb06,_0x228f53))),_0x213dd1[_0x4e9a9c(0x1e2,'\x65\x6c\x5e\x58')+'\x63'](_0x4a83d2),_0x46f67e[_0x4e9a9c(0x28d,'\x78\x42\x4f\x64')](_0x5d1d8c[_0x4e9a9c(0x219,'\x5a\x44\x38\x25')]);}}:function(){};return _0x30081a=![],_0x39b89c;};}()),_0x1924ee=_0x2f269b(this,function(){const _0x413dc6=_0x596c,_0x35f93b={};_0x35f93b[_0x413dc6(0x256,'\x71\x73\x43\x45')]=_0x413dc6(0x2b6,'\x41\x79\x76\x21')+_0x413dc6(0x2ca,'\x74\x41\x4c\x58');const _0x5b03a6=_0x35f93b;return _0x1924ee[_0x413dc6(0x28e,'\x68\x68\x24\x6f')]()[_0x413dc6(0x1ce,'\x79\x61\x61\x57')](_0x5b03a6[_0x413dc6(0x282,'\x79\x74\x57\x57')])[_0x413dc6(0x2ed,'\x5e\x5e\x72\x35')]()[_0x413dc6(0x268,'\x29\x6a\x32\x59')+_0x413dc6(0x1d2,'\x74\x29\x7a\x53')](_0x1924ee)[_0x413dc6(0x22f,'\x40\x70\x4d\x5d')](_0x5b03a6[_0x413dc6(0x229,'\x5a\x44\x38\x25')]);});function _0x596c(_0x57b30d,_0x10775f){_0x57b30d=_0x57b30d-(0x5*0x101+-0x1*0x2131+0x2*0xef8);const _0x2a9b78=_0x2610();let _0x11c927=_0x2a9b78[_0x57b30d];if(_0x596c['\x6a\x42\x47\x43\x4f\x70']===undefined){var _0x117f73=function(_0x1a810b){const _0x405a8c='\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 _0x439119='',_0xe8ed2a='',_0x51d245=_0x439119+_0x117f73,_0x570a17=(''+function(){return 0xd1f*-0x1+0xe*0x67+-0x47*-0x1b;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x1*-0x1b41+-0x1083+-0x1*-0x2bc5);for(let _0xc3df56=0x22a0+-0x1330*-0x1+-0x30*0x11f,_0x51ce6f,_0x294ca5,_0x5dd21e=0x16c*-0x17+0x1381*-0x2+0x47b6;_0x294ca5=_0x1a810b['\x63\x68\x61\x72\x41\x74'](_0x5dd21e++);~_0x294ca5&&(_0x51ce6f=_0xc3df56%(-0x1f93+0x1*-0x1237+0x1e*0x1a9)?_0x51ce6f*(0x929*-0x1+-0x177c+0xaf7*0x3)+_0x294ca5:_0x294ca5,_0xc3df56++%(0x1e6c+0x464+-0x22cc))?_0x439119+=_0x570a17||_0x51d245['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5dd21e+(-0x1bf0+0x268b+-0x1*0xa91))-(-0x6*-0x2f6+-0x3*0x569+-0x17f)!==-0x1bb+0x1117+-0xf5c?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x73a+-0x2*0x298+0xd69&_0x51ce6f>>(-(0x16c0+-0x1fd9+-0x6f*-0x15)*_0xc3df56&-0x117f*0x1+-0x313*-0xb+0x104c*-0x1)):_0xc3df56:0xc8e*0x3+0x757*-0x1+-0x1*0x1e53){_0x294ca5=_0x405a8c['\x69\x6e\x64\x65\x78\x4f\x66'](_0x294ca5);}for(let _0x210558=0x1542+0x592+0x194*-0x11,_0x2332c8=_0x439119['\x6c\x65\x6e\x67\x74\x68'];_0x210558<_0x2332c8;_0x210558++){_0xe8ed2a+='\x25'+('\x30\x30'+_0x439119['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x210558)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x178d+0x1*-0x1a7d+0x300))['\x73\x6c\x69\x63\x65'](-(0x1353+-0xae8*0x3+0x1*0xd67));}return decodeURIComponent(_0xe8ed2a);};const _0x3aeda8=function(_0x36fd4b,_0x445be5){let _0x44d880=[],_0x579297=-0x174a+-0x455+0x1b9f,_0x4c20e1,_0x5826ae='';_0x36fd4b=_0x117f73(_0x36fd4b);let _0x468946;for(_0x468946=0x18ab*0x1+-0x17*-0x83+-0x247*0x10;_0x468946<-0x7f*0x3+0x2395*0x1+-0x2118;_0x468946++){_0x44d880[_0x468946]=_0x468946;}for(_0x468946=0x2*-0xa72+0x10*-0xfc+-0x2*-0x1252;_0x468946<0x1*0x7c6+-0x1*0x2507+0x1e41;_0x468946++){_0x579297=(_0x579297+_0x44d880[_0x468946]+_0x445be5['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x468946%_0x445be5['\x6c\x65\x6e\x67\x74\x68']))%(0x44*0x89+0x1b09+-0x14cf*0x3),_0x4c20e1=_0x44d880[_0x468946],_0x44d880[_0x468946]=_0x44d880[_0x579297],_0x44d880[_0x579297]=_0x4c20e1;}_0x468946=-0x4f4+-0x2*0xa34+-0x657*-0x4,_0x579297=0x25*0xb2+-0x21c3+-0x11*-0x79;for(let _0x1c6c4f=0x5f2*-0x4+-0x254c+0x3d14;_0x1c6c4f<_0x36fd4b['\x6c\x65\x6e\x67\x74\x68'];_0x1c6c4f++){_0x468946=(_0x468946+(-0x1d87*0x1+0xfc1+0xdc7*0x1))%(0x19e*-0x3+0x15ce+0xff4*-0x1),_0x579297=(_0x579297+_0x44d880[_0x468946])%(0x2369+0xe*-0xf7+-0x14e7),_0x4c20e1=_0x44d880[_0x468946],_0x44d880[_0x468946]=_0x44d880[_0x579297],_0x44d880[_0x579297]=_0x4c20e1,_0x5826ae+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x36fd4b['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1c6c4f)^_0x44d880[(_0x44d880[_0x468946]+_0x44d880[_0x579297])%(-0x1542+-0xcac+-0x20e*-0x11)]);}return _0x5826ae;};_0x596c['\x4e\x73\x65\x53\x4f\x61']=_0x3aeda8,_0x596c['\x56\x47\x7a\x42\x58\x4a']={},_0x596c['\x6a\x42\x47\x43\x4f\x70']=!![];}const _0x360d4a=_0x2a9b78[0xde3+-0x23*0x16+-0xae1],_0x3c0417=_0x57b30d+_0x360d4a,_0x4450b8=_0x596c['\x56\x47\x7a\x42\x58\x4a'][_0x3c0417];if(!_0x4450b8){if(_0x596c['\x72\x4c\x77\x76\x73\x78']===undefined){const _0x32942c=function(_0x49b656){this['\x6f\x58\x68\x59\x47\x76']=_0x49b656,this['\x6f\x6b\x48\x57\x56\x62']=[0x2588+-0x3ca*-0x4+0x34af*-0x1,-0x997+0x2476+0x3*-0x8f5,0x473*0x1+0x2571+-0x29e4],this['\x6f\x70\x4f\x55\x46\x67']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x75\x78\x68\x51\x5a\x46']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x4a\x73\x6e\x70\x79\x4a']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x32942c['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x54\x54\x7a\x63\x47\x42']=function(){const _0x519d20=new RegExp(this['\x75\x78\x68\x51\x5a\x46']+this['\x4a\x73\x6e\x70\x79\x4a']),_0x2badd3=_0x519d20['\x74\x65\x73\x74'](this['\x6f\x70\x4f\x55\x46\x67']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x6f\x6b\x48\x57\x56\x62'][0x17db+-0x1a0*-0x10+-0x31da]:--this['\x6f\x6b\x48\x57\x56\x62'][-0x259f+0x5*-0x715+0x4908];return this['\x42\x43\x48\x54\x6d\x54'](_0x2badd3);},_0x32942c['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x42\x43\x48\x54\x6d\x54']=function(_0x1c10e6){if(!Boolean(~_0x1c10e6))return _0x1c10e6;return this['\x64\x4e\x79\x6d\x6a\x4c'](this['\x6f\x58\x68\x59\x47\x76']);},_0x32942c['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x64\x4e\x79\x6d\x6a\x4c']=function(_0x339ec5){for(let _0x27a24e=0x39*-0x59+0x9be*-0x1+0x7*0x439,_0x4d603e=this['\x6f\x6b\x48\x57\x56\x62']['\x6c\x65\x6e\x67\x74\x68'];_0x27a24e<_0x4d603e;_0x27a24e++){this['\x6f\x6b\x48\x57\x56\x62']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4d603e=this['\x6f\x6b\x48\x57\x56\x62']['\x6c\x65\x6e\x67\x74\x68'];}return _0x339ec5(this['\x6f\x6b\x48\x57\x56\x62'][0x1fff*0x1+0x17bf*-0x1+-0x840]);},(''+function(){return-0x1*-0x12c4+0x1f*-0x50+-0x914;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1d3a+0x24a3*-0x1+0x2*0x3b5)&&new _0x32942c(_0x596c)['\x54\x54\x7a\x63\x47\x42'](),_0x596c['\x72\x4c\x77\x76\x73\x78']=!![];}_0x11c927=_0x596c['\x4e\x73\x65\x53\x4f\x61'](_0x11c927,_0x10775f),_0x596c['\x56\x47\x7a\x42\x58\x4a'][_0x3c0417]=_0x11c927;}else _0x11c927=_0x4450b8;return _0x11c927;}_0x1924ee();'use strict';const _0x4a8434=require('\x66\x73'),_0x3025d2=require(_0x24aecf(0x27a,'\x74\x29\x7a\x53')),_0x4a2856=require('\x6f\x73');function _0x3b080a(_0x3543cb){const _0x56f592=_0x24aecf,_0x3b2607={'\x6f\x45\x59\x71\x76':function(_0x2119f9,_0x53bf89){return _0x2119f9(_0x53bf89);},'\x70\x64\x63\x4e\x4e':function(_0x2ee614,_0x125914){return _0x2ee614===_0x125914;},'\x76\x73\x68\x61\x62':_0x56f592(0x2eb,'\x4d\x72\x61\x5b'),'\x72\x4c\x41\x44\x41':_0x56f592(0x26d,'\x74\x23\x72\x52'),'\x73\x52\x61\x57\x67':function(_0x286e3f,_0x540f23){return _0x286e3f!=_0x540f23;},'\x71\x42\x56\x41\x6f':_0x56f592(0x274,'\x4c\x4d\x32\x4d'),'\x69\x6f\x61\x47\x71':_0x56f592(0x2d0,'\x4c\x4d\x32\x4d'),'\x72\x62\x68\x67\x44':_0x56f592(0x2a7,'\x70\x47\x6e\x56'),'\x52\x63\x5a\x71\x43':function(_0x211bb6,_0x12249e){return _0x211bb6===_0x12249e;},'\x73\x48\x52\x71\x42':_0x56f592(0x262,'\x64\x75\x4a\x33'),'\x65\x4b\x47\x78\x63':function(_0x54ad01,_0x3a7a12){return _0x54ad01===_0x3a7a12;},'\x6d\x72\x47\x41\x73':_0x56f592(0x217,'\x35\x44\x28\x53'),'\x72\x76\x50\x61\x61':_0x56f592(0x1de,'\x36\x44\x6e\x66'),'\x75\x76\x50\x79\x67':_0x56f592(0x21e,'\x55\x64\x28\x6b')+_0x56f592(0x254,'\x48\x5a\x34\x43'),'\x79\x6d\x59\x68\x50':_0x56f592(0x1f1,'\x51\x6a\x73\x47'),'\x59\x45\x78\x6c\x52':_0x56f592(0x297,'\x6a\x4a\x37\x4a'),'\x68\x48\x41\x64\x56':_0x56f592(0x1f5,'\x37\x57\x74\x61')+_0x56f592(0x202,'\x4d\x51\x6d\x47')},_0xfa78f3=_0x3543cb&&_0x3b2607[_0x56f592(0x2f7,'\x5a\x44\x38\x25')](_0x3543cb[_0x56f592(0x2e9,'\x36\x44\x6e\x66')+_0x56f592(0x213,'\x46\x42\x59\x26')+_0x56f592(0x25d,'\x79\x74\x57\x57')+_0x56f592(0x1eb,'\x4f\x5a\x6a\x6f')],null)?_0x3543cb[_0x56f592(0x233,'\x74\x41\x4c\x58')+'\x61\x6e\x73\x63\x72\x69\x70\x74'+_0x56f592(0x250,'\x4c\x4d\x32\x4d')+_0x56f592(0x1f9,'\x79\x61\x61\x57')]:process.env.EVOLVER_CURSOR_TRANSCRIPTS_DIR||'';if(_0xfa78f3)return[_0xfa78f3];const _0x2255f6=_0x3543cb&&_0x3543cb[_0x56f592(0x1cd,'\x36\x44\x6e\x66')]||_0x4a2856[_0x56f592(0x237,'\x64\x75\x4a\x33')](),_0x21e322=[_0x3025d2[_0x56f592(0x22b,'\x21\x55\x71\x48')](_0x2255f6,_0x3b2607[_0x56f592(0x20d,'\x70\x47\x6e\x56')],_0x56f592(0x21f,'\x35\x44\x28\x53')),_0x3025d2[_0x56f592(0x1d1,'\x40\x70\x4d\x5d')](_0x2255f6,_0x3b2607[_0x56f592(0x278,'\x51\x6a\x73\x47')],_0x3b2607[_0x56f592(0x286,'\x55\x64\x28\x6b')])];if(_0x3b2607[_0x56f592(0x27c,'\x59\x49\x2a\x62')](process[_0x56f592(0x236,'\x64\x35\x78\x7a')],_0x3b2607[_0x56f592(0x1ed,'\x36\x51\x30\x24')])){if(_0x3b2607[_0x56f592(0x2a9,'\x4d\x72\x61\x5b')](_0x3b2607['\x6d\x72\x47\x41\x73'],_0x56f592(0x29b,'\x70\x47\x6e\x56'))){const _0x3a8476=process.env.APPDATA||_0x3025d2[_0x56f592(0x2de,'\x46\x42\x59\x26')](_0x2255f6,_0x56f592(0x29a,'\x70\x47\x6e\x56'),_0x56f592(0x294,'\x63\x49\x61\x49'));_0x21e322[_0x56f592(0x2b9,'\x79\x61\x61\x57')](_0x3025d2[_0x56f592(0x264,'\x41\x69\x77\x77')](_0x3a8476,_0x3b2607[_0x56f592(0x22e,'\x55\x64\x28\x6b')],_0x3b2607[_0x56f592(0x207,'\x52\x73\x48\x44')]),_0x3025d2['\x6a\x6f\x69\x6e'](_0x3a8476,_0x3b2607[_0x56f592(0x284,'\x41\x69\x77\x77')],_0x3b2607[_0x56f592(0x1ec,'\x4e\x6d\x6f\x47')]),_0x3025d2['\x6a\x6f\x69\x6e'](_0x3a8476,_0x3b2607[_0x56f592(0x26b,'\x65\x6c\x5e\x58')],_0x3b2607[_0x56f592(0x255,'\x64\x35\x78\x7a')],_0x3b2607[_0x56f592(0x1e6,'\x36\x44\x6e\x66')]));}else{if(!_0x3ab964[_0x56f592(0x260,'\x36\x51\x30\x24')+'\x6e\x63'](_0xc94ff8))return'';const _0x4c5b3e=_0x2ddede[_0x56f592(0x240,'\x4f\x5a\x6a\x6f')](_0x5b1ddd,'\x72'),_0xf78f8a=_0x435750[_0x56f592(0x216,'\x73\x41\x4c\x67')](_0xfa95a4),_0x306272=_0x344f90[_0x56f592(0x299,'\x46\x42\x59\x26')](_0x4c5b3e,_0xf78f8a,0x565*-0x4+0x1*0x928+0xc6c,_0x5dd5a1,0x1c*-0xbf+-0x5*-0x305+0x5cb);return _0xffa5c4['\x63\x6c\x6f\x73\x65\x53\x79\x6e'+'\x63'](_0x4c5b3e),_0xf78f8a[_0x56f592(0x2dc,'\x64\x75\x4a\x33')](0xd*-0x3f+-0x33d+0x670,_0x306272)[_0x56f592(0x244,'\x4e\x6d\x6f\x47')](_0x56f592(0x2db,'\x41\x79\x76\x21'));}}return _0x21e322[_0x56f592(0x2f1,'\x71\x73\x43\x45')](_0x472648=>{const _0x1aeec9=_0x56f592,_0x436160={'\x51\x42\x63\x63\x4c':function(_0x277024,_0xb69bcb){const _0x2394ab=_0x596c;return _0x3b2607[_0x2394ab(0x2c0,'\x68\x26\x44\x25')](_0x277024,_0xb69bcb);}};try{return _0x4a8434[_0x1aeec9(0x2e1,'\x79\x6f\x31\x5d')+'\x6e\x63'](_0x472648);}catch{return _0x3b2607[_0x1aeec9(0x232,'\x4f\x36\x4d\x62')](_0x3b2607[_0x1aeec9(0x1e8,'\x71\x73\x43\x45')],_0x3b2607[_0x1aeec9(0x2a6,'\x4e\x6d\x6f\x47')])?_0x436160[_0x1aeec9(0x1d5,'\x62\x74\x24\x48')](_0x26feaa,_0x466707||'')[_0x1aeec9(0x25a,'\x70\x47\x6e\x56')](/[\\/]+$/,''):![];}});}function _0x5110e7(_0x448591,_0x3cc839){const _0x54e699=_0x24aecf,_0x713046={'\x4e\x65\x4a\x46\x77':function(_0x288b3c,_0x19c87e){return _0x288b3c===_0x19c87e;},'\x46\x54\x4f\x6d\x67':function(_0x589d23,_0x1edfe4){return _0x589d23(_0x1edfe4);},'\x75\x76\x43\x52\x44':_0x54e699(0x1fe,'\x29\x6a\x32\x59'),'\x45\x6f\x4e\x71\x71':function(_0x1bea73,_0x32c7d1){return _0x1bea73>_0x32c7d1;},'\x6e\x74\x54\x4b\x51':function(_0x1b14a7,_0x32cbbc){return _0x1b14a7===_0x32cbbc;},'\x77\x4a\x54\x41\x66':_0x54e699(0x2c6,'\x43\x53\x21\x5d'),'\x59\x78\x55\x6b\x56':_0x54e699(0x249,'\x63\x49\x61\x49'),'\x4e\x44\x41\x4b\x66':'\x2e\x6a\x73\x6f\x6e\x6c','\x73\x44\x67\x51\x59':'\x2e\x74\x78\x74','\x4a\x6b\x72\x69\x4b':_0x54e699(0x257,'\x74\x23\x72\x52')+'\x73','\x6d\x66\x6b\x64\x61':_0x54e699(0x263,'\x68\x68\x24\x6f')+_0x54e699(0x2cc,'\x55\x64\x28\x6b'),'\x41\x6b\x43\x6b\x48':function(_0x2a0c14,_0x485e6f){return _0x2a0c14+_0x485e6f;}},_0x588bfc=[];function _0x86b48b(_0x5898bd,_0xa8783b){const _0x3f327b=_0x54e699,_0x32e6cf={'\x43\x61\x70\x71\x52':function(_0x1756f9,_0x542c4e){const _0x1b788c=_0x596c;return _0x713046[_0x1b788c(0x24b,'\x4f\x5a\x6a\x6f')](_0x1756f9,_0x542c4e);},'\x43\x45\x43\x43\x63':function(_0x6c0c3c,_0x7c4c78){const _0x1addb2=_0x596c;return _0x713046[_0x1addb2(0x2be,'\x55\x64\x28\x6b')](_0x6c0c3c,_0x7c4c78);}};if(_0x713046[_0x3f327b(0x24e,'\x4f\x42\x5d\x30')]===_0x713046[_0x3f327b(0x2e2,'\x68\x68\x24\x6f')]){if(_0x713046[_0x3f327b(0x23e,'\x73\x41\x4c\x67')](_0xa8783b,_0x3cc839))return;let _0x46fb34;try{const _0x50b36f={};_0x50b36f[_0x3f327b(0x251,'\x64\x75\x4a\x33')+_0x3f327b(0x203,'\x62\x74\x24\x48')]=!![],_0x46fb34=_0x4a8434[_0x3f327b(0x2aa,'\x4f\x42\x5d\x30')+_0x3f327b(0x2b0,'\x21\x47\x62\x4f')](_0x5898bd,_0x50b36f);}catch{return;}for(const _0x22e2ab of _0x46fb34){if(_0x713046[_0x3f327b(0x271,'\x68\x68\x24\x6f')](_0x713046[_0x3f327b(0x1f2,'\x35\x44\x28\x53')],_0x713046[_0x3f327b(0x21d,'\x4f\x42\x5d\x30')])){if(_0x32e6cf[_0x3f327b(0x287,'\x6a\x4a\x37\x4a')](_0x4f02f7,_0x4c8917))_0x5b918b=0x1*-0x417+-0x1*-0x2c7+0x2150;try{if(!_0xb1c29e['\x65\x78\x69\x73\x74\x73\x53\x79'+'\x6e\x63'](_0x531701))return'';const _0x4c481d=_0x37aca6[_0x3f327b(0x2d1,'\x4e\x6d\x6f\x47')](_0x1e4fb4,'\x72'),_0x2eca08=_0x474671[_0x3f327b(0x21b,'\x29\x6a\x32\x59')](_0x7c0b28),_0x26c3cc=_0xae4d71[_0x3f327b(0x222,'\x5e\x5e\x72\x35')](_0x4c481d,_0x2eca08,0x3*-0x685+0x114a+-0x245*-0x1,_0x3358ad,-0x15e*-0x12+0xb28+-0x28e*0xe);return _0x8ce6ba[_0x3f327b(0x230,'\x68\x26\x44\x25')+'\x63'](_0x4c481d),_0x2eca08[_0x3f327b(0x2af,'\x6d\x24\x23\x31')](0x1490+0x7*-0x293+-0x28b,_0x26c3cc)[_0x3f327b(0x20c,'\x4f\x5a\x6a\x6f')](_0x3f327b(0x205,'\x55\x64\x28\x6b'));}catch(_0x5f4d39){return'';}}else{if(_0x22e2ab[_0x3f327b(0x259,'\x37\x57\x74\x61')]()&&(_0x22e2ab[_0x3f327b(0x234,'\x55\x64\x28\x6b')][_0x3f327b(0x2c2,'\x79\x74\x57\x57')](_0x713046[_0x3f327b(0x245,'\x6d\x24\x23\x31')])||_0x22e2ab[_0x3f327b(0x27d,'\x73\x75\x6c\x58')][_0x3f327b(0x2a3,'\x46\x42\x59\x26')](_0x713046[_0x3f327b(0x2c5,'\x6a\x4a\x37\x4a')]))){const _0x26d700=_0x3025d2[_0x3f327b(0x22d,'\x4f\x42\x5d\x30')](_0x5898bd,_0x22e2ab[_0x3f327b(0x2dd,'\x63\x49\x61\x49')]);try{const _0x3e79d2=_0x4a8434[_0x3f327b(0x2bf,'\x68\x26\x44\x25')](_0x26d700);_0x588bfc[_0x3f327b(0x209,'\x40\x70\x4d\x5d')]({'\x70\x61\x74\x68':_0x26d700,'\x6e\x61\x6d\x65':_0x22e2ab[_0x3f327b(0x2ad,'\x70\x47\x6e\x56')],'\x74\x69\x6d\x65':_0x3e79d2[_0x3f327b(0x277,'\x78\x42\x4f\x64')][_0x3f327b(0x20e,'\x79\x6f\x31\x5d')](),'\x73\x69\x7a\x65':_0x3e79d2[_0x3f327b(0x2f4,'\x63\x49\x61\x49')]});}catch{}}else _0x22e2ab['\x69\x73\x44\x69\x72\x65\x63\x74'+_0x3f327b(0x1e7,'\x48\x5a\x34\x43')]()&&_0x22e2ab[_0x3f327b(0x242,'\x36\x51\x30\x24')]!==_0x713046[_0x3f327b(0x26c,'\x73\x41\x4c\x67')]&&_0x22e2ab[_0x3f327b(0x239,'\x52\x73\x48\x44')]!==_0x713046[_0x3f327b(0x24f,'\x46\x42\x59\x26')]&&_0x86b48b(_0x3025d2['\x6a\x6f\x69\x6e'](_0x5898bd,_0x22e2ab[_0x3f327b(0x25c,'\x65\x6c\x5e\x58')]),_0x713046[_0x3f327b(0x208,'\x4e\x6d\x6f\x47')](_0xa8783b,0x22a8+-0x2*-0xd2d+-0x3d01));}}}else return _0x32e6cf[_0x3f327b(0x2e6,'\x64\x75\x4a\x33')](_0x4532ca,_0x3314a7['\x72\x65\x61\x6c\x70\x61\x74\x68'+_0x3f327b(0x289,'\x55\x64\x28\x6b')]['\x6e\x61\x74\x69\x76\x65'](_0x5de230));}return _0x86b48b(_0x448591,0x27b+-0x144f*0x1+0x11d4),_0x588bfc;}function _0x39bd21(_0x4258c9,_0x121eee){const _0x4ba5b1=_0x24aecf,_0x32da92={};_0x32da92[_0x4ba5b1(0x1fc,'\x71\x73\x43\x45')]=function(_0x49f820,_0x58cff7){return _0x49f820===_0x58cff7;};const _0x8b9526=_0x32da92;if(_0x8b9526[_0x4ba5b1(0x25e,'\x68\x68\x24\x6f')](_0x121eee,undefined))_0x121eee=-0x35c5+0x367f*0x1+-0xfa3*-0x2;try{if(!_0x4a8434[_0x4ba5b1(0x2e1,'\x79\x6f\x31\x5d')+'\x6e\x63'](_0x4258c9))return'';const _0x124130=_0x4a8434[_0x4ba5b1(0x2ec,'\x41\x79\x76\x21')](_0x4258c9,'\x72'),_0x4b4984=Buffer['\x61\x6c\x6c\x6f\x63'](_0x121eee),_0x30e5b5=_0x4a8434[_0x4ba5b1(0x288,'\x68\x26\x44\x25')](_0x124130,_0x4b4984,0x258*0xa+0xb7*0x24+0x419*-0xc,_0x121eee,-0x2*-0xcdd+0xe2*0x11+-0x28bc);return _0x4a8434[_0x4ba5b1(0x248,'\x31\x32\x65\x51')+'\x63'](_0x124130),_0x4b4984[_0x4ba5b1(0x2b2,'\x79\x61\x61\x57')](0x1c42*0x1+0x588+-0x21ca,_0x30e5b5)[_0x4ba5b1(0x20c,'\x4f\x5a\x6a\x6f')](_0x4ba5b1(0x269,'\x74\x29\x7a\x53'));}catch(_0x323839){return'';}}function _0x29420d(_0x190fa5,_0x15d210){const _0x54c061=_0x24aecf,_0x3a317c={};_0x3a317c[_0x54c061(0x224,'\x63\x49\x61\x49')]=function(_0x44ef46,_0x1f2bc5){return _0x44ef46===_0x1f2bc5;},_0x3a317c['\x78\x70\x56\x68\x63']='\x4e\x67\x59\x76\x47',_0x3a317c[_0x54c061(0x1d4,'\x79\x6f\x31\x5d')]=function(_0x78ecbd,_0x11cba5){return _0x78ecbd-_0x11cba5;},_0x3a317c[_0x54c061(0x295,'\x70\x47\x6e\x56')]=function(_0x1e3a06,_0x4b40b5){return _0x1e3a06!==_0x4b40b5;},_0x3a317c['\x5a\x47\x61\x43\x66']=_0x54c061(0x266,'\x51\x6a\x73\x47'),_0x3a317c[_0x54c061(0x1c7,'\x68\x68\x24\x6f')]=_0x54c061(0x2f2,'\x48\x5a\x34\x43');const _0x16ba02=_0x3a317c;if(_0x16ba02[_0x54c061(0x2e3,'\x36\x44\x6e\x66')](_0x15d210,undefined))_0x15d210=0x2*0x199d+0x4250*0x1+-0x4e7a;try{if(_0x16ba02[_0x54c061(0x2c9,'\x5a\x44\x38\x25')](_0x16ba02[_0x54c061(0x2c4,'\x36\x44\x6e\x66')],_0x16ba02[_0x54c061(0x2d6,'\x74\x41\x4c\x58')])){if(!_0x4a8434[_0x54c061(0x27f,'\x31\x32\x65\x51')+'\x6e\x63'](_0x190fa5))return _0x54c061(0x265,'\x40\x70\x4d\x5d')+'\x5d\x20'+_0x190fa5;const _0x214598=_0x4a8434['\x73\x74\x61\x74\x53\x79\x6e\x63'](_0x190fa5),_0x5f11bd=_0x214598[_0x54c061(0x2f4,'\x63\x49\x61\x49')];if(_0x5f11bd===-0x21ce+-0x19c8+0x3b96*0x1)return'';const _0x917f11=Math['\x6d\x69\x6e'](_0x15d210,_0x5f11bd),_0x5c6476=Buffer[_0x54c061(0x246,'\x79\x74\x57\x57')](_0x917f11),_0x328563=_0x4a8434[_0x54c061(0x28c,'\x36\x51\x30\x24')](_0x190fa5,'\x72');return _0x4a8434['\x72\x65\x61\x64\x53\x79\x6e\x63'](_0x328563,_0x5c6476,-0x204d+0x5*0x196+0x185f,_0x917f11,Math['\x6d\x61\x78'](-0xfa7*-0x2+-0x2c5*-0x5+0xf0d*-0x3,_0x16ba02[_0x54c061(0x29e,'\x48\x5a\x34\x43')](_0x5f11bd,_0x917f11))),_0x4a8434[_0x54c061(0x24d,'\x68\x68\x24\x6f')+'\x63'](_0x328563),_0x5c6476[_0x54c061(0x2a2,'\x64\x75\x4a\x33')](_0x54c061(0x2d4,'\x79\x61\x61\x57'));}else try{return _0x1f1cff[_0x54c061(0x1ef,'\x35\x44\x28\x53')+'\x6e\x63'](_0x926e87);}catch{return![];}}catch(_0x8440a2){if(_0x16ba02[_0x54c061(0x1c4,'\x21\x6b\x49\x78')](_0x16ba02[_0x54c061(0x238,'\x59\x49\x2a\x62')],_0x16ba02[_0x54c061(0x1e1,'\x4f\x5a\x6a\x6f')]))return _0x54c061(0x2b4,'\x74\x23\x72\x52')+_0x54c061(0x1d6,'\x6d\x24\x23\x31')+_0x190fa5+'\x3a\x20'+_0x8440a2[_0x54c061(0x25f,'\x4f\x36\x4d\x62')]+'\x5d';else{const _0x9817d0=_0x1a1083[_0x54c061(0x2d2,'\x55\x64\x28\x6b')](_0x19dba3,_0xd96f4e[_0x54c061(0x242,'\x36\x51\x30\x24')]);try{const _0x33687a=_0x377d6c[_0x54c061(0x267,'\x78\x42\x4f\x64')](_0x9817d0);_0x26aa11[_0x54c061(0x261,'\x21\x6b\x49\x78')]({'\x70\x61\x74\x68':_0x9817d0,'\x6e\x61\x6d\x65':_0x455fc9['\x6e\x61\x6d\x65'],'\x74\x69\x6d\x65':_0x33687a[_0x54c061(0x29c,'\x73\x75\x6c\x58')]['\x67\x65\x74\x54\x69\x6d\x65'](),'\x73\x69\x7a\x65':_0x33687a[_0x54c061(0x1cc,'\x73\x75\x6c\x58')]});}catch{}}}}function _0x4e8954(_0x46210a){const _0x522da9=_0x24aecf,_0xfb2f29={'\x75\x72\x58\x64\x68':function(_0x2be0cd,_0x2453f){return _0x2be0cd(_0x2453f);},'\x64\x42\x76\x79\x58':function(_0x1ebf9b,_0x121c2d){return _0x1ebf9b||_0x121c2d;}};return _0xfb2f29[_0x522da9(0x2cb,'\x64\x35\x78\x7a')](String,_0xfb2f29[_0x522da9(0x28f,'\x65\x6c\x5e\x58')](_0x46210a,''))[_0x522da9(0x29d,'\x48\x5a\x34\x43')](/[\\/]+$/,'');}function _0x2610(){const _0x27844a=['\x74\x74\x56\x64\x55\x6d\x6f\x4f\x57\x35\x6c\x63\x4e\x31\x78\x64\x56\x61','\x57\x34\x46\x64\x47\x4c\x42\x64\x56\x38\x6b\x6a\x57\x51\x4b\x4a','\x76\x6d\x6f\x45\x57\x4f\x62\x48','\x79\x38\x6f\x63\x6c\x76\x34\x6e','\x44\x38\x6b\x57\x66\x53\x6f\x39\x57\x51\x50\x4a\x70\x63\x30','\x57\x37\x61\x79\x57\x34\x61\x43\x57\x37\x38','\x57\x35\x42\x64\x4a\x30\x70\x64\x56\x6d\x6b\x66','\x57\x52\x35\x53\x57\x37\x50\x45\x57\x51\x34\x61\x76\x75\x4a\x63\x52\x6d\x6b\x43\x79\x57','\x7a\x76\x79\x2b\x41\x58\x35\x7a\x57\x52\x52\x63\x4e\x71','\x72\x4e\x79\x79\x68\x63\x69','\x63\x71\x4a\x64\x4f\x43\x6f\x44\x76\x57','\x42\x63\x37\x64\x4c\x38\x6f\x61\x57\x37\x79','\x61\x6d\x6b\x35\x57\x35\x79\x5a\x61\x65\x33\x63\x48\x78\x30','\x57\x4f\x6a\x55\x61\x38\x6f\x6f\x57\x36\x53\x57\x71\x53\x6b\x47','\x57\x51\x2f\x63\x53\x78\x68\x64\x55\x5a\x30','\x65\x43\x6f\x68\x44\x4b\x64\x64\x47\x57','\x57\x37\x58\x59\x57\x51\x4e\x63\x4d\x73\x48\x4b\x57\x4f\x31\x66','\x57\x37\x53\x58\x57\x52\x47\x63\x57\x35\x61\x72\x44\x32\x47','\x77\x6d\x6f\x76\x73\x6d\x6b\x34\x67\x71','\x67\x38\x6b\x55\x57\x37\x53','\x61\x6d\x6f\x77\x42\x47','\x57\x37\x4b\x4d\x71\x68\x47\x54','\x57\x36\x56\x64\x4b\x68\x5a\x64\x4f\x6d\x6f\x48','\x57\x4f\x5a\x63\x54\x4d\x71\x4c\x78\x53\x6f\x4a\x42\x43\x6b\x2f','\x57\x51\x31\x4e\x6a\x53\x6f\x59\x57\x36\x47','\x57\x36\x6e\x56\x57\x51\x64\x63\x51\x53\x6f\x6a\x57\x36\x79','\x57\x36\x6e\x7a\x75\x38\x6b\x70\x57\x4f\x37\x64\x55\x4c\x79','\x6b\x43\x6f\x35\x57\x51\x37\x64\x56\x65\x34','\x63\x64\x2f\x63\x54\x57\x75','\x57\x34\x74\x64\x50\x30\x42\x64\x4f\x43\x6b\x50\x57\x52\x34\x49\x68\x47','\x57\x4f\x31\x36\x6e\x53\x6f\x42\x57\x36\x69','\x57\x51\x37\x63\x50\x75\x6a\x55\x57\x37\x31\x52\x6d\x71','\x78\x38\x6f\x68\x57\x4f\x72\x33\x57\x36\x76\x66\x57\x37\x35\x50','\x57\x37\x33\x64\x50\x68\x42\x63\x4a\x57','\x57\x37\x53\x58\x57\x51\x6a\x7a\x57\x51\x71','\x57\x4f\x39\x54\x63\x6d\x6f\x79\x57\x35\x65\x6f\x76\x6d\x6b\x51','\x6c\x74\x37\x64\x4e\x43\x6f\x4e','\x73\x30\x56\x64\x50\x48\x5a\x63\x4b\x43\x6b\x43\x57\x52\x74\x64\x4c\x57','\x65\x5a\x57\x53\x68\x38\x6b\x42','\x57\x37\x66\x70\x57\x50\x64\x63\x4b\x53\x6f\x4a\x57\x37\x35\x78\x57\x50\x57','\x79\x6d\x6f\x34\x65\x53\x6f\x6b\x6d\x6d\x6b\x34\x44\x65\x4f','\x62\x38\x6f\x59\x41\x43\x6f\x46','\x41\x53\x6b\x4c\x64\x38\x6f\x45\x57\x52\x30','\x68\x5a\x70\x63\x47\x57\x4a\x64\x49\x57','\x6c\x66\x72\x36\x68\x49\x57','\x57\x50\x70\x63\x49\x67\x57\x6b\x46\x57','\x57\x34\x6c\x64\x49\x77\x68\x64\x4b\x38\x6f\x32','\x57\x34\x76\x36\x57\x50\x42\x63\x4b\x47\x61','\x6e\x31\x6c\x64\x50\x53\x6b\x2f\x57\x4f\x38','\x57\x4f\x39\x32\x6f\x6d\x6f\x32\x57\x35\x38','\x41\x53\x6b\x5a\x57\x4f\x58\x6e\x57\x51\x4f','\x57\x50\x6a\x4e\x68\x38\x6f\x6f\x57\x36\x43\x6d\x76\x43\x6b\x72','\x57\x51\x66\x76\x57\x51\x2f\x63\x4a\x57\x6a\x51','\x57\x50\x46\x63\x55\x6d\x6f\x47\x44\x53\x6f\x7a','\x57\x36\x53\x33\x44\x6d\x6f\x78\x41\x71','\x57\x36\x39\x70\x57\x50\x4a\x63\x49\x38\x6f\x76','\x61\x64\x38\x53\x6d\x38\x6b\x73','\x43\x43\x6b\x36\x6a\x6d\x6f\x4c\x57\x51\x48\x52\x6a\x49\x69','\x61\x53\x6f\x4e\x45\x38\x6b\x70','\x64\x75\x75\x6b\x6c\x62\x47','\x65\x5a\x37\x63\x4b\x4e\x53\x33','\x71\x71\x68\x64\x51\x53\x6f\x73','\x69\x6d\x6b\x52\x57\x37\x75','\x79\x30\x69\x34\x41\x57\x39\x35\x57\x50\x64\x63\x49\x47','\x41\x74\x56\x64\x48\x38\x6f\x4d\x43\x6d\x6b\x33','\x46\x58\x52\x64\x53\x43\x6f\x62\x57\x37\x61','\x57\x36\x2f\x64\x52\x4e\x46\x64\x50\x53\x6b\x61','\x64\x53\x6f\x65\x46\x65\x4a\x64\x4b\x49\x75\x75\x57\x35\x61','\x6d\x49\x46\x64\x50\x6d\x6f\x57\x45\x71','\x77\x32\x76\x2f\x72\x43\x6f\x78\x57\x34\x57\x53\x41\x43\x6b\x4f\x76\x62\x79','\x63\x76\x78\x64\x48\x6d\x6b\x78\x57\x51\x30','\x75\x38\x6b\x4c\x57\x50\x62\x4f\x57\x52\x57','\x45\x43\x6f\x37\x75\x6d\x6b\x76\x62\x38\x6b\x6d\x57\x50\x72\x4a','\x6b\x65\x37\x64\x47\x53\x6b\x74','\x57\x35\x61\x78\x45\x4e\x65\x74\x57\x35\x64\x64\x51\x30\x75','\x6e\x72\x37\x63\x56\x32\x34','\x76\x43\x6f\x70\x57\x4f\x48\x51\x57\x34\x6a\x70\x57\x34\x6e\x5a','\x57\x37\x7a\x75\x57\x51\x6c\x63\x4b\x53\x6f\x63\x57\x36\x35\x78\x57\x50\x47','\x57\x50\x76\x54\x70\x38\x6f\x6a\x57\x37\x57\x6b\x76\x43\x6b\x50','\x61\x48\x5a\x63\x52\x62\x4e\x64\x47\x57','\x6e\x6d\x6b\x5a\x57\x52\x6d\x59\x65\x57\x69\x51\x57\x52\x4f','\x57\x4f\x6a\x31\x63\x61','\x61\x6d\x6f\x63\x42\x53\x6b\x50\x57\x52\x66\x51\x57\x36\x37\x64\x47\x61','\x57\x37\x38\x53\x57\x51\x30\x45\x57\x34\x75\x62\x44\x77\x34','\x71\x31\x30\x76\x6d\x4a\x6a\x69\x57\x34\x69','\x57\x37\x6a\x56\x44\x43\x6b\x61\x57\x4f\x30','\x57\x37\x56\x64\x51\x30\x68\x64\x55\x38\x6f\x65','\x72\x43\x6b\x33\x57\x4f\x76\x52','\x78\x62\x31\x55\x45\x47','\x64\x53\x6f\x65\x46\x65\x64\x64\x53\x74\x30\x6f\x57\x35\x53','\x57\x35\x62\x6d\x75\x38\x6b\x4e\x57\x4f\x37\x64\x52\x76\x69','\x57\x34\x76\x44\x7a\x43\x6b\x6b\x57\x4f\x47','\x71\x48\x74\x64\x52\x53\x6f\x41\x57\x35\x47','\x68\x43\x6f\x78\x45\x38\x6b\x52\x57\x4f\x6e\x57\x57\x36\x75','\x61\x6d\x6f\x45\x45\x6d\x6b\x74\x57\x51\x79','\x41\x49\x37\x64\x56\x6d\x6f\x49','\x57\x37\x30\x49\x73\x47','\x69\x32\x6a\x54\x57\x50\x39\x46','\x57\x37\x47\x33\x57\x50\x38\x45\x57\x36\x71\x72\x44\x77\x4f','\x67\x43\x6f\x70\x45\x76\x46\x64\x54\x73\x30\x75\x57\x35\x61','\x57\x35\x43\x76\x57\x4f\x75\x35\x57\x34\x75\x58\x76\x75\x4f','\x57\x37\x31\x74\x57\x52\x70\x63\x48\x61\x54\x4b\x57\x4f\x30','\x43\x43\x6b\x74\x62\x6d\x6f\x6e\x57\x50\x4b','\x57\x36\x66\x6f\x74\x6d\x6b\x6a\x57\x4f\x52\x64\x55\x4b\x43\x6d','\x62\x53\x6f\x50\x78\x6d\x6b\x74\x57\x4f\x69\x51\x57\x37\x47\x6c','\x44\x43\x6f\x5a\x65\x32\x38\x4c','\x57\x51\x4a\x63\x4f\x4c\x70\x64\x4a\x72\x30\x64\x57\x52\x2f\x64\x54\x57','\x6e\x71\x4f\x35\x43\x61\x35\x67\x57\x52\x46\x63\x4f\x71','\x68\x43\x6f\x74\x7a\x43\x6b\x30\x57\x4f\x66\x48\x57\x36\x4e\x64\x4b\x57','\x57\x37\x39\x44\x74\x53\x6b\x67','\x74\x53\x6f\x6e\x57\x4f\x58\x51\x57\x36\x6a\x76\x57\x35\x39\x35','\x57\x34\x30\x57\x57\x36\x47\x30\x57\x37\x57','\x57\x34\x2f\x64\x49\x58\x79','\x74\x43\x6f\x44\x57\x37\x4e\x64\x4d\x63\x38','\x73\x38\x6f\x45\x57\x36\x74\x64\x4d\x48\x6d','\x76\x53\x6f\x38\x6e\x6d\x6f\x47\x6d\x47','\x57\x51\x74\x63\x48\x4c\x71\x77\x44\x53\x6f\x75\x69\x38\x6b\x7a','\x6a\x6d\x6b\x58\x57\x35\x50\x72\x57\x36\x37\x63\x55\x65\x71','\x65\x76\x52\x63\x51\x38\x6b\x49\x57\x37\x6c\x64\x4c\x38\x6b\x79\x57\x36\x4f','\x77\x48\x70\x64\x54\x6d\x6f\x6b\x57\x50\x38','\x66\x33\x42\x64\x51\x6d\x6b\x42\x57\x50\x65','\x73\x6d\x6f\x68\x57\x37\x37\x64\x4b\x71','\x57\x51\x70\x64\x50\x49\x37\x64\x4b\x6d\x6f\x39','\x65\x33\x4e\x63\x52\x43\x6b\x31\x57\x52\x70\x64\x4e\x4c\x33\x64\x51\x6d\x6b\x71\x74\x67\x4b\x6d','\x57\x34\x46\x64\x56\x33\x64\x63\x4c\x30\x4b','\x45\x38\x6f\x2f\x73\x6d\x6b\x44\x6f\x38\x6b\x75\x57\x50\x34','\x70\x77\x70\x64\x4f\x38\x6b\x44\x57\x4f\x34','\x45\x6d\x6f\x51\x75\x6d\x6b\x66\x62\x38\x6b\x6d\x57\x50\x72\x4a','\x7a\x6d\x6f\x42\x41\x6d\x6b\x61\x69\x47','\x79\x53\x6f\x44\x6e\x78\x53\x32\x46\x38\x6f\x75\x79\x57','\x57\x35\x6c\x64\x4a\x75\x56\x64\x4f\x6d\x6b\x58\x57\x51\x65\x5a\x62\x61','\x57\x52\x34\x65\x57\x37\x64\x64\x4d\x66\x75\x51\x57\x4f\x35\x61\x6f\x53\x6f\x6a\x6b\x75\x57','\x6d\x53\x6f\x4f\x57\x4f\x2f\x64\x4b\x4d\x53','\x79\x38\x6b\x61\x57\x4f\x44\x69\x57\x52\x43','\x57\x50\x2f\x63\x4f\x6d\x6f\x75\x78\x43\x6f\x7a','\x41\x63\x78\x64\x51\x6d\x6f\x32\x57\x34\x43','\x75\x63\x37\x64\x52\x53\x6f\x50\x57\x36\x33\x63\x4b\x66\x34','\x57\x35\x61\x42\x77\x43\x6f\x6b\x76\x47','\x44\x59\x42\x63\x4b\x47\x53','\x57\x35\x75\x72\x79\x68\x61\x78','\x64\x4c\x56\x64\x49\x43\x6b\x64','\x57\x36\x76\x74\x43\x6d\x6b\x78\x57\x50\x33\x64\x53\x66\x30\x79','\x6f\x38\x6b\x4a\x57\x37\x65\x37\x69\x47','\x43\x67\x56\x64\x56\x5a\x6e\x61\x57\x34\x33\x64\x47\x53\x6f\x6f\x57\x4f\x37\x64\x56\x4d\x68\x63\x4b\x61\x71','\x57\x51\x66\x76\x57\x51\x5a\x63\x49\x48\x6a\x32\x57\x4f\x30','\x42\x6d\x6b\x56\x69\x6d\x6f\x4e\x57\x4f\x54\x5a\x70\x63\x4b','\x65\x76\x4a\x64\x48\x43\x6b\x45','\x57\x34\x68\x64\x55\x65\x78\x64\x53\x43\x6f\x75\x57\x50\x37\x63\x4f\x72\x38','\x74\x43\x6f\x67\x57\x36\x56\x63\x47\x71','\x66\x53\x6b\x64\x57\x35\x30\x78\x6f\x66\x42\x63\x4d\x4d\x79','\x6a\x68\x2f\x64\x52\x30\x46\x63\x47\x47','\x57\x35\x61\x30\x77\x38\x6b\x65\x57\x52\x50\x76\x63\x6d\x6b\x6c\x57\x51\x37\x64\x49\x53\x6f\x70\x69\x53\x6b\x45','\x57\x34\x38\x62\x75\x4e\x65\x43\x57\x34\x53','\x68\x32\x4c\x41\x57\x52\x6a\x4e','\x57\x4f\x50\x55\x57\x52\x44\x4e\x57\x51\x4b\x79\x57\x4f\x64\x64\x51\x75\x47\x6c\x62\x43\x6b\x35','\x74\x61\x42\x64\x50\x43\x6b\x30','\x57\x37\x38\x30\x57\x51\x75\x6a\x57\x37\x6d','\x46\x31\x6d\x7a\x6f\x47','\x66\x53\x6f\x6f\x44\x65\x4f','\x62\x38\x6b\x6f\x57\x34\x31\x41\x57\x37\x53','\x64\x53\x6b\x33\x57\x35\x79\x35\x67\x71','\x66\x30\x6a\x45\x57\x51\x76\x37\x45\x30\x4a\x63\x52\x61','\x57\x50\x72\x30\x6c\x38\x6f\x56\x57\x34\x4f','\x65\x38\x6f\x6f\x57\x52\x4a\x64\x4e\x30\x75','\x6a\x74\x64\x63\x4d\x68\x56\x64\x55\x53\x6f\x4b\x57\x4f\x4e\x64\x4c\x6d\x6b\x50\x44\x6d\x6b\x35\x57\x4f\x43','\x57\x35\x2f\x64\x55\x65\x52\x64\x53\x53\x6f\x5a\x57\x4f\x38','\x57\x34\x38\x44\x57\x4f\x38\x50\x57\x37\x75','\x74\x38\x6f\x68\x75\x6d\x6b\x57\x6f\x57','\x44\x6d\x6f\x6b\x57\x35\x4a\x64\x4d\x59\x75','\x6b\x43\x6f\x54\x57\x51\x56\x64\x49\x77\x46\x64\x4f\x61\x2f\x63\x4a\x47','\x57\x35\x46\x64\x49\x33\x42\x63\x49\x77\x53','\x78\x38\x6f\x6e\x61\x4b\x43\x55','\x76\x47\x6c\x64\x50\x53\x6f\x49\x57\x4f\x52\x63\x48\x38\x6f\x44\x57\x51\x61','\x57\x34\x54\x78\x77\x53\x6f\x39\x64\x38\x6b\x43\x70\x53\x6f\x72','\x77\x47\x78\x64\x50\x57','\x62\x31\x75\x33\x6c\x72\x53','\x57\x51\x52\x63\x4d\x38\x6f\x4b\x72\x38\x6f\x64','\x57\x35\x78\x64\x54\x65\x4a\x64\x4f\x43\x6f\x49\x57\x50\x75','\x67\x43\x6f\x61\x7a\x38\x6b\x4a\x57\x51\x53','\x67\x43\x6f\x48\x57\x52\x46\x64\x4d\x71','\x79\x4c\x53\x6f\x6f\x47','\x57\x36\x43\x35\x44\x6d\x6f\x61\x46\x61','\x57\x50\x62\x34\x69\x6d\x6f\x58\x57\x36\x75','\x57\x37\x4f\x46\x77\x43\x6f\x34\x46\x61','\x57\x36\x37\x64\x47\x4c\x70\x63\x48\x67\x30','\x6f\x38\x6b\x4f\x57\x36\x6e\x30\x57\x36\x4f','\x45\x43\x6f\x38\x57\x51\x7a\x43\x57\x35\x61','\x57\x4f\x35\x79\x64\x43\x6f\x72\x57\x34\x38','\x41\x43\x6f\x30\x57\x50\x72\x6e\x57\x35\x57','\x57\x37\x62\x41\x57\x50\x2f\x63\x4c\x43\x6f\x74\x57\x37\x76\x71\x57\x4f\x38','\x57\x52\x2f\x63\x4f\x64\x33\x64\x4b\x5a\x4f\x36\x57\x35\x6c\x64\x4b\x38\x6f\x2f\x69\x6d\x6f\x71\x57\x35\x35\x56','\x57\x52\x35\x54\x57\x37\x35\x42\x57\x51\x69\x39\x46\x33\x52\x63\x4e\x43\x6b\x7a\x44\x57','\x78\x61\x4e\x64\x56\x43\x6f\x73','\x69\x53\x6f\x33\x57\x52\x74\x64\x4e\x32\x5a\x64\x55\x59\x4b','\x73\x38\x6f\x78\x57\x36\x5a\x64\x49\x58\x76\x6d','\x71\x38\x6b\x48\x57\x51\x39\x34\x57\x52\x38','\x66\x53\x6b\x4a\x57\x35\x6d\x59\x69\x31\x46\x63\x50\x4e\x57','\x45\x4d\x4e\x64\x48\x49\x65','\x62\x53\x6f\x50\x46\x71','\x57\x51\x68\x64\x56\x57\x64\x64\x49\x43\x6f\x2f','\x68\x76\x7a\x65\x57\x4f\x6a\x6c','\x6a\x38\x6b\x66\x57\x37\x79\x53\x62\x61','\x57\x37\x53\x44\x57\x34\x75\x45\x57\x35\x44\x50\x57\x34\x43','\x57\x52\x46\x63\x53\x4c\x48\x57','\x57\x36\x56\x64\x51\x62\x4b\x5a\x57\x52\x43\x4c\x46\x38\x6f\x4a','\x57\x36\x43\x53\x76\x43\x6f\x6b','\x6c\x78\x65\x43\x6c\x72\x71','\x71\x32\x61\x2f\x67\x61\x57','\x57\x52\x4a\x63\x56\x78\x37\x64\x4b\x71\x53','\x57\x37\x42\x63\x4f\x31\x4e\x64\x48\x38\x6f\x6c\x57\x50\x37\x63\x4d\x67\x76\x42','\x63\x43\x6f\x30\x57\x52\x4a\x64\x4a\x32\x5a\x64\x54\x57','\x43\x6d\x6b\x4c\x70\x6d\x6f\x61\x57\x50\x6d','\x57\x36\x69\x35\x57\x52\x47\x64\x57\x36\x61\x44','\x74\x72\x68\x64\x56\x6d\x6f\x51\x57\x34\x61','\x62\x74\x6c\x63\x54\x72\x70\x64\x56\x47\x70\x63\x48\x73\x79','\x68\x76\x47\x57\x57\x35\x74\x64\x4f\x47','\x74\x74\x42\x64\x51\x53\x6f\x2b\x57\x51\x4f','\x70\x38\x6b\x4e\x57\x36\x48\x6d\x57\x37\x64\x63\x52\x31\x48\x39','\x69\x53\x6f\x71\x57\x50\x4a\x64\x4e\x4c\x34','\x61\x6d\x6f\x61\x43\x47','\x57\x34\x78\x64\x52\x4b\x5a\x64\x54\x6d\x6f\x4c','\x77\x33\x34\x49\x6a\x4a\x57','\x69\x47\x56\x63\x4d\x67\x34\x57','\x75\x63\x6c\x64\x55\x43\x6f\x4a','\x43\x43\x6b\x39\x6c\x43\x6f\x55\x57\x50\x57','\x73\x43\x6f\x33\x57\x52\x39\x31\x57\x35\x6d','\x65\x43\x6f\x71\x78\x38\x6b\x64\x57\x52\x71','\x64\x75\x38\x54\x57\x34\x42\x64\x4a\x38\x6f\x69\x57\x34\x70\x63\x49\x47','\x57\x37\x6e\x61\x78\x6d\x6f\x52\x6c\x47','\x6b\x49\x75\x2f\x62\x38\x6b\x6d\x57\x37\x53','\x68\x33\x30\x71\x57\x37\x74\x64\x4e\x71','\x57\x35\x69\x63\x76\x4d\x43\x43\x57\x34\x33\x64\x52\x66\x69','\x57\x50\x6c\x64\x4e\x62\x52\x64\x4c\x43\x6f\x74','\x57\x37\x31\x5a\x57\x50\x74\x63\x51\x6d\x6f\x77\x57\x37\x6e\x55\x6c\x61','\x46\x32\x4e\x64\x4b\x53\x6f\x7a\x77\x6d\x6b\x59\x57\x36\x53\x4d','\x6b\x43\x6f\x6f\x57\x4f\x4e\x64\x4e\x4b\x57','\x57\x36\x53\x33\x57\x34\x4b\x6f\x57\x36\x38','\x73\x53\x6f\x42\x57\x36\x4e\x64\x4e\x61','\x57\x4f\x56\x64\x47\x5a\x4a\x64\x48\x38\x6f\x72','\x42\x38\x6f\x53\x72\x43\x6b\x36\x6d\x61','\x57\x35\x2f\x64\x50\x78\x37\x64\x53\x38\x6f\x52','\x42\x53\x6b\x36\x6d\x43\x6f\x4f','\x45\x53\x6f\x5a\x67\x6d\x6f\x74\x64\x61','\x62\x30\x35\x72\x57\x36\x34','\x44\x76\x38\x48','\x44\x6d\x6f\x49\x57\x36\x72\x49\x45\x72\x38\x68\x57\x50\x50\x42\x64\x31\x79','\x61\x6d\x6b\x65\x57\x34\x79\x56\x6a\x75\x78\x63\x4c\x4e\x61','\x69\x53\x6b\x2b\x57\x36\x75\x51\x6f\x57','\x45\x53\x6f\x78\x70\x78\x4b','\x64\x4b\x70\x64\x49\x53\x6f\x69','\x72\x47\x47\x62\x57\x36\x79\x2f\x70\x4e\x5a\x63\x47\x38\x6f\x4e\x57\x50\x6a\x39\x63\x57','\x6e\x6d\x6b\x30\x57\x52\x4f\x58\x62\x71','\x71\x53\x6b\x30\x62\x53\x6f\x49\x57\x50\x61','\x79\x68\x70\x64\x4e\x63\x43','\x68\x53\x6f\x4a\x45\x67\x56\x64\x51\x47','\x68\x43\x6f\x72\x42\x75\x4a\x64\x4d\x57','\x76\x49\x74\x64\x4a\x53\x6f\x59\x57\x37\x70\x63\x4a\x31\x78\x64\x55\x61','\x57\x36\x62\x2b\x44\x43\x6b\x49\x57\x4f\x61','\x66\x76\x39\x64\x57\x4f\x6a\x4d\x7a\x78\x34','\x74\x38\x6b\x6a\x66\x43\x6f\x45\x57\x50\x75','\x57\x35\x62\x42\x57\x4f\x68\x63\x52\x6d\x6f\x2f','\x57\x35\x42\x64\x50\x75\x33\x64\x50\x53\x6f\x5a\x57\x50\x74\x63\x4e\x61\x75','\x57\x37\x33\x64\x4e\x31\x64\x64\x52\x6d\x6f\x4f','\x68\x43\x6f\x70\x42\x4b\x46\x64\x4b\x63\x30\x71\x57\x34\x57','\x57\x35\x65\x7a\x44\x66\x47\x75','\x67\x53\x6f\x32\x73\x6d\x6b\x53\x57\x4f\x71','\x62\x31\x6e\x4b\x67\x61\x71','\x70\x66\x79\x63\x57\x35\x5a\x64\x4e\x61','\x66\x4b\x48\x64\x57\x50\x31\x52','\x57\x34\x43\x45\x75\x43\x6f\x39\x46\x61','\x57\x35\x65\x53\x46\x6d\x6f\x6a\x43\x61','\x79\x53\x6f\x37\x65\x6d\x6f\x77\x6a\x57','\x43\x6d\x6f\x4a\x64\x53\x6f\x71\x6b\x53\x6b\x54','\x57\x4f\x70\x63\x56\x32\x46\x64\x47\x49\x38','\x67\x66\x56\x64\x4a\x43\x6b\x66\x57\x4f\x31\x33\x57\x51\x74\x64\x49\x61','\x67\x31\x69\x33\x57\x34\x42\x64\x4b\x53\x6f\x75\x57\x37\x37\x63\x47\x61','\x6a\x53\x6b\x67\x57\x37\x75\x4f\x69\x61','\x45\x38\x6f\x78\x79\x53\x6b\x52\x68\x57','\x57\x34\x31\x44\x41\x6d\x6f\x54\x6c\x53\x6b\x6d\x70\x53\x6f\x76','\x75\x58\x42\x64\x52\x38\x6f\x6a\x57\x50\x65','\x73\x67\x71\x76\x6f\x48\x79','\x44\x43\x6f\x61\x6a\x68\x47\x30\x41\x53\x6f\x74','\x57\x34\x4f\x41\x57\x36\x47\x37\x57\x37\x58\x44','\x57\x36\x76\x66\x75\x38\x6b\x67','\x67\x74\x65\x2f\x62\x38\x6b\x67','\x57\x35\x65\x61\x79\x6d\x6f\x41\x46\x71','\x57\x4f\x2f\x63\x4f\x4e\x38\x4f\x76\x53\x6f\x4e\x7a\x57','\x68\x76\x53\x53\x6d\x61','\x7a\x53\x6f\x2f\x73\x71','\x57\x52\x64\x63\x51\x66\x56\x64\x48\x57','\x63\x75\x68\x64\x56\x6d\x6b\x72\x57\x4f\x47','\x79\x32\x70\x64\x4a\x4a\x33\x63\x4f\x43\x6b\x39','\x41\x6d\x6f\x59\x78\x53\x6b\x63\x6d\x43\x6b\x4d\x57\x4f\x6e\x55','\x43\x43\x6f\x59\x68\x43\x6f\x44\x61\x53\x6b\x4a\x42\x75\x57','\x57\x52\x70\x63\x50\x66\x6a\x74\x57\x35\x69','\x70\x33\x52\x64\x49\x31\x5a\x63\x4a\x53\x6b\x34\x6f\x30\x47','\x66\x76\x42\x64\x47\x43\x6b\x76','\x57\x34\x64\x64\x52\x75\x4a\x64\x56\x6d\x6f\x5a','\x57\x35\x61\x70\x77\x77\x61\x7a\x57\x35\x64\x64\x54\x30\x38','\x57\x36\x71\x33\x57\x51\x65\x70\x57\x37\x69\x72\x41\x71','\x67\x58\x52\x63\x51\x75\x4b\x73','\x6b\x6d\x6b\x33\x57\x52\x38\x5a','\x57\x34\x6e\x5a\x76\x43\x6b\x71\x57\x51\x61','\x65\x66\x4e\x64\x4e\x38\x6b\x4c\x57\x52\x4b','\x77\x6d\x6f\x4e\x78\x38\x6b\x73','\x66\x65\x6d\x48','\x69\x31\x62\x67\x62\x48\x79','\x57\x35\x78\x64\x4f\x75\x52\x64\x4e\x6d\x6b\x55'];_0x2610=function(){return _0x27844a;};return _0x2610();}function _0x36a62b(_0x3c2a65){const _0x5e75e3=_0x24aecf,_0x498a63={'\x71\x7a\x4c\x4c\x6b':_0x5e75e3(0x1d8,'\x4f\x36\x4d\x62')+_0x5e75e3(0x298,'\x21\x55\x71\x48'),'\x4d\x64\x64\x74\x6a':function(_0x12f3a1,_0x47a6b1){return _0x12f3a1===_0x47a6b1;},'\x43\x43\x4b\x58\x41':_0x5e75e3(0x23b,'\x55\x64\x28\x6b'),'\x5a\x5a\x73\x6e\x64':function(_0x37eb4d,_0x1fabb5){return _0x37eb4d!==_0x1fabb5;},'\x62\x42\x65\x4f\x48':_0x5e75e3(0x2d9,'\x79\x6f\x31\x5d'),'\x69\x7a\x4a\x57\x65':function(_0x2a1755,_0x297848){return _0x2a1755(_0x297848);},'\x63\x75\x42\x76\x61':function(_0x5eb270,_0x270963){return _0x5eb270!==_0x270963;},'\x4c\x65\x4a\x4f\x66':_0x5e75e3(0x272,'\x6a\x4a\x37\x4a'),'\x43\x51\x47\x68\x77':function(_0x1aba58,_0x360417){return _0x1aba58!==_0x360417;},'\x52\x52\x4b\x47\x57':'\x77\x77\x55\x51\x68'};let _0x6df4ea;try{if(_0x498a63[_0x5e75e3(0x2ce,'\x62\x74\x24\x48')](_0x498a63[_0x5e75e3(0x1c6,'\x36\x51\x30\x24')],_0x5e75e3(0x2e7,'\x68\x26\x44\x25')))return _0x5ad1ae;else _0x6df4ea=_0x4e8954(_0x3025d2[_0x5e75e3(0x2a5,'\x4c\x4d\x32\x4d')](_0x3c2a65));}catch{return'';}if(!_0x6df4ea)return'';try{if(_0x498a63[_0x5e75e3(0x2ea,'\x21\x6b\x49\x78')](_0x498a63[_0x5e75e3(0x23f,'\x79\x74\x57\x57')],_0x498a63[_0x5e75e3(0x20a,'\x46\x42\x59\x26')]))_0x2d3416=_0x38347a(_0x3737a5[_0x5e75e3(0x2c8,'\x4f\x5a\x6a\x6f')](_0xc5b2ab));else return _0x498a63[_0x5e75e3(0x26a,'\x4e\x6d\x6f\x47')](_0x4e8954,_0x4a8434[_0x5e75e3(0x283,'\x46\x42\x59\x26')+'\x53\x79\x6e\x63'][_0x5e75e3(0x1e0,'\x64\x75\x4a\x33')](_0x6df4ea));}catch{if(_0x498a63[_0x5e75e3(0x2ba,'\x79\x78\x35\x4e')](_0x498a63[_0x5e75e3(0x270,'\x55\x64\x28\x6b')],_0x498a63[_0x5e75e3(0x258,'\x68\x68\x24\x6f')]))return _0x166925[_0x5e75e3(0x2a8,'\x74\x29\x7a\x53')]()['\x73\x65\x61\x72\x63\x68'](mjwWAW[_0x5e75e3(0x2f6,'\x68\x68\x24\x6f')])[_0x5e75e3(0x2cd,'\x70\x47\x6e\x56')]()['\x63\x6f\x6e\x73\x74\x72\x75\x63'+_0x5e75e3(0x2a0,'\x5a\x44\x38\x25')](_0xe6ce40)['\x73\x65\x61\x72\x63\x68'](mjwWAW[_0x5e75e3(0x214,'\x64\x35\x78\x7a')]);else try{return _0x4e8954(_0x4a8434[_0x5e75e3(0x2c1,'\x4d\x72\x61\x5b')+_0x5e75e3(0x23c,'\x68\x26\x44\x25')](_0x6df4ea));}catch{if(_0x498a63[_0x5e75e3(0x220,'\x4d\x51\x6d\x47')](_0x5e75e3(0x1fa,'\x79\x78\x35\x4e'),_0x498a63[_0x5e75e3(0x1db,'\x63\x49\x61\x49')]))return _0x6df4ea;else _0x10775f=_0x2a9b78[_0x5e75e3(0x228,'\x51\x6a\x73\x47')](_0x11c927);}}}function _0x395b08(_0x174cd8){const _0x1f8e6e=_0x24aecf,_0x424225={};_0x424225[_0x1f8e6e(0x2b7,'\x41\x79\x76\x21')]=_0x1f8e6e(0x280,'\x41\x69\x77\x77'),_0x424225[_0x1f8e6e(0x1c8,'\x36\x51\x30\x24')]=function(_0x1d5711,_0x53e72b){return _0x1d5711<_0x53e72b;},_0x424225[_0x1f8e6e(0x2b1,'\x79\x61\x61\x57')]=function(_0xce6120,_0xe39938){return _0xce6120!==_0xe39938;},_0x424225[_0x1f8e6e(0x215,'\x74\x29\x7a\x53')]=_0x1f8e6e(0x24a,'\x41\x69\x77\x77'),_0x424225[_0x1f8e6e(0x1ee,'\x74\x29\x7a\x53')]=function(_0x44f094,_0x4ba7a9){return _0x44f094===_0x4ba7a9;},_0x424225[_0x1f8e6e(0x2c7,'\x4f\x5a\x6a\x6f')]=_0x1f8e6e(0x2d8,'\x64\x35\x78\x7a'),_0x424225[_0x1f8e6e(0x2e8,'\x79\x61\x61\x57')]=_0x1f8e6e(0x273,'\x68\x68\x24\x6f')+_0x1f8e6e(0x1fd,'\x4e\x6d\x6f\x47'),_0x424225[_0x1f8e6e(0x1f4,'\x79\x78\x35\x4e')]=function(_0x3fc88,_0x15d877){return _0x3fc88===_0x15d877;},_0x424225[_0x1f8e6e(0x26f,'\x4c\x4d\x32\x4d')]=_0x1f8e6e(0x21c,'\x29\x6a\x32\x59'),_0x424225['\x7a\x71\x4f\x72\x66']=_0x1f8e6e(0x2b8,'\x55\x64\x28\x6b'),_0x424225['\x52\x63\x64\x7a\x42']=_0x1f8e6e(0x1c5,'\x77\x5a\x55\x32');const _0x48d677=_0x424225;try{if(!_0x174cd8[_0x1f8e6e(0x24c,'\x4d\x51\x6d\x47')](_0x48d677[_0x1f8e6e(0x25b,'\x36\x44\x6e\x66')]))return null;const _0x3ea0c1=_0x39bd21(_0x174cd8,0x1212+0x1849+-0x207*0xd);if(!_0x3ea0c1)return null;const _0x304912=_0x3ea0c1[_0x1f8e6e(0x235,'\x71\x73\x43\x45')]('\x0a');for(let _0x592fa2=-0xb98+0x1*-0x2225+0x2dbd;_0x48d677[_0x1f8e6e(0x252,'\x68\x26\x44\x25')](_0x592fa2,Math[_0x1f8e6e(0x27e,'\x77\x5a\x55\x32')](_0x304912[_0x1f8e6e(0x2e5,'\x71\x73\x43\x45')],-0x733*-0x1+0x811+0xf3f*-0x1));_0x592fa2++){if(_0x48d677[_0x1f8e6e(0x1e3,'\x35\x44\x28\x53')](_0x1f8e6e(0x2a1,'\x79\x6f\x31\x5d'),_0x48d677['\x68\x70\x47\x4b\x74'])){const _0x38f26d=_0x304912[_0x592fa2][_0x1f8e6e(0x1d7,'\x4f\x36\x4d\x62')]();if(!_0x38f26d)continue;let _0x4f47f;try{_0x4f47f=JSON[_0x1f8e6e(0x2ef,'\x21\x55\x71\x48')](_0x38f26d);}catch{continue;}if(_0x4f47f&&_0x48d677[_0x1f8e6e(0x1f7,'\x36\x44\x6e\x66')](typeof _0x4f47f,_0x48d677[_0x1f8e6e(0x2bc,'\x21\x6b\x49\x78')])){if(_0x4f47f[_0x1f8e6e(0x227,'\x70\x47\x6e\x56')]===_0x48d677[_0x1f8e6e(0x1f0,'\x5e\x5e\x72\x35')]&&_0x4f47f[_0x1f8e6e(0x2bd,'\x68\x26\x44\x25')]&&_0x48d677[_0x1f8e6e(0x23a,'\x70\x47\x6e\x56')](typeof _0x4f47f[_0x1f8e6e(0x241,'\x79\x74\x57\x57')][_0x1f8e6e(0x2ee,'\x41\x79\x76\x21')],_0x48d677[_0x1f8e6e(0x2df,'\x77\x5a\x55\x32')]))return _0x48d677[_0x1f8e6e(0x27b,'\x21\x55\x71\x48')]===_0x48d677['\x52\x63\x64\x7a\x42']?'':_0x4f47f[_0x1f8e6e(0x22a,'\x74\x23\x72\x52')][_0x1f8e6e(0x291,'\x68\x68\x24\x6f')];if(_0x48d677[_0x1f8e6e(0x1ea,'\x59\x49\x2a\x62')](typeof _0x4f47f[_0x1f8e6e(0x23d,'\x21\x55\x71\x48')],_0x48d677[_0x1f8e6e(0x1e9,'\x63\x49\x61\x49')]))return _0x4f47f['\x63\x77\x64'];}}else return null;}return null;}catch{return null;}}function _0x3c53b3(_0xfdac69,_0x2dbbef){const _0x8d9765=_0x24aecf,_0x57aff9={'\x55\x6b\x48\x59\x76':function(_0x29c909,_0xbd414){return _0x29c909(_0xbd414);},'\x64\x72\x74\x4b\x64':function(_0x396935,_0x3871dc){return _0x396935(_0x3871dc);},'\x5a\x45\x59\x73\x6a':function(_0x25ef02,_0x32d4a8){return _0x25ef02!==_0x32d4a8;},'\x70\x7a\x6d\x49\x6c':function(_0x49ffbf,_0x58a036){return _0x49ffbf===_0x58a036;},'\x6b\x6a\x63\x65\x62':function(_0x16d555,_0x3be9d2){return _0x16d555+_0x3be9d2;}},_0x197a60=_0x57aff9[_0x8d9765(0x1fb,'\x68\x26\x44\x25')](_0x395b08,_0xfdac69);if(!_0x197a60)return![];const _0x3406e5=Array[_0x8d9765(0x2b5,'\x77\x5a\x55\x32')](_0x2dbbef)?_0x2dbbef:[_0x2dbbef],_0x5bdfaf=_0x57aff9[_0x8d9765(0x218,'\x79\x6f\x31\x5d')](_0x36a62b,_0x197a60);if(!_0x5bdfaf)return![];for(const _0x2aed24 of _0x3406e5){if(_0x57aff9[_0x8d9765(0x1da,'\x21\x55\x71\x48')](_0x8d9765(0x212,'\x71\x73\x43\x45'),'\x4e\x42\x74\x79\x6f'))try{return vUasZr[_0x8d9765(0x2b3,'\x29\x6a\x32\x59')](_0xcea109,_0x4697b6[_0x8d9765(0x279,'\x4e\x6d\x6f\x47')+_0x8d9765(0x2f3,'\x36\x44\x6e\x66')](_0x23dd9e));}catch{return _0x2da006;}else{if(!_0x2aed24)continue;const _0x64f4a7=_0x57aff9[_0x8d9765(0x1f8,'\x6d\x24\x23\x31')](_0x36a62b,_0x2aed24);if(!_0x64f4a7)continue;if(_0x57aff9['\x70\x7a\x6d\x49\x6c'](_0x5bdfaf,_0x64f4a7))return!![];if(_0x5bdfaf[_0x8d9765(0x1d0,'\x4d\x51\x6d\x47')+'\x74\x68'](_0x57aff9[_0x8d9765(0x275,'\x43\x53\x21\x5d')](_0x64f4a7,_0x3025d2[_0x8d9765(0x200,'\x31\x32\x65\x51')])))return!![];}}return![];}const _0x4176a8={};_0x4176a8[_0x24aecf(0x1e5,'\x77\x5a\x55\x32')+_0x24aecf(0x2ac,'\x48\x5a\x34\x43')+_0x24aecf(0x1e4,'\x41\x79\x76\x21')]=_0x3b080a,_0x4176a8['\x63\x6f\x6c\x6c\x65\x63\x74\x54'+_0x24aecf(0x1f3,'\x64\x35\x78\x7a')+_0x24aecf(0x226,'\x6d\x24\x23\x31')]=_0x5110e7,_0x4176a8[_0x24aecf(0x231,'\x29\x6a\x32\x59')+_0x24aecf(0x29f,'\x4f\x5a\x6a\x6f')]=_0x39bd21,_0x4176a8[_0x24aecf(0x290,'\x52\x73\x48\x44')+_0x24aecf(0x2f5,'\x5a\x44\x38\x25')]=_0x29420d,_0x4176a8['\x65\x78\x74\x72\x61\x63\x74\x54'+_0x24aecf(0x1c9,'\x78\x42\x4f\x64')+_0x24aecf(0x28b,'\x59\x49\x2a\x62')]=_0x395b08,_0x4176a8[_0x24aecf(0x2ae,'\x36\x51\x30\x24')+_0x24aecf(0x28a,'\x64\x35\x78\x7a')+_0x24aecf(0x2d5,'\x4d\x51\x6d\x47')+'\x70\x61\x63\x65']=_0x3c53b3,module[_0x24aecf(0x225,'\x4d\x72\x61\x5b')]=_0x4176a8;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const os = require('os');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the directories to scan for IDE / platform session transcripts.
|
|
9
|
+
*
|
|
10
|
+
* Precedence:
|
|
11
|
+
* 1. `EVOLVER_CURSOR_TRANSCRIPTS_DIR` explicit override — returns `[that]`
|
|
12
|
+
* (preserves the existing escape hatch for unusual layouts).
|
|
13
|
+
* 2. Default platform paths under `$HOME`, in priority order:
|
|
14
|
+
* `~/.codex/sessions` (Codex rollout JSONL, layout `YYYY/MM/DD/rollout-*.jsonl`)
|
|
15
|
+
* `~/.claude/projects` (Claude Code per-project transcripts)
|
|
16
|
+
* Only paths that exist are returned.
|
|
17
|
+
*
|
|
18
|
+
* Before #543, only the env-var path was checked, so a fresh Codex install
|
|
19
|
+
* with no env override silently produced "no session logs" even though
|
|
20
|
+
* Codex was writing rollouts to `~/.codex/sessions`. Auto-discovery here
|
|
21
|
+
* mirrors the auto-detection in `readRealSessionLog` which already
|
|
22
|
+
* considers `~/.codex` / `~/.claude` / `~/.cursor` when deciding whether
|
|
23
|
+
* to dispatch to the transcript reader.
|
|
24
|
+
*
|
|
25
|
+
* @param {{ homedir?: string, cursorTranscriptsDirOverride?: string }} [opts]
|
|
26
|
+
* @returns {string[]}
|
|
27
|
+
*/
|
|
28
|
+
function resolveTranscriptDirs(opts) {
|
|
29
|
+
const override = opts && opts.cursorTranscriptsDirOverride != null
|
|
30
|
+
? opts.cursorTranscriptsDirOverride
|
|
31
|
+
: (process.env.EVOLVER_CURSOR_TRANSCRIPTS_DIR || '');
|
|
32
|
+
if (override) return [override];
|
|
33
|
+
const home = (opts && opts.homedir) || os.homedir();
|
|
34
|
+
const candidates = [
|
|
35
|
+
path.join(home, '.codex', 'sessions'),
|
|
36
|
+
path.join(home, '.claude', 'projects'),
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
// Windows: Cursor and Claude Code store their config / transcript data under
|
|
40
|
+
// AppData\Roaming rather than ~/.<name>. Add the known Windows paths when
|
|
41
|
+
// running on win32 so that auto-discovery works without needing
|
|
42
|
+
// EVOLVER_CURSOR_TRANSCRIPTS_DIR to be set manually.
|
|
43
|
+
//
|
|
44
|
+
// Known layouts (as of 2025):
|
|
45
|
+
// Cursor %APPDATA%\Cursor\User\workspaceStorage (SQLite + JSON sessions)
|
|
46
|
+
// Claude %APPDATA%\Claude\projects (mirrors macOS ~/.claude/projects)
|
|
47
|
+
// claude-code %APPDATA%\claude-code\projects (some builds use this name)
|
|
48
|
+
if (process.platform === 'win32') {
|
|
49
|
+
const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming');
|
|
50
|
+
candidates.push(
|
|
51
|
+
path.join(appData, 'Claude', 'projects'),
|
|
52
|
+
path.join(appData, 'claude-code', 'projects'),
|
|
53
|
+
// Cursor transcript storage lives one level above individual workspace dirs
|
|
54
|
+
path.join(appData, 'Cursor', 'User', 'workspaceStorage'),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return candidates.filter((p) => {
|
|
59
|
+
try { return fs.existsSync(p); } catch { return false; }
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Recursively collect .jsonl and .txt transcript files under a directory.
|
|
65
|
+
* @param {string} dir
|
|
66
|
+
* @param {number} maxDepth
|
|
67
|
+
* @returns {{ path: string, name: string, time: number, size: number }[]}
|
|
68
|
+
*/
|
|
69
|
+
function collectTranscriptFiles(dir, maxDepth) {
|
|
70
|
+
const results = [];
|
|
71
|
+
function walk(d, depth) {
|
|
72
|
+
if (depth > maxDepth) return;
|
|
73
|
+
let entries;
|
|
74
|
+
try { entries = fs.readdirSync(d, { withFileTypes: true }); } catch { return; }
|
|
75
|
+
for (const ent of entries) {
|
|
76
|
+
if (ent.isFile() && (ent.name.endsWith('.jsonl') || ent.name.endsWith('.txt'))) {
|
|
77
|
+
const fp = path.join(d, ent.name);
|
|
78
|
+
try {
|
|
79
|
+
const st = fs.statSync(fp);
|
|
80
|
+
results.push({ path: fp, name: ent.name, time: st.mtime.getTime(), size: st.size });
|
|
81
|
+
} catch { /* skip unreadable */ }
|
|
82
|
+
} else if (ent.isDirectory() && ent.name !== 'subagents' && ent.name !== 'node_modules') {
|
|
83
|
+
walk(path.join(d, ent.name), depth + 1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
walk(dir, 0);
|
|
88
|
+
return results;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Read the first maxBytes bytes of a file.
|
|
93
|
+
* @param {string} filePath
|
|
94
|
+
* @param {number} [maxBytes=8192]
|
|
95
|
+
* @returns {string}
|
|
96
|
+
*/
|
|
97
|
+
function readFileHead(filePath, maxBytes) {
|
|
98
|
+
if (maxBytes === undefined) maxBytes = 8192;
|
|
99
|
+
try {
|
|
100
|
+
if (!fs.existsSync(filePath)) return '';
|
|
101
|
+
const fd = fs.openSync(filePath, 'r');
|
|
102
|
+
const buffer = Buffer.alloc(maxBytes);
|
|
103
|
+
const bytesRead = fs.readSync(fd, buffer, 0, maxBytes, 0);
|
|
104
|
+
fs.closeSync(fd);
|
|
105
|
+
return buffer.slice(0, bytesRead).toString('utf8');
|
|
106
|
+
} catch (e) {
|
|
107
|
+
return '';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Read the last `size` bytes of a file (tail read for recent logs).
|
|
113
|
+
* @param {string} filePath
|
|
114
|
+
* @param {number} [size=10000]
|
|
115
|
+
* @returns {string}
|
|
116
|
+
*/
|
|
117
|
+
function readRecentLog(filePath, size) {
|
|
118
|
+
if (size === undefined) size = 10000;
|
|
119
|
+
try {
|
|
120
|
+
if (!fs.existsSync(filePath)) return `[MISSING] ${filePath}`;
|
|
121
|
+
const stat = fs.statSync(filePath);
|
|
122
|
+
const fileSize = stat.size;
|
|
123
|
+
if (fileSize === 0) return '';
|
|
124
|
+
const readSize = Math.min(size, fileSize);
|
|
125
|
+
const buffer = Buffer.alloc(readSize);
|
|
126
|
+
const fd = fs.openSync(filePath, 'r');
|
|
127
|
+
fs.readSync(fd, buffer, 0, readSize, Math.max(0, fileSize - readSize));
|
|
128
|
+
fs.closeSync(fd);
|
|
129
|
+
return buffer.toString('utf8');
|
|
130
|
+
} catch (e) {
|
|
131
|
+
return `[ERROR READING ${filePath}: ${e.message}]`;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function stripTrailingSeparators(value) {
|
|
136
|
+
return String(value || '').replace(/[\\/]+$/, '');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Normalize a workspace identity for provenance comparisons.
|
|
141
|
+
*
|
|
142
|
+
* macOS commonly exposes the same temporary directory through both `/var/...`
|
|
143
|
+
* and `/private/var/...`. `path.resolve()` keeps those strings different even
|
|
144
|
+
* though they identify the same directory, so use realpath when possible and
|
|
145
|
+
* fall back to the resolved path for stale transcript cwd values.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} value
|
|
148
|
+
* @returns {string}
|
|
149
|
+
*/
|
|
150
|
+
function normalizeWorkspaceIdentity(value) {
|
|
151
|
+
let resolved;
|
|
152
|
+
try {
|
|
153
|
+
resolved = stripTrailingSeparators(path.resolve(value));
|
|
154
|
+
} catch {
|
|
155
|
+
return '';
|
|
156
|
+
}
|
|
157
|
+
if (!resolved) return '';
|
|
158
|
+
try {
|
|
159
|
+
return stripTrailingSeparators(fs.realpathSync.native(resolved));
|
|
160
|
+
} catch {
|
|
161
|
+
try {
|
|
162
|
+
return stripTrailingSeparators(fs.realpathSync(resolved));
|
|
163
|
+
} catch {
|
|
164
|
+
return resolved;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Read the first record(s) of a JSONL transcript and try to extract the
|
|
171
|
+
* originating workspace cwd. Codex rollouts start with a `session_meta`
|
|
172
|
+
* record whose `payload.cwd` is the workspace the session ran in
|
|
173
|
+
* (`{"type":"session_meta","payload":{"cwd":"/home/u/workspace/X", ...}}`).
|
|
174
|
+
* Claude Code may emit a top-level `cwd` on its first record; generic
|
|
175
|
+
* fallback also checks `data.cwd`.
|
|
176
|
+
*
|
|
177
|
+
* Returns the cwd string or null when no recognisable cwd is found in
|
|
178
|
+
* the first ~4 KB of the file. Bounded read so a malformed multi-MB
|
|
179
|
+
* transcript can't stall the discovery pass.
|
|
180
|
+
*
|
|
181
|
+
* @param {string} filePath
|
|
182
|
+
* @returns {string|null}
|
|
183
|
+
*/
|
|
184
|
+
function extractTranscriptCwd(filePath) {
|
|
185
|
+
try {
|
|
186
|
+
if (!filePath.endsWith('.jsonl')) return null;
|
|
187
|
+
const head = readFileHead(filePath, 4096);
|
|
188
|
+
if (!head) return null;
|
|
189
|
+
const lines = head.split('\n');
|
|
190
|
+
// Scan at most the first 5 records — `session_meta` should be first
|
|
191
|
+
// for Codex; widen the window slightly in case a writer prepends an
|
|
192
|
+
// envelope record (e.g. version preamble).
|
|
193
|
+
for (let i = 0; i < Math.min(lines.length, 5); i++) {
|
|
194
|
+
const ln = lines[i].trim();
|
|
195
|
+
if (!ln) continue;
|
|
196
|
+
let data;
|
|
197
|
+
try { data = JSON.parse(ln); } catch { continue; }
|
|
198
|
+
if (data && typeof data === 'object') {
|
|
199
|
+
if (data.type === 'session_meta' && data.payload && typeof data.payload.cwd === 'string') {
|
|
200
|
+
return data.payload.cwd;
|
|
201
|
+
}
|
|
202
|
+
if (typeof data.cwd === 'string') return data.cwd;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return null;
|
|
206
|
+
} catch { return null; }
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Decide whether a transcript file belongs to the workspace we're
|
|
211
|
+
* evolving. The user-level discovery paths (`~/.codex/sessions`,
|
|
212
|
+
* `~/.claude/projects`) hold transcripts from EVERY project the user
|
|
213
|
+
* has touched — pulling them in unfiltered would import unrelated
|
|
214
|
+
* session content into another repo's evolution run (Bugbot PR #130
|
|
215
|
+
* Agentic Security Review MEDIUM: cross-project prompt/context
|
|
216
|
+
* contamination + possible unintended disclosure of prior session
|
|
217
|
+
* data).
|
|
218
|
+
*
|
|
219
|
+
* Match semantics: a session's recorded cwd belongs to "this
|
|
220
|
+
* workspace" if it equals OR is a subdir of ANY of the candidate
|
|
221
|
+
* roots passed in. We accept multiple candidates so a user who
|
|
222
|
+
* `cd`'d into a non-git directory still gets their own sessions
|
|
223
|
+
* back: `getWorkspaceRoot()` may fall back to the evolver install
|
|
224
|
+
* dir when no `.git` is found, but `process.cwd()` still points
|
|
225
|
+
* at the user's actual working dir (which is what the Codex
|
|
226
|
+
* session also recorded). Without this multi-candidate match,
|
|
227
|
+
* issue #543's follow-up scenario — tammypi running evolver from
|
|
228
|
+
* `/home/u/workspace/foo` with no `git init` — silently dropped
|
|
229
|
+
* every transcript even though Codex was active there.
|
|
230
|
+
*
|
|
231
|
+
* Files without a recognisable cwd (older formats, third-party
|
|
232
|
+
* writers) are dropped — fail-closed is the conservative answer
|
|
233
|
+
* when we can't prove provenance.
|
|
234
|
+
*
|
|
235
|
+
* @param {string} filePath
|
|
236
|
+
* @param {string|string[]} candidateRoots — one or more workspace
|
|
237
|
+
* identities; the transcript's cwd matches if any of these
|
|
238
|
+
* equals or is a parent of it.
|
|
239
|
+
* @returns {boolean}
|
|
240
|
+
*/
|
|
241
|
+
function transcriptBelongsToWorkspace(filePath, candidateRoots) {
|
|
242
|
+
const cwd = extractTranscriptCwd(filePath);
|
|
243
|
+
if (!cwd) return false;
|
|
244
|
+
const roots = Array.isArray(candidateRoots) ? candidateRoots : [candidateRoots];
|
|
245
|
+
const normCwd = normalizeWorkspaceIdentity(cwd);
|
|
246
|
+
if (!normCwd) return false;
|
|
247
|
+
for (const root of roots) {
|
|
248
|
+
if (!root) continue;
|
|
249
|
+
const normRoot = normalizeWorkspaceIdentity(root);
|
|
250
|
+
if (!normRoot) continue;
|
|
251
|
+
if (normCwd === normRoot) return true;
|
|
252
|
+
if (normCwd.startsWith(normRoot + path.sep)) return true;
|
|
253
|
+
}
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
module.exports = {
|
|
258
|
+
resolveTranscriptDirs,
|
|
259
|
+
collectTranscriptFiles,
|
|
260
|
+
readFileHead,
|
|
261
|
+
readRecentLog,
|
|
262
|
+
extractTranscriptCwd,
|
|
263
|
+
transcriptBelongsToWorkspace,
|
|
264
|
+
};
|