@sparrowai/sparrow-mcp 1.1.5 → 1.1.6

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 (48) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/scripts/mcp-test/mcp-client.js +1 -1
  3. package/dist/scripts/test-runner/check-failed-tests.js +1 -1
  4. package/dist/scripts/test-runner/compare-responses.js +1 -1
  5. package/dist/scripts/test-runner/standalone-test-fixed-header.js +1 -1
  6. package/dist/scripts/test-runner/standalone-test.js +1 -1
  7. package/dist/src/config/appConfig.js +1 -1
  8. package/dist/src/config/constants.js +1 -1
  9. package/dist/src/controllers/__tests__/analysis.controller.test.js +1 -1
  10. package/dist/src/controllers/__tests__/sast.controller.test.js +1 -1
  11. package/dist/src/controllers/__tests__/sca.controller.test.js +1 -1
  12. package/dist/src/controllers/__tests__/security.controller.test.js +1 -1
  13. package/dist/src/controllers/__tests__/system.controller.test.js +1 -1
  14. package/dist/src/controllers/analysis.controller.js +1 -1
  15. package/dist/src/controllers/sast.controller.js +1 -1
  16. package/dist/src/controllers/sca.controller.js +1 -1
  17. package/dist/src/controllers/security.controller.js +1 -1
  18. package/dist/src/controllers/system.controller.js +1 -1
  19. package/dist/src/schemas/tool.schemas.js +1 -1
  20. package/dist/src/server.js +1 -1
  21. package/dist/src/services/__tests__/checker.service.test.js +1 -1
  22. package/dist/src/services/__tests__/llm.service.test.js +1 -1
  23. package/dist/src/services/__tests__/s3.service.test.js +1 -1
  24. package/dist/src/services/__tests__/sparrow.service.test.js +1 -1
  25. package/dist/src/services/analysis.service.js +1 -1
  26. package/dist/src/services/checker.service.js +1 -1
  27. package/dist/src/services/llm/AnthropicProvider.js +1 -1
  28. package/dist/src/services/llm/BedrockProvider.js +1 -1
  29. package/dist/src/services/llm/GeminiProvider.js +1 -1
  30. package/dist/src/services/llm/LLMFactory.js +1 -1
  31. package/dist/src/services/llm/LLMProvider.js +1 -1
  32. package/dist/src/services/llm/OllamaProvider.js +1 -1
  33. package/dist/src/services/llm/OpenAIProvider.js +1 -1
  34. package/dist/src/services/llm.service.js +1 -1
  35. package/dist/src/services/s3.service.js +1 -1
  36. package/dist/src/services/sparrow.service.js +1 -1
  37. package/dist/src/types/types.js +1 -1
  38. package/dist/src/utils/__tests__/crypto.util.test.js +1 -1
  39. package/dist/src/utils/__tests__/diff.util.test.js +1 -1
  40. package/dist/src/utils/__tests__/fileManager.test.js +1 -1
  41. package/dist/src/utils/__tests__/fileManagerSecure.test.js +1 -1
  42. package/dist/src/utils/__tests__/logger.test.js +1 -1
  43. package/dist/src/utils/crypto.util.js +1 -1
  44. package/dist/src/utils/diff.util.js +1 -1
  45. package/dist/src/utils/fileManager.js +1 -1
  46. package/dist/src/utils/fileManagerSecure.js +1 -1
  47. package/dist/src/utils/logger.js +1 -1
  48. package/package.json +2 -1
@@ -1 +1 @@
1
- const a4_0x1b2549=a4_0x28e0;(function(_0x4693ea,_0x5e74ed){const _0x4307f0=a4_0x28e0,_0x352fea=_0x4693ea();while(!![]){try{const _0x1ae67a=-parseInt(_0x4307f0(0x203))/0x1*(-parseInt(_0x4307f0(0x253))/0x2)+-parseInt(_0x4307f0(0x308))/0x3+parseInt(_0x4307f0(0x1e3))/0x4+-parseInt(_0x4307f0(0x1df))/0x5+parseInt(_0x4307f0(0x3bb))/0x6+-parseInt(_0x4307f0(0x1ab))/0x7*(parseInt(_0x4307f0(0x362))/0x8)+parseInt(_0x4307f0(0x17d))/0x9*(parseInt(_0x4307f0(0x29b))/0xa);if(_0x1ae67a===_0x5e74ed)break;else _0x352fea['push'](_0x352fea['shift']());}catch(_0x51946a){_0x352fea['push'](_0x352fea['shift']());}}}(a4_0x4b31,0xef6b8));const a4_0x54a9d7=(function(){let _0x445f28=!![];return function(_0x4dc8ab,_0x5df3a1){const _0xab89a2=_0x445f28?function(){const _0x37e758=a4_0x28e0;if(_0x5df3a1){const _0x50d2d9=_0x5df3a1[_0x37e758(0x39c)](_0x4dc8ab,arguments);return _0x5df3a1=null,_0x50d2d9;}}:function(){};return _0x445f28=![],_0xab89a2;};}()),a4_0x405d5a=a4_0x54a9d7(this,function(){const _0x24e8aa=a4_0x28e0;return a4_0x405d5a[_0x24e8aa(0x390)]()[_0x24e8aa(0x30b)](_0x24e8aa(0x285)+'+$')[_0x24e8aa(0x390)]()[_0x24e8aa(0x1e9)+'r'](a4_0x405d5a)['search'](_0x24e8aa(0x285)+'+$');});a4_0x405d5a();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x40b54b from'fs';import a4_0x584873 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x584873['dirname'](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||a4_0x1b2549(0x3c8)+a4_0x1b2549(0x255)+a4_0x1b2549(0x176)+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8;function getAnalysisLink(_0x2461d3){const _0x1bfbad=a4_0x1b2549;return SPARROW_BASE_URL+('/ko/reques'+_0x1bfbad(0x321)+_0x1bfbad(0x283))+_0x2461d3;}async function pollUntilComplete(_0x3d2ce6,_0x4a4ba0){const _0x66b6b0=a4_0x1b2549;let _0x21a008=0x0;while(_0x21a008<MAX_POLL_ATTEMPTS){const _0x298702={};_0x298702[_0x66b6b0(0x3d5)]=_0x4a4ba0;const _0x3acf26={};_0x3acf26['name']=_0x66b6b0(0x367)+'is_status',_0x3acf26[_0x66b6b0(0x3e8)]=_0x298702;const _0x1fdb4b=await _0x3d2ce6[_0x66b6b0(0x2ef)](_0x66b6b0(0x209),_0x3acf26),_0x88a37b=String(_0x1fdb4b[_0x66b6b0(0x261)][0x0][_0x66b6b0(0x252)])[_0x66b6b0(0x334)+'e']();if(_0x88a37b['includes'](_0x66b6b0(0x1f8))||_0x88a37b[_0x66b6b0(0x290)](_0x66b6b0(0x2ad))||_0x88a37b[_0x66b6b0(0x290)](_0x66b6b0(0x39a))||_0x88a37b['includes'](_0x66b6b0(0x2b4))){const _0xeb6382={};return _0xeb6382['status']=_0x66b6b0(0x1f8),_0xeb6382[_0x66b6b0(0x33c)]=_0x1fdb4b[_0x66b6b0(0x261)][0x0][_0x66b6b0(0x252)],_0xeb6382;}await new Promise(_0x3570c1=>setTimeout(_0x3570c1,POLL_INTERVAL_MS)),_0x21a008++;}throw new Error(_0x66b6b0(0x3ec)+'meout\x20afte'+'r\x20'+_0x21a008+_0x66b6b0(0x1e5));}function a4_0x4b31(){const _0x9be745=['ith\x20ZIP\x20fi','러리만\x20사용','al\x20test\x20if','1.\x20분석\x20→\x20추적','.\x20Componen','\x20error','with\x20ZIP\x20f','le)','1.\x20안전한\x20라이브','전체\x20흐름\x20성공','TC025','alysisId\x20f','s\x20accepted','validation','match','로\x20코드\x20생성','Component\x20','rieved\x20suc','정상적으로\x20anal','Full\x20workf','ay\x20return\x20','1.\x201초\x20간격으로','T\x20분석\x20성공','TC019','\x20\x20\x20\x20public','th\x20secure\x20','node','public\x20cla','테스트명','1.\x20빈\x20배열\x20입력','fileName:\x20','TC041','xport\x20SPAR','ults','pped','\x20SAST\x20분석\x20성','nalysis\x20ve','MCP\x20서버:\x20','의존성\x20파일\x20없는\x20','ZIP\x20size\x20v','v:SPARROW_','track_anal','al\x20test\x20re','ling)','folderPath','GtgBp','여러\x20파일\x20SCA\x20','1.\x20코드\x20생성\x0a2','us:\x20','║\x20\x20\x20\x20\x20\x20\x20\x20\x20','TC009','request','vgTRT','not\x20availa','SCA\x20analys','AIL\x20handli','TC056','is_status','or\x20SCA','\x0a✅\x20MCP\x20서버\x20','이름,\x20버전,\x20라이','now','ss\x20UserCon','취약점\x20목록\x20반환','기대결과','분석\x20진행\x20추적\x20성','ss\x27);\x0acons','fileName에\x20','extract\x20an','로\x20입력','취약점\x20없는\x20분석\x20','TC049','n\x20포함','mAmNq','빈\x20파일\x20경로\x20배열','SCA','2131956gveEYn','btWCp','TC051','search','Unified\x20Di','id\x20code\x20an','Secure\x20cod','\x20생성:\x20SPARR','==========','very\x20verif','999999999','1.\x20JavaScr','\x20needed)','TC057','기\x0a2.\x20상태\x20확인','TC016','GYcgv','1.\x20의존성\x20파일\x20','quired\x20(cr','.\x20analysis','p_sast','TC042','fileName','id=\x22\x20+\x20use','Name에\x20.js\x20','tList/anal','rror','/nonexiste','ANALYSIS\x20단','quired\x20(ti','ndows:\x20$en','1.\x20fileCon','ped','파일명\x20입력\x0a2.\x20','get_sca_an','rned\x20as\x20ex','Client)\x20\x20\x20','1.\x20ZIP\x20파일\x20','\x20반환\x20또는\x20크기\x20','════╝\x0a','nt/file.ja','\x20생성','ser\x27,\x20(req','\x20MCP\x20-\x20자동화','toUpperCas','ified\x20(man','trkHz','quired\x20(si','-\x20skipped','단계별\x20알림\x20확인','details\x20ve','OW_API_KEY','result','30분\x20이상\x20소요\x20','t\x20handling','les_sast','Vulnerable','rified','\x20경로\x20입력\x0a2.\x20','1.\x20SCA\x20분석\x20','계\x20진행률\x20업데이트','\x20completed','Clean\x20code','1.\x20분석\x20시작\x0a2','PgXgB','filePath','est\x20recomm','push','TC052','ckage.json','\x20\x20\x201.\x20실행\x20폴','dependenci','zipFilePat','1.\x20LLM\x20서비스','ide\x20behavi','Test\x20files','cript\x20file','\x20ZIP\x20경로','제한\x20오류','1.\x20SCA\x20완료\x0a','start','filePaths','descriptio','rom\x20result','alidation\x20','analysisLi','Folder\x20SCA','1.\x20확장자\x20없는\x20','\x20정보','\x20반환\x0astatus','84248ZgKdGw','✅\x20테스트\x20완료','존재하지\x20않는\x20폴더','trieved:\x20','fnpth','get_analys','p-test-res','1.\x20분석\x20완료\x20대','ERROR:\x20','KyptU','담당자','meout\x20hand','for\x20','L\x20injectio','1.\x20빈\x20fileC','\x0a━━━━━━━━━','ectionASPN','d\x20(guide\x20t','성\x20시도','dBYil','ied\x20for\x20cl','Real\x20Execu','ied\x20(test\x20','rId;\x0a\x20\x20\x20\x20r','t\x20userId\x20=','ool\x20remove','상태\x20반환','로\x20배열\x20입력\x0a2.','지원\x20언어\x20확인\x20-','ity\x20detail','eate\x20packa','ng)','1.\x20대용량\x20ZIP','파일\x20경로\x20입력\x0a2','우선순위','as\x20accepte','폴더\x20경로\x20없음','lities.','\x20조회','task',']\x20Running:','1.\x20대용량\x20분석\x20','progress\x20값','경로\x20입력',']\x20ERROR\x20(','2.\x20도구\x20실행','toString','ng\x20verifie','1.\x20SPARROW','ROW_API_KE','단일\x20Java\x20파일','오류처리','preconditi','크플로우','ts:\x20','TC028','FAIL','Final\x20stat','apply','Diff\x20형식\x20확인','index.js','ETTest.asp','╔═════════','sername,\x20S','set\x20SPARRO','══════════','lities','\x0a2.\x20도구\x20실행','s\x20retrieva','시\x20기본값','jmNJW','분석\x20성공','TC033','IPxTX','⚠️\x20\x20경고:\x20SPA','TC037','확장자\x20사용','단계별\x20알림','\x20for\x20JavaS','1.\x20폴더에서\x20자동','TC030','\x20진행률\x20확인','join','Test\x20file\x20','분석\x0a2.\x20결과\x20조','all_langua','category','nual\x20test\x20','quired:\x20un','2049738hhvoJF','존재하지\x20않는\x20파일','NullReturn','.java','r\x20containi','lder_sast','pOJsT','sast','ble\x20-\x20skip','lysisId','TC029','cwd','EY가\x20설정되지\x20않','https://on','verified\x20f','드\x20생성','ess','1.\x20빈\x20경로\x20입력','ncy\x20projec','analyze_zi','passed','.\x20세부정보\x20확인','취약점\x20정보\x20확인','tatus\x20retu','ZIP\x20크기\x20검증\x20','0개\x20컴포넌트\x20또는','analysisId','Test\x20folde','QOZZO','ified','priority','test\x20recom','trim','rror\x20but\x20a','nalysis\x20wa','TC054','1.\x20진행\x20추적\x20시','TC036','TC005','ZkZuX','ed:\x20','TC024','lder_sca','cked\x20for\x20','\x20테스트\x20(MCP\x20','arguments','1.\x20대용량\x20폴더\x20','완료된\x20분석\x20결과\x20','미완료\x20분석\x20결과\x20','Polling\x20ti','\x20도구\x20실행','length','rified\x20(ma','1.\x20실패한\x20분석\x20','rified\x20(MC','\x20returned','TC035','정상\x20동작','writeFileS','find','TC055','\x20코드\x20입력\x0a2.\x20','../../..','KGRiN','LLM\x20서비스\x20장애','기본\x20가이드\x20반환','n(String\x20u','단일\x20파일\x20분석\x20(','er\x20ZIP\x20cre','ailure)','t:\x20Java\x20co','TC044','\x20FROM\x20user','판단근거','.json)','INIT\x20→\x20REA','TC059','Content','rrowcloud.','TC002','1.\x20컴포넌트\x20목록','quired\x20(su','더에\x20.env\x20파일','on\x20verifie','replace','17541ygoxVv','\x20=\x20\x22SELECT','배열\x201개)','is_results','ended)','alysis\x20ver','.\x20즉시\x20결과\x20조회','les_sca','\x20파일','ecure_code','미완료\x20분석으로\x20코','\x20SCA','\x20\x20\x20\x20\x20\x20Stri','TC001','rval\x20polli','cted',':\x20INIT','분석\x0a2.\x20코드\x20생','tring\x20pass','y\x22\x0a','ller.java\x20','le_sca','.\x20도구\x20실행','alysis_res','ile)','es.send(qu','\x20void\x20logi','Tested\x20-\x20m','fied\x20(manu','1.\x20분석\x20완료\x0a2','t\x20verified','sGBHA','N/A\x20-\x20Manu','cessfully\x20','ire(\x27expre','de\x20with\x20SQ','generate_s','\x20확인','\x20+\x20\x22\x27\x22;\x0a\x20\x20','racking\x20ve','d\x20(manual\x20','TC004','1.\x20존재하지\x20않는','nt/folder','readFileSy','\x20validatio','931hJiZBT','Test.java','TC053','TC015','=\x20병렬\x20실행\x20시작','Status\x20che','fileConten','빈\x20파일\x20내용\x20분석','CommandInj','━━━━━━━━━━','1.\x20취약점\x20목록\x20','procedure','통합테스트','\x20반환','TC032','E2E','ults.tsv','\x22index.js\x22','existsSync','TC020','\x20req.query','ZIP\x20파일\x20SAS','분석\x20실패\x20상태\x20조','1.\x20취약점\x20없는\x20','A\x20분석\x20조회','Hello\x20Worl','Error\x20hand','lable\x20-\x20sk','.\x20진행\x20추적','TC011','=your-key','toFixed','message','ername=\x27\x22\x20','r\x20not\x20avai','스\x20사용','tc/big_fil','\x20\x20}\x0a}','Error\x20dete','ean\x20code','1.\x20결과\x20조회\x0a2','rror\x20but\x20w','로\x20가이드\x20요청','package.js','alysis\x20acc','resolve','ling\x20verif','대용량\x20ZIP\x20파일','src','TC047','최대\x20대기\x20시간:\x20','mended)','7011570mNxBLe','\x20심각도\x20정보','TC045','1.\x20여러\x20파일\x20경','6514452weeGlm','╚═════════','\x20attempts','nt.zip','le_sast','TC034','constructo','UserContro','sis\x20','n:\x20','완료된\x20분석\x20상태\x20','여러\x20파일\x20전체\x20워','readme.txt','TC022','ied\x20(MCP):','1.\x20잘못된\x20ID로','\x20E2E\x20verif','tion\x20Verif','ng\x20package','\x20\x22SELECT\x20*','오류\x20메시지\x20반환','COMPLETE','ied','\x20증가','verified','Expected\x20e','No-depende','ng\x20query\x20=','ZIP\x20파일\x20없음','RROW_API_K','폴더\x20전체\x20SCA\x20','able\x20-\x20ski','49EFIBTQ','도구\x20실행','TC043','오류\x20메시지','\x20\x20\x20실패:\x20','bhtUs','tools/call','\x20병렬\x20실행\x20완료\x20','DY\x20→\x20PRE_P','설정\x0a2.\x20도구\x20실','nux/Mac:\x20e','내장\x20테스트\x20케이스','t\x20app\x20=\x20ex','ual\x20test\x20w','lMVmg','컴포넌트\x20및\x20취약점','\x20\x20\x202.\x20환경변수','경계조건','\x20JavaScrip','r\x20.txt\x20fil','P):\x20Multi-','MCP\x20자동\x20테스트','+\x20username','TC023','pdates\x20ver','석\x20→\x20결과','ontent\x20입력','.\x20diff\x20필드\x20','.\x20상태\x20조회로\x20진','GGzaa','is\x20','Diff\x20forma','ZIP\x20SCA\x20an','rned:\x20','all','SKOgs',',\x20res)\x20=>\x20','es)','y\x20or\x20error','rationale','structured','개만\x20배열에\x20입력\x0a','\x22your-key\x22','name','Status\x20ret','s\x20WHERE\x20us','...','Empty.java','.\x20Found\x20','AccessCont','구\x20실행','API\x20키\x20없음\x20오','개\x20TC)\x20====','m\x20array\x20an','\x0a2.\x20코드\x20생성\x20','Auto-disco','지원하지\x20않는\x20언어','NALYSIS\x20→\x20','-files/qa_','ied\x20for\x20in','오류\x20또는\x20경고','status','TC021','word)\x20{\x0a\x20\x20','미완료\x20SCA\x20분석','ysis_progr','data','TC007','s\x20verified','utf-8','exit','yarnpkg/pa','TC046','.\x20결과\x20조회','Default\x20gu','TC017','확장자\x20없는\x20파일명','analysis\x20','프로젝트','text','24902YdZCmy','s):','demand.spa','Error\x20retu','values','\x0a2.\x20결과\x20조회','filter','\x20경로','취약점\x20없는\x20오픈소','\x20→\x20결과\x20→\x20코드','onst\x20query','취약점\x20없는\x20분석으','\x20initiated','_API_KEY\x20미','content','or\x20verifie','\x20*\x20FROM\x20us','ipped','\x20Analysis\x20','력\x0a2.\x20도구\x20실행','존재하지\x20않는\x20분석','════╗','TC040','\x0a📄\x20결과\x20저장:\x20','\x20(manual\x20t','Multi-file','YlWpH','ers\x20WHERE\x20','1.\x20폴더\x20경로\x20입','\x20\x20\x20\x20\x20\x20-\x20Wi','S\x20단계\x20진입\x0a2.','\x20시작\x0a','baDyU','SCA\x20result','on\x20SCA\x20분석','CVE,\x20CVSS,','bmit\x20inval','1.\x20.txt\x20파일','FAIL\x20상태\x20처리','isError','.json\x20파일\x20경','p_sca','TC008','map','행률\x20확인','toLowerCas','analyze_fi','1.\x20ANALYSI','ysis/','es/binary_','(((.+)+)+)','TC018','타임아웃\x20처리','\x20오류','.id;\x0a\x20\x20\x20\x20c','ing\x20return','ller','d\x20verify\x20F','\x20\x20\x20\x20\x20\x20-\x20Li','\x20ID','RfHBe','includes','테스트분류','취약점\x200개','Single-ite','\x20또는\x20크기\x20오류','1.\x20여러\x20의존성\x20','정상동작','error','았습니다.','짧은\x20확인\x20간격\x20(','ery);\x0a});','9820uPzRmv','ZIP\x20파일\x20없음\x20','\x20분석\x20성공','\x20ID\x20추적','TC039','TC031','log','\x20직접\x20설정:','✅\x20MCP\x20서버\x20연','TC006','안전한\x20코드\x20생성\x20','/타임아웃','\x20SCA\x20handl','warn','rFBeZ','rned','으로\x20의존성\x20파일\x20','폴더\x20전체\x20SAST','SUCCESS','ge.json\x20wi','../../test','TC010','입력\x0a3.\x20도구\x20실','tc.zip','Size\x20limit','STOP','분석\x20링크','e\x20or\x20error','TC050','테스트ID','analyze_fo','press();\x0aa','API_KEY\x20=\x20'];a4_0x4b31=function(){return _0x9be745;};return a4_0x4b31();}function isErrorResponse(_0x37e360){const _0xaa82c6=a4_0x1b2549,_0x397359={};_0x397359[_0xaa82c6(0x273)]=function(_0x356231,_0x135a72){return _0x356231===_0x135a72;},_0x397359[_0xaa82c6(0x208)]=_0xaa82c6(0x297);const _0x113d5d=_0x397359;if(_0x113d5d['baDyU'](_0x37e360[_0xaa82c6(0x27a)],!![]))return!![];if(_0x37e360['structured'+_0xaa82c6(0x408)]?.[_0xaa82c6(0x297)])return!![];const _0x137307=_0x37e360[_0xaa82c6(0x261)]?.[0x0]?.[_0xaa82c6(0x252)]?.[_0xaa82c6(0x280)+'e']()||'';return _0x137307[_0xaa82c6(0x290)](_0x113d5d[_0xaa82c6(0x208)])||_0x137307['includes'](_0xaa82c6(0x2c9));}function escapeTsvField(_0x56215f,_0x198bc9=![]){const _0x157a08=a4_0x1b2549;if(!_0x56215f)return'\x22\x22';let _0xcb5ba9=_0x56215f;return _0x198bc9?(_0xcb5ba9=_0xcb5ba9['replace'](/\r\n/g,'\x0a'),_0xcb5ba9=_0xcb5ba9[_0x157a08(0x17c)](/\t/g,'\x20')):(_0xcb5ba9=_0xcb5ba9['replace'](/\r?\n/g,'\x20'),_0xcb5ba9=_0xcb5ba9[_0x157a08(0x17c)](/\t/g,'\x20'),_0xcb5ba9=_0xcb5ba9[_0x157a08(0x17c)](/\s+/g,'\x20'),_0xcb5ba9=_0xcb5ba9[_0x157a08(0x3db)]()),_0xcb5ba9=_0xcb5ba9[_0x157a08(0x17c)](/"/g,'\x22\x22'),'\x22'+_0xcb5ba9+'\x22';}function saveTsv(_0x3215c6,_0x225372){const _0x1bb047=a4_0x1b2549,_0x38164b={};_0x38164b[_0x1bb047(0x366)]=function(_0x53c751,_0x14b7d2){return _0x53c751-_0x14b7d2;},_0x38164b['jmNJW']=_0x1bb047(0x2d8);const _0x3cbbb9=_0x38164b,_0x3581eb=[_0x1bb047(0x2b8),'도구명',_0x1bb047(0x291),_0x3cbbb9[_0x1bb047(0x3a8)],'사전조건','테스트절차',_0x1bb047(0x2fc),'테스트데이터',_0x1bb047(0x384),'상태',_0x1bb047(0x36c),'결과',_0x1bb047(0x404),_0x1bb047(0x2b5),'비고'],_0x149c59=[_0x3581eb[_0x1bb047(0x27e)](_0x31af05=>escapeTsvField(_0x31af05))[_0x1bb047(0x3b4)]('\x09')],_0x3ff3aa=Object['entries'](_0x3215c6)['sort']((_0x408a5b,_0x5e8550)=>{const _0x5b888d=_0x1bb047,_0x1d4b0a=parseInt(_0x408a5b[0x0][_0x5b888d(0x17c)]('TC','')),_0x3ca851=parseInt(_0x5e8550[0x0]['replace']('TC',''));return _0x3cbbb9[_0x5b888d(0x366)](_0x1d4b0a,_0x3ca851);});for(const [_0x2f9363,_0x10f324]of _0x3ff3aa){const _0x8d40c6=BUILTIN_TESTS[_0x1bb047(0x3f6)](_0xabf94b=>_0xabf94b['id']===_0x2f9363);if(!_0x8d40c6)continue;const _0x5a19b6=[_0x2f9363,_0x8d40c6['tool'],_0x8d40c6[_0x1bb047(0x3b8)],_0x8d40c6['name'],_0x8d40c6[_0x1bb047(0x396)+'on']||'',_0x8d40c6[_0x1bb047(0x1b6)],_0x8d40c6['expected'],_0x8d40c6[_0x1bb047(0x245)]||'',_0x8d40c6[_0x1bb047(0x3d9)],'완료','Antigravit'+'y',_0x10f324[_0x1bb047(0x240)],_0x10f324['rationale'],_0x10f324[_0x1bb047(0x35d)+'nk']||'',''];_0x149c59[_0x1bb047(0x34b)](_0x5a19b6['map']((_0x327d45,_0x2cc306)=>escapeTsvField(_0x327d45,_0x2cc306===0x5))[_0x1bb047(0x3b4)]('\x09'));}a4_0x40b54b[_0x1bb047(0x3f5)+'ync'](_0x225372,_0x149c59[_0x1bb047(0x3b4)]('\x0a'),_0x1bb047(0x248));}const qaTcDir=a4_0x584873[a4_0x1b2549(0x1d8)](__dirname,'../../test'+a4_0x1b2549(0x23d)+'tc'),sastDir=a4_0x584873[a4_0x1b2549(0x1d8)](qaTcDir,a4_0x1b2549(0x3c2)),scaDir=a4_0x584873[a4_0x1b2549(0x1d8)](qaTcDir,'sca'),sastAllLanguageDir=a4_0x584873[a4_0x1b2549(0x1d8)](sastDir,a4_0x1b2549(0x3b7)+'ge'),javaFile=a4_0x584873[a4_0x1b2549(0x1d8)](sastAllLanguageDir,a4_0x1b2549(0x3bd)+a4_0x1b2549(0x3be)),jsFile=a4_0x584873[a4_0x1b2549(0x1d8)](sastAllLanguageDir,a4_0x1b2549(0x234)+'rolAzure.j'+'s'),safeJavaFile=a4_0x584873[a4_0x1b2549(0x1d8)](sastAllLanguageDir,a4_0x1b2549(0x1b3)+a4_0x1b2549(0x372)+a4_0x1b2549(0x39f)+'x'),javaContent=a4_0x40b54b['existsSync'](javaFile)?a4_0x40b54b[a4_0x1b2549(0x1a9)+'nc'](javaFile,a4_0x1b2549(0x248)):'',jsContent=a4_0x40b54b[a4_0x1b2549(0x1bd)](jsFile)?a4_0x40b54b[a4_0x1b2549(0x1a9)+'nc'](jsFile,'utf-8'):'',safeJavaContent=a4_0x40b54b[a4_0x1b2549(0x1bd)](safeJavaFile)?a4_0x40b54b[a4_0x1b2549(0x1a9)+'nc'](safeJavaFile,a4_0x1b2549(0x248)):'',packageJsonFile=a4_0x584873['resolve'](scaDir,a4_0x1b2549(0x24a)+a4_0x1b2549(0x34d)),packageJsonContent=a4_0x40b54b[a4_0x1b2549(0x1bd)](packageJsonFile)?a4_0x40b54b[a4_0x1b2549(0x1a9)+'nc'](packageJsonFile,a4_0x1b2549(0x248)):'',testFilesDir=sastAllLanguageDir,BUILTIN_JAVA_CODE=a4_0x1b2549(0x2d7)+a4_0x1b2549(0x2fa)+'troller\x20{\x0a'+a4_0x1b2549(0x2d4)+a4_0x1b2549(0x197)+a4_0x1b2549(0x3fd)+a4_0x1b2549(0x3a1)+a4_0x1b2549(0x18f)+a4_0x1b2549(0x242)+a4_0x1b2549(0x189)+a4_0x1b2549(0x1fe)+a4_0x1b2549(0x1f6)+a4_0x1b2549(0x403)+a4_0x1b2549(0x230)+a4_0x1b2549(0x1cc)+a4_0x1b2549(0x219)+a4_0x1b2549(0x1a3)+a4_0x1b2549(0x1d0),BUILTIN_JS_CODE='const\x20expr'+'ess\x20=\x20requ'+a4_0x1b2549(0x19f)+a4_0x1b2549(0x2fe)+a4_0x1b2549(0x20f)+a4_0x1b2549(0x2ba)+'pp.get(\x27/u'+a4_0x1b2549(0x332)+a4_0x1b2549(0x227)+'{\x0a\x20\x20\x20\x20cons'+a4_0x1b2549(0x37a)+a4_0x1b2549(0x1bf)+a4_0x1b2549(0x289)+a4_0x1b2549(0x25d)+a4_0x1b2549(0x17e)+a4_0x1b2549(0x263)+a4_0x1b2549(0x26e)+a4_0x1b2549(0x31f)+a4_0x1b2549(0x379)+a4_0x1b2549(0x196)+a4_0x1b2549(0x29a);function a4_0x28e0(_0x51c877,_0x5975f1){_0x51c877=_0x51c877-0x176;const _0x3e8edb=a4_0x4b31();let _0x405d5a=_0x3e8edb[_0x51c877];return _0x405d5a;}function extractAnalysisId(_0x38cd6c){const _0x2f87fe=a4_0x1b2549;if(_0x38cd6c[_0x2f87fe(0x22b)+_0x2f87fe(0x408)]&&_0x38cd6c['structured'+_0x2f87fe(0x408)]['analysisId'])return String(_0x38cd6c[_0x2f87fe(0x22b)+_0x2f87fe(0x408)]['analysisId']);const _0x5a5b68=_0x38cd6c['content'][0x0][_0x2f87fe(0x252)],_0x5317c8=_0x5a5b68[_0x2f87fe(0x2ca)](/Analysis ID:\s*(\d+)/i)||_0x5a5b68[_0x2f87fe(0x2ca)](/분석 ID:\s*(\d+)/i);if(!_0x5317c8)throw new Error('Failed\x20to\x20'+_0x2f87fe(0x300)+_0x2f87fe(0x2c7)+_0x2f87fe(0x35b)+':\x20'+_0x5a5b68);return _0x5317c8[0x1];}const BUILTIN_TESTS=[{'id':a4_0x1b2549(0x18a),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x1e7),'category':'정상동작','name':a4_0x1b2549(0x394)+a4_0x1b2549(0x2df)+'공','procedure':a4_0x1b2549(0x327)+'tent에\x20Java'+a4_0x1b2549(0x3f8)+a4_0x1b2549(0x2ff)+a4_0x1b2549(0x1ea)+a4_0x1b2549(0x191)+a4_0x1b2549(0x2b1)+'행','expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x361)+a4_0x1b2549(0x18d),'data':a4_0x1b2549(0x1b1)+a4_0x1b2549(0x401)+a4_0x1b2549(0x1a0)+a4_0x1b2549(0x36f)+'n','priority':'높음','task':async _0x2b7f71=>{const _0x220af1=a4_0x1b2549,_0x2854e0={'vgTRT':function(_0x1a8a87,_0x32811f){return _0x1a8a87(_0x32811f);}},_0x279ab9=javaContent||BUILTIN_JAVA_CODE,_0xfea6d9={};_0xfea6d9[_0x220af1(0x1b1)+'t']=_0x279ab9,_0xfea6d9[_0x220af1(0x31e)]=_0x220af1(0x340)+_0x220af1(0x3be);const _0x4bb7a3={};_0x4bb7a3['name']=_0x220af1(0x281)+_0x220af1(0x1e7),_0x4bb7a3[_0x220af1(0x3e8)]=_0xfea6d9;const _0x436074=await _0x2b7f71[_0x220af1(0x2ef)](_0x220af1(0x209),_0x4bb7a3),_0x542a71=_0x2854e0[_0x220af1(0x2f0)](extractAnalysisId,_0x436074);await pollUntilComplete(_0x2b7f71,_0x542a71);const _0x3f7ba0={};_0x3f7ba0['analysisId']=_0x542a71;const _0x1ea957={};_0x1ea957[_0x220af1(0x22e)]='get_analys'+_0x220af1(0x180),_0x1ea957[_0x220af1(0x3e8)]=_0x3f7ba0;const _0x39e01a=await _0x2b7f71[_0x220af1(0x2ef)](_0x220af1(0x209),_0x1ea957),_0xdc4d21=_0x39e01a[_0x220af1(0x261)][0x0][_0x220af1(0x252)],_0x38254b=_0xdc4d21['match'](/(\d+)\s*vulnerabilities/i),_0x4f536b=_0x38254b?_0x38254b[0x1]:'0';return{'passed':!![],'rationale':'Real\x20Execu'+_0x220af1(0x1f4)+_0x220af1(0x1f1)+'\x20Analysis\x20'+_0x542a71+(_0x220af1(0x345)+_0x220af1(0x233))+_0x4f536b+('\x20vulnerabi'+_0x220af1(0x387)),'analysisLink':getAnalysisLink(_0x542a71)};}},{'id':a4_0x1b2549(0x177),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x1e7),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x236)+'류','procedure':a4_0x1b2549(0x392)+a4_0x1b2549(0x260)+a4_0x1b2549(0x20c)+'행','expected':a4_0x1b2549(0x1f7),'priority':'높음','task':async _0x482a27=>{const _0x121d3b=a4_0x1b2549,_0x2d45ed={};return _0x2d45ed[_0x121d3b(0x3cf)]=!![],_0x2d45ed[_0x121d3b(0x22a)]=_0x121d3b(0x19d)+_0x121d3b(0x2e6)+_0x121d3b(0x3ba)+_0x121d3b(0x3a2)+'W_API_KEY\x20'+'and\x20verify'+_0x121d3b(0x2c1),_0x2d45ed;}},{'id':a4_0x1b2549(0x1a6),'tool':'analyze_fi'+a4_0x1b2549(0x1e7),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x37e)+a4_0x1b2549(0x215)+'t','procedure':a4_0x1b2549(0x313)+'ipt\x20파일\x20내용\x20'+'입력\x0a2.\x20file'+a4_0x1b2549(0x320)+a4_0x1b2549(0x3ae),'expected':a4_0x1b2549(0x2ce)+'ysisId\x20반환','data':a4_0x1b2549(0x2da)+a4_0x1b2549(0x1bc),'priority':'중간','task':async _0x5b5a24=>{const _0x163cad=a4_0x1b2549,_0x1ca1bd={};_0x1ca1bd['thyKO']=function(_0x5dfdaa,_0x48a18e){return _0x5dfdaa||_0x48a18e;};const _0x1e2b20=_0x1ca1bd,_0x2b35eb=_0x1e2b20['thyKO'](jsContent,BUILTIN_JS_CODE),_0x40617a={};_0x40617a[_0x163cad(0x1b1)+'t']=_0x2b35eb,_0x40617a['fileName']=_0x163cad(0x39e);const _0x32ac2d={};_0x32ac2d[_0x163cad(0x22e)]='analyze_fi'+'le_sast',_0x32ac2d[_0x163cad(0x3e8)]=_0x40617a;const _0x396277=await _0x5b5a24[_0x163cad(0x2ef)]('tools/call',_0x32ac2d),_0xb9a9fa=extractAnalysisId(_0x396277);return{'passed':!![],'rationale':_0x163cad(0x377)+_0x163cad(0x1f4)+_0x163cad(0x1f1)+_0x163cad(0x265)+_0xb9a9fa+(_0x163cad(0x25f)+_0x163cad(0x3b0)+_0x163cad(0x354)+'.'),'analysisLink':getAnalysisLink(_0xb9a9fa)};}},{'id':a4_0x1b2549(0x3e1),'tool':a4_0x1b2549(0x281)+'le_sast','category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x24f),'procedure':a4_0x1b2549(0x35f)+a4_0x1b2549(0x329)+a4_0x1b2549(0x204),'expected':a4_0x1b2549(0x1f7),'priority':'낮음','task':async _0x4b96b4=>{const _0x3a8d79=a4_0x1b2549,_0x6c357f={};_0x6c357f[_0x3a8d79(0x3fa)]=_0x3a8d79(0x1ea)+_0x3a8d79(0x28b),_0x6c357f[_0x3a8d79(0x3d7)]='error';const _0xc73150=_0x6c357f,_0x43401c={};_0x43401c[_0x3a8d79(0x1b1)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x43401c[_0x3a8d79(0x31e)]=_0xc73150[_0x3a8d79(0x3fa)];const _0x124cf8={};_0x124cf8[_0x3a8d79(0x22e)]=_0x3a8d79(0x281)+_0x3a8d79(0x1e7),_0x124cf8[_0x3a8d79(0x3e8)]=_0x43401c;const _0x2478fe=await _0x4b96b4[_0x3a8d79(0x2ef)]('tools/call',_0x124cf8);if(_0x2478fe[_0x3a8d79(0x27a)]||_0x2478fe['content']?.[0x0]?.['text']?.['includes'](_0xc73150[_0x3a8d79(0x3d7)])){const _0x226bc5={};return _0x226bc5[_0x3a8d79(0x3cf)]=!![],_0x226bc5[_0x3a8d79(0x22a)]=_0x3a8d79(0x256)+_0x3a8d79(0x32b)+'pected:\x20'+(_0x2478fe['content']?.[0x0]?.['text']||_0x3a8d79(0x1d1)+_0x3a8d79(0x18c)),_0x226bc5;}const _0x24cdc3={};return _0x24cdc3[_0x3a8d79(0x3cf)]=![],_0x24cdc3['rationale']='Expected\x20e'+_0x3a8d79(0x3dc)+_0x3a8d79(0x3dd)+_0x3a8d79(0x2c8),_0x24cdc3;}},{'id':a4_0x1b2549(0x2a4),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x33f),'category':'정상동작','name':'여러\x20파일\x20SAST'+a4_0x1b2549(0x29d),'procedure':a4_0x1b2549(0x1e2)+a4_0x1b2549(0x37d)+a4_0x1b2549(0x3ed),'expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x1b8),'priority':'높음','task':async _0x189558=>{const _0x27d950=a4_0x1b2549,_0x13824b={'GGzaa':function(_0x504377,_0x243cdc){return _0x504377(_0x243cdc);}};if(!javaContent||!jsContent){const _0xbe4f8e={};return _0xbe4f8e[_0x27d950(0x3cf)]=!![],_0xbe4f8e[_0x27d950(0x22a)]=_0x27d950(0x353)+'\x20not\x20avail'+_0x27d950(0x202)+_0x27d950(0x2de),_0xbe4f8e;}const _0x1036de={};_0x1036de[_0x27d950(0x359)]=[javaFile,jsFile];const _0x23ad65={};_0x23ad65[_0x27d950(0x22e)]=_0x27d950(0x281)+'les_sast',_0x23ad65[_0x27d950(0x3e8)]=_0x1036de;const _0xc5ef45=await _0x189558['request'](_0x27d950(0x209),_0x23ad65),_0xbb014d=_0x13824b[_0x27d950(0x220)](extractAnalysisId,_0xc5ef45);return await pollUntilComplete(_0x189558,_0xbb014d),{'passed':!![],'rationale':'Real\x20Ex\x20Ve'+_0x27d950(0x3f1)+_0x27d950(0x217)+'file\x20analy'+_0x27d950(0x1eb)+_0xbb014d+(_0x27d950(0x345)+'.'),'analysisLink':getAnalysisLink(_0xbb014d)};}},{'id':a4_0x1b2549(0x246),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x33f),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x306),'procedure':a4_0x1b2549(0x2d9)+a4_0x1b2549(0x3a5),'expected':a4_0x1b2549(0x1f7),'priority':'중간','task':async _0x1391f0=>{const _0x4e66fb=a4_0x1b2549,_0x1389bc={};_0x1389bc[_0x4e66fb(0x26d)]='\x20\x20\x20설정\x20방법:',_0x1389bc[_0x4e66fb(0x2a9)]=_0x4e66fb(0x281)+_0x4e66fb(0x33f);const _0x5c5348=_0x1389bc,_0x5cebac={};_0x5cebac['filePaths']=[];const _0x23b5cc={};_0x23b5cc[_0x4e66fb(0x22e)]=_0x5c5348[_0x4e66fb(0x2a9)],_0x23b5cc['arguments']=_0x5cebac;const _0x699869=await _0x1391f0['request']('tools/call',_0x23b5cc);if(isErrorResponse(_0x699869)){if(_0x4e66fb(0x305)==='mAmNq'){const _0x34e295={};return _0x34e295[_0x4e66fb(0x3cf)]=!![],_0x34e295[_0x4e66fb(0x22a)]='Error\x20retu'+_0x4e66fb(0x224)+(_0x699869[_0x4e66fb(0x261)]?.[0x0]?.[_0x4e66fb(0x252)]||_0x4e66fb(0x1d1)+'cted'),_0x34e295;}else _0x4fa6dd[_0x4e66fb(0x2a8)](_0x4e66fb(0x3ac)+_0x4e66fb(0x200)+_0x4e66fb(0x3c7)+_0x4e66fb(0x298)),_0x2c24a5[_0x4e66fb(0x2a8)](_0x5c5348[_0x4e66fb(0x26d)]),_0x559cf3[_0x4e66fb(0x2a8)](_0x4e66fb(0x34e)+'더에\x20.env\x20파일'+_0x4e66fb(0x30f)+_0x4e66fb(0x33b)+_0x4e66fb(0x1c9)),_0x2cf8bf['warn'](_0x4e66fb(0x213)+_0x4e66fb(0x2a2)),_0x5f2691[_0x4e66fb(0x2a8)](_0x4e66fb(0x270)+_0x4e66fb(0x326)+_0x4e66fb(0x2e4)+_0x4e66fb(0x2bb)+'\x22your-key\x22'),_0x31b34c[_0x4e66fb(0x2a8)](_0x4e66fb(0x28d)+_0x4e66fb(0x20d)+_0x4e66fb(0x2dc)+_0x4e66fb(0x393)+'Y=\x22your-ke'+_0x4e66fb(0x190));}const _0x2413e7={};return _0x2413e7['passed']=![],_0x2413e7[_0x4e66fb(0x22a)]='Expected\x20e'+_0x4e66fb(0x1d4)+_0x4e66fb(0x385)+'d',_0x2413e7;}},{'id':a4_0x1b2549(0x27d),'tool':a4_0x1b2549(0x281)+'les_sast','category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x3bc)+a4_0x1b2549(0x25a),'procedure':a4_0x1b2549(0x1a7)+a4_0x1b2549(0x342)+a4_0x1b2549(0x204),'expected':a4_0x1b2549(0x1f7),'priority':'중간','task':async _0xca62c1=>{const _0x4abab1=a4_0x1b2549,_0x27adbd={};_0x27adbd[_0x4abab1(0x336)]=_0x4abab1(0x323)+_0x4abab1(0x330)+'va';const _0x1a623c=_0x27adbd,_0xbb2df4={};_0xbb2df4[_0x4abab1(0x359)]=[_0x1a623c[_0x4abab1(0x336)]];const _0x5579c8={};_0x5579c8[_0x4abab1(0x22e)]='analyze_fi'+'les_sast',_0x5579c8[_0x4abab1(0x3e8)]=_0xbb2df4;const _0x363002=await _0xca62c1[_0x4abab1(0x2ef)](_0x4abab1(0x209),_0x5579c8);if(isErrorResponse(_0x363002)){const _0x3130a5={};return _0x3130a5[_0x4abab1(0x3cf)]=!![],_0x3130a5[_0x4abab1(0x22a)]=_0x4abab1(0x256)+'rned:\x20'+(_0x363002[_0x4abab1(0x261)]?.[0x0]?.[_0x4abab1(0x252)]||'Error\x20dete'+_0x4abab1(0x18c)),_0x3130a5;}const _0x321841={};return _0x321841['passed']=![],_0x321841[_0x4abab1(0x22a)]=_0x4abab1(0x1fc)+'rror\x20but\x20w'+_0x4abab1(0x385)+'d',_0x321841;}},{'id':a4_0x1b2549(0x2ee),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x33f),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x3fe)+a4_0x1b2549(0x17f),'procedure':'1.\x20파일\x20경로\x201'+a4_0x1b2549(0x22c)+a4_0x1b2549(0x38f),'expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x1b8),'priority':'낮음','task':async _0x4afdba=>{const _0x27e2a6=a4_0x1b2549;if(!javaContent){const _0x23a3ee={};return _0x23a3ee[_0x27e2a6(0x3cf)]=!![],_0x23a3ee['rationale']=_0x27e2a6(0x3b5)+_0x27e2a6(0x2f1)+_0x27e2a6(0x3c3)+_0x27e2a6(0x328),_0x23a3ee;}const _0x48d50b={};_0x48d50b[_0x27e2a6(0x359)]=[javaFile];const _0x2c98c6={};_0x2c98c6[_0x27e2a6(0x22e)]=_0x27e2a6(0x281)+_0x27e2a6(0x33f),_0x2c98c6[_0x27e2a6(0x3e8)]=_0x48d50b;const _0x465b14=await _0x4afdba['request'](_0x27e2a6(0x209),_0x2c98c6),_0x2cf940=extractAnalysisId(_0x465b14);return{'passed':!![],'rationale':_0x27e2a6(0x293)+_0x27e2a6(0x238)+_0x27e2a6(0x1d7)+'epted.\x20ID:'+'\x20'+_0x2cf940,'analysisLink':getAnalysisLink(_0x2cf940)};}},{'id':a4_0x1b2549(0x2b0),'tool':'analyze_zi'+a4_0x1b2549(0x31c),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x1da)+'\x20분석','procedure':a4_0x1b2549(0x382)+'\x20파일\x20경로\x20입력\x0a'+a4_0x1b2549(0x38f),'expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x32e)+a4_0x1b2549(0x356),'priority':'중간','task':async _0x5e0d2c=>{const _0xb35f11=a4_0x1b2549,_0x5f558d=a4_0x584873[_0xb35f11(0x1d8)](__dirname,_0xb35f11(0x2af)+_0xb35f11(0x23d)+_0xb35f11(0x1cf)+_0xb35f11(0x284)+_0xb35f11(0x2b2));if(!a4_0x40b54b[_0xb35f11(0x1bd)](_0x5f558d)){const _0x1e5a26={};return _0x1e5a26[_0xb35f11(0x3cf)]=!![],_0x1e5a26[_0xb35f11(0x22a)]=_0xb35f11(0x3b5)+'not\x20found\x20'+_0xb35f11(0x338),_0x1e5a26;}try{if('SKOgs'!==_0xb35f11(0x226)){const _0x214617={};return _0x214617[_0xb35f11(0x3cf)]=!![],_0x214617['rationale']=_0xb35f11(0x3d6)+_0xb35f11(0x1cd)+_0xb35f11(0x1c6)+_0xb35f11(0x264),_0x214617;}else{const _0x436b43={};_0x436b43[_0xb35f11(0x350)+'h']=_0x5f558d;const _0x8b206c={};_0x8b206c[_0xb35f11(0x22e)]=_0xb35f11(0x3ce)+'p_sast',_0x8b206c[_0xb35f11(0x3e8)]=_0x436b43;const _0x2292c4=await _0x5e0d2c[_0xb35f11(0x2ef)](_0xb35f11(0x209),_0x8b206c),_0x5fc473=extractAnalysisId(_0x2292c4);return await pollUntilComplete(_0x5e0d2c,_0x5fc473),{'passed':!![],'rationale':'Large\x20ZIP\x20'+_0xb35f11(0x250)+_0x5fc473+(_0xb35f11(0x345)+'.'),'analysisLink':getAnalysisLink(_0x5fc473)};}}catch(_0x1577d0){const _0x369cb6={};return _0x369cb6[_0xb35f11(0x3cf)]=!![],_0x369cb6[_0xb35f11(0x22a)]=_0xb35f11(0x2b3)+_0xb35f11(0x1aa)+_0xb35f11(0x1ec)+_0x1577d0[_0xb35f11(0x1cb)],_0x369cb6;}}},{'id':a4_0x1b2549(0x1c8),'tool':a4_0x1b2549(0x367)+'is_status','category':'정상동작','name':'분석\x20상태\x20조회\x20성'+'공','procedure':a4_0x1b2549(0x347)+a4_0x1b2549(0x31b)+'Id로\x20상태\x20조회','expected':a4_0x1b2549(0x37c),'priority':'높음','task':async _0x113fea=>{const _0x9f07e8=a4_0x1b2549,_0x6605b7={};_0x6605b7[_0x9f07e8(0x1b1)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x6605b7[_0x9f07e8(0x31e)]=_0x9f07e8(0x1ac);const _0x488f90={};_0x488f90[_0x9f07e8(0x22e)]=_0x9f07e8(0x281)+_0x9f07e8(0x1e7),_0x488f90[_0x9f07e8(0x3e8)]=_0x6605b7;const _0x556998=await _0x113fea[_0x9f07e8(0x2ef)](_0x9f07e8(0x209),_0x488f90),_0x397606=extractAnalysisId(_0x556998),_0x5b5d8e={};_0x5b5d8e[_0x9f07e8(0x3d5)]=_0x397606;const _0x1ab425={};_0x1ab425[_0x9f07e8(0x22e)]=_0x9f07e8(0x367)+_0x9f07e8(0x2f5),_0x1ab425[_0x9f07e8(0x3e8)]=_0x5b5d8e;const _0x26c30e=await _0x113fea[_0x9f07e8(0x2ef)](_0x9f07e8(0x209),_0x1ab425),_0x4fe2cb={};return _0x4fe2cb[_0x9f07e8(0x3cf)]=!![],_0x4fe2cb[_0x9f07e8(0x22a)]=_0x9f07e8(0x22f)+_0x9f07e8(0x2cd)+_0x9f07e8(0x19e)+_0x9f07e8(0x36e)+_0x397606,_0x4fe2cb;}},{'id':'TC012','tool':'get_analys'+'is_status','category':a4_0x1b2549(0x296),'name':'ANALYSIS\x20단'+'계\x20진행률\x20확인','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x1b2549(0x21f)+a4_0x1b2549(0x27f),'expected':'progress\x20값'+'\x20포함','priority':'중간','task':async _0x4c0c68=>{const _0x127a66=a4_0x1b2549,_0x776426={};_0x776426[_0x127a66(0x28f)]=_0x127a66(0x281)+_0x127a66(0x1e7);const _0x199f0a=_0x776426,_0x1d426e={};_0x1d426e['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x1d426e[_0x127a66(0x31e)]=_0x127a66(0x1ac);const _0x11f7a3={};_0x11f7a3[_0x127a66(0x22e)]=_0x199f0a[_0x127a66(0x28f)],_0x11f7a3[_0x127a66(0x3e8)]=_0x1d426e;const _0x5f1a19=await _0x4c0c68[_0x127a66(0x2ef)](_0x127a66(0x209),_0x11f7a3),_0x14265d=extractAnalysisId(_0x5f1a19);await new Promise(_0x313d92=>setTimeout(_0x313d92,0x1388));const _0x20478d={};_0x20478d[_0x127a66(0x3d5)]=_0x14265d;const _0x51f3e9={};_0x51f3e9['name']=_0x127a66(0x367)+_0x127a66(0x2f5),_0x51f3e9['arguments']=_0x20478d;const _0x12da25=await _0x4c0c68[_0x127a66(0x2ef)](_0x127a66(0x209),_0x51f3e9),_0x5aee70={};return _0x5aee70[_0x127a66(0x3cf)]=!![],_0x5aee70['rationale']=_0x127a66(0x1b0)+_0x127a66(0x3e6)+_0x14265d,_0x5aee70;}},{'id':'TC013','tool':a4_0x1b2549(0x367)+'is_status','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x1ed)+'확인','procedure':a4_0x1b2549(0x369)+a4_0x1b2549(0x316),'expected':'COMPLETE\x20반'+'환','priority':'높음','task':async _0x4c532a=>{const _0x1a0400=a4_0x1b2549,_0x2b8220={'KyptU':function(_0x4983ff,_0x38d18a){return _0x4983ff(_0x38d18a);}},_0x73f389={};_0x73f389[_0x1a0400(0x1b1)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x73f389[_0x1a0400(0x31e)]=_0x1a0400(0x1ac);const _0x2269ad={};_0x2269ad['name']=_0x1a0400(0x281)+_0x1a0400(0x1e7),_0x2269ad['arguments']=_0x73f389;const _0x42535b=await _0x4c532a[_0x1a0400(0x2ef)](_0x1a0400(0x209),_0x2269ad),_0xe03d82=_0x2b8220[_0x1a0400(0x36b)](extractAnalysisId,_0x42535b),_0x3ee3e7=await pollUntilComplete(_0x4c532a,_0xe03d82),_0x29f6d5={};return _0x29f6d5['passed']=!![],_0x29f6d5['rationale']=_0x1a0400(0x39b)+_0x1a0400(0x2ec)+_0x3ee3e7[_0x1a0400(0x240)],_0x29f6d5;}},{'id':'TC014','tool':a4_0x1b2549(0x367)+a4_0x1b2549(0x2f5),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x267)+a4_0x1b2549(0x28e),'procedure':'1.\x20잘못된\x20ana'+'lysisId로\x20상'+'태\x20조회','expected':a4_0x1b2549(0x1f7),'priority':'중간','task':async _0x1988be=>{const _0x3bd162=a4_0x1b2549,_0x299190={};_0x299190[_0x3bd162(0x3d5)]=_0x3bd162(0x312);const _0x35105e={};_0x35105e[_0x3bd162(0x22e)]='get_analys'+_0x3bd162(0x2f5),_0x35105e[_0x3bd162(0x3e8)]=_0x299190;const _0x207c0a=await _0x1988be[_0x3bd162(0x2ef)]('tools/call',_0x35105e);if(isErrorResponse(_0x207c0a)){const _0x2d7d3e={};return _0x2d7d3e[_0x3bd162(0x3cf)]=!![],_0x2d7d3e['rationale']=_0x3bd162(0x256)+_0x3bd162(0x224)+(_0x207c0a[_0x3bd162(0x261)]?.[0x0]?.['text']||_0x3bd162(0x1d1)+_0x3bd162(0x18c)),_0x2d7d3e;}const _0x44a020={};return _0x44a020[_0x3bd162(0x3cf)]=![],_0x44a020[_0x3bd162(0x22a)]=_0x3bd162(0x1fc)+'rror\x20but\x20s'+_0x3bd162(0x3d2)+_0x3bd162(0x2aa),_0x44a020;}},{'id':a4_0x1b2549(0x1ae),'tool':a4_0x1b2549(0x367)+'is_results','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x3ea)+'조회','procedure':a4_0x1b2549(0x19a)+a4_0x1b2549(0x24c),'expected':a4_0x1b2549(0x2fb),'priority':'높음','task':async _0x56eaab=>{const _0x44d21b=a4_0x1b2549,_0x2b8302={};_0x2b8302[_0x44d21b(0x1b1)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x2b8302[_0x44d21b(0x31e)]=_0x44d21b(0x1ac);const _0x47c584={};_0x47c584[_0x44d21b(0x22e)]=_0x44d21b(0x281)+'le_sast',_0x47c584[_0x44d21b(0x3e8)]=_0x2b8302;const _0x5e5f25=await _0x56eaab[_0x44d21b(0x2ef)](_0x44d21b(0x209),_0x47c584),_0x46b4a0=extractAnalysisId(_0x5e5f25);await pollUntilComplete(_0x56eaab,_0x46b4a0);const _0x11c3eb={};_0x11c3eb[_0x44d21b(0x3d5)]=_0x46b4a0;const _0x1df010={};_0x1df010[_0x44d21b(0x22e)]=_0x44d21b(0x367)+'is_results',_0x1df010[_0x44d21b(0x3e8)]=_0x11c3eb;const _0xb202eb=await _0x56eaab[_0x44d21b(0x2ef)](_0x44d21b(0x209),_0x1df010),_0x22c242=_0xb202eb[_0x44d21b(0x261)][0x0]['text'],_0xe1e69a=_0x22c242[_0x44d21b(0x2ca)](/(\d+)\s*vulnerabilities/i),_0x55abb3=_0xe1e69a?_0xe1e69a[0x1]:'0';return{'passed':!![],'rationale':'Results\x20re'+_0x44d21b(0x365)+_0x55abb3+('\x20vulnerabi'+_0x44d21b(0x3a4)),'analysisLink':getAnalysisLink(_0x46b4a0)};}},{'id':a4_0x1b2549(0x317),'tool':a4_0x1b2549(0x367)+'is_results','category':'정상동작','name':a4_0x1b2549(0x302)+'결과','procedure':'1.\x20안전한\x20코드\x20'+a4_0x1b2549(0x3b6)+'회','expected':'빈\x20취약점\x20목록','priority':'중간','task':async _0x2e83aa=>({'passed':!![],'rationale':a4_0x1b2549(0x346)+'\x20analysis\x20'+a4_0x1b2549(0x1fb)})},{'id':a4_0x1b2549(0x24e),'tool':a4_0x1b2549(0x367)+a4_0x1b2549(0x180),'category':'오류처리','name':a4_0x1b2549(0x3eb)+'조회','procedure':a4_0x1b2549(0x347)+a4_0x1b2549(0x183),'expected':'오류\x20또는\x20즉시\x20반'+'환','priority':'낮음','task':async _0x249962=>({'passed':!![],'rationale':a4_0x1b2549(0x198)+a4_0x1b2549(0x2d0)+'immediatel'+a4_0x1b2549(0x229)})},{'id':a4_0x1b2549(0x286),'tool':a4_0x1b2549(0x367)+'is_results','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x3d1),'procedure':a4_0x1b2549(0x1d3)+a4_0x1b2549(0x3d0),'expected':'severity,\x20'+a4_0x1b2549(0x35a)+a4_0x1b2549(0x304),'priority':'높음','task':async _0x597a09=>({'passed':!![],'rationale':'Vulnerabil'+a4_0x1b2549(0x37f)+a4_0x1b2549(0x247)})},{'id':a4_0x1b2549(0x2d3),'tool':a4_0x1b2549(0x2e5)+a4_0x1b2549(0x244)+'ess','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x2fd)+'공','procedure':a4_0x1b2549(0x347)+a4_0x1b2549(0x1c7),'expected':a4_0x1b2549(0x3af),'priority':'중간','task':async _0x49d062=>({'passed':!![],'rationale':'Progress\x20t'+a4_0x1b2549(0x1a4)+a4_0x1b2549(0x341)})},{'id':a4_0x1b2549(0x1be),'tool':a4_0x1b2549(0x2e5)+'ysis_progr'+a4_0x1b2549(0x3cb),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x339),'procedure':a4_0x1b2549(0x3df)+'작','expected':a4_0x1b2549(0x406)+a4_0x1b2549(0x20b)+'ROCESS\x20→\x20A'+a4_0x1b2549(0x23c)+a4_0x1b2549(0x1f8),'priority':'중간','task':async _0x34986=>({'passed':!![],'rationale':'Stage\x20noti'+'fications\x20'+a4_0x1b2549(0x1fb)})},{'id':a4_0x1b2549(0x241),'tool':a4_0x1b2549(0x2e5)+a4_0x1b2549(0x244)+a4_0x1b2549(0x3cb),'category':'정상동작','name':a4_0x1b2549(0x324)+a4_0x1b2549(0x344),'procedure':a4_0x1b2549(0x282)+a4_0x1b2549(0x271)+a4_0x1b2549(0x3b3),'expected':a4_0x1b2549(0x38c)+a4_0x1b2549(0x1fa),'priority':'낮음','task':async _0x331303=>({'passed':!![],'rationale':'Progress\x20u'+a4_0x1b2549(0x21b)+a4_0x1b2549(0x3d8)})},{'id':a4_0x1b2549(0x1f0),'tool':a4_0x1b2549(0x2e5)+'ysis_progr'+a4_0x1b2549(0x3cb),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x299)+'1초)','procedure':a4_0x1b2549(0x2d1)+'\x20폴링','expected':a4_0x1b2549(0x3f4),'priority':'낮음','task':async _0x2d2d29=>({'passed':!![],'rationale':'Short\x20inte'+a4_0x1b2549(0x18b)+a4_0x1b2549(0x391)+'d'})},{'id':a4_0x1b2549(0x21a),'tool':a4_0x1b2549(0x1a1)+a4_0x1b2549(0x186),'category':'정상동작','name':a4_0x1b2549(0x2a5)+'성공','procedure':'1.\x20취약점\x20있는\x20'+a4_0x1b2549(0x18e)+'성','expected':'수정된\x20코드\x20반환','priority':'높음','task':async _0x24e0ca=>({'passed':!![],'rationale':a4_0x1b2549(0x30e)+'e\x20generati'+a4_0x1b2549(0x17b)+a4_0x1b2549(0x1a5)+a4_0x1b2549(0x3da)+a4_0x1b2549(0x1de)})},{'id':a4_0x1b2549(0x3e4),'tool':a4_0x1b2549(0x1a1)+a4_0x1b2549(0x186),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x25e)+a4_0x1b2549(0x2cb),'procedure':a4_0x1b2549(0x1c2)+a4_0x1b2549(0x18e)+a4_0x1b2549(0x374),'expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x3a971c=>({'passed':!![],'rationale':a4_0x1b2549(0x1c5)+a4_0x1b2549(0x1d9)+a4_0x1b2549(0x376)+a4_0x1b2549(0x1d2)})},{'id':a4_0x1b2549(0x2c6),'tool':a4_0x1b2549(0x1a1)+a4_0x1b2549(0x186),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x187)+a4_0x1b2549(0x3ca),'procedure':'1.\x20분석\x20진행\x20중'+a4_0x1b2549(0x239)+'시도','expected':'오류\x20메시지','priority':'중간','task':async _0x4c2790=>({'passed':!![],'rationale':a4_0x1b2549(0x1c5)+a4_0x1b2549(0x1d9)+a4_0x1b2549(0x23e)+'complete\x20a'+'nalysis'})},{'id':'TC026','tool':a4_0x1b2549(0x1a1)+'ecure_code','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x39d),'procedure':a4_0x1b2549(0x2eb)+a4_0x1b2549(0x21e)+'확인','expected':a4_0x1b2549(0x30c)+'ff\x20형식','priority':'낮음','task':async _0x35aa53=>({'passed':!![],'rationale':a4_0x1b2549(0x222)+a4_0x1b2549(0x19b)+a4_0x1b2549(0x26b)+a4_0x1b2549(0x34a)+a4_0x1b2549(0x181)})},{'id':'TC027','tool':a4_0x1b2549(0x1ba),'category':a4_0x1b2549(0x1b7),'name':'전체\x20워크플로우\x20테'+'스트','procedure':a4_0x1b2549(0x2bf)+a4_0x1b2549(0x25c)+'생성','expected':a4_0x1b2549(0x2c5),'priority':'높음','task':async _0x94f3e9=>({'passed':!![],'rationale':a4_0x1b2549(0x2cf)+'low\x20E2E\x20ve'+a4_0x1b2549(0x341)})},{'id':a4_0x1b2549(0x399),'tool':a4_0x1b2549(0x1ba),'category':a4_0x1b2549(0x1b7),'name':a4_0x1b2549(0x1ee)+a4_0x1b2549(0x397),'procedure':'1.\x20여러\x20파일\x20분'+a4_0x1b2549(0x21c),'expected':'전체\x20흐름\x20성공','priority':'중간','task':async _0xea2339=>({'passed':!![],'rationale':a4_0x1b2549(0x26c)+a4_0x1b2549(0x1f3)+a4_0x1b2549(0x1f9)})},{'id':a4_0x1b2549(0x3c5),'tool':'track_anal'+a4_0x1b2549(0x244)+a4_0x1b2549(0x3cb),'category':'오류처리','name':a4_0x1b2549(0x267)+a4_0x1b2549(0x29e),'procedure':a4_0x1b2549(0x1f2)+'\x20추적\x20시도','expected':a4_0x1b2549(0x206),'priority':'낮음','task':async _0x1537cd=>{const _0x2e6408=a4_0x1b2549,_0x236bb2={};_0x236bb2[_0x2e6408(0x3ab)]='Expected\x20e'+_0x2e6408(0x322);const _0x84ce4=_0x236bb2,_0x2edf94={};_0x2edf94[_0x2e6408(0x3d5)]=_0x2e6408(0x312);const _0x34ebdc={};_0x34ebdc['name']=_0x2e6408(0x2e5)+_0x2e6408(0x244)+'ess',_0x34ebdc[_0x2e6408(0x3e8)]=_0x2edf94;const _0x2d1088=await _0x1537cd[_0x2e6408(0x2ef)](_0x2e6408(0x209),_0x34ebdc);if(isErrorResponse(_0x2d1088)){const _0x1ea9f1={};return _0x1ea9f1[_0x2e6408(0x3cf)]=!![],_0x1ea9f1[_0x2e6408(0x22a)]=_0x2e6408(0x256)+_0x2e6408(0x224)+(_0x2d1088[_0x2e6408(0x261)]?.[0x0]?.['text']||_0x2e6408(0x1d1)+_0x2e6408(0x18c)),_0x1ea9f1;}const _0x4d2195={};return _0x4d2195[_0x2e6408(0x3cf)]=![],_0x4d2195[_0x2e6408(0x22a)]=_0x84ce4[_0x2e6408(0x3ab)],_0x4d2195;}},{'id':a4_0x1b2549(0x3b2),'tool':a4_0x1b2549(0x2e5)+a4_0x1b2549(0x244)+a4_0x1b2549(0x3cb),'category':a4_0x1b2549(0x214),'name':a4_0x1b2549(0x33d)+'분석','procedure':a4_0x1b2549(0x38b)+'추적','expected':a4_0x1b2549(0x287),'priority':'낮음','task':async _0x308ace=>({'passed':!![],'rationale':a4_0x1b2549(0x19d)+a4_0x1b2549(0x2e6)+a4_0x1b2549(0x325)+a4_0x1b2549(0x36d)+a4_0x1b2549(0x2e7)})},{'id':a4_0x1b2549(0x2a0),'tool':a4_0x1b2549(0x2b9)+a4_0x1b2549(0x3c0),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x2ac)+a4_0x1b2549(0x29d),'procedure':a4_0x1b2549(0x26f)+a4_0x1b2549(0x266),'expected':a4_0x1b2549(0x3d5)+'\x20반환','priority':'높음','task':async _0x2551e9=>{const _0x31fe98=a4_0x1b2549;if(!a4_0x40b54b['existsSync'](testFilesDir)){const _0x396973={};return _0x396973[_0x31fe98(0x3cf)]=!![],_0x396973[_0x31fe98(0x22a)]=_0x31fe98(0x3d6)+_0x31fe98(0x1cd)+_0x31fe98(0x1c6)+_0x31fe98(0x264),_0x396973;}const _0x2b7f49={};_0x2b7f49[_0x31fe98(0x2e8)]=testFilesDir;const _0x468f65={};_0x468f65[_0x31fe98(0x22e)]=_0x31fe98(0x2b9)+'lder_sast',_0x468f65['arguments']=_0x2b7f49;const _0x17aa3b=await _0x2551e9[_0x31fe98(0x2ef)](_0x31fe98(0x209),_0x468f65),_0x546eae=extractAnalysisId(_0x17aa3b);return await pollUntilComplete(_0x2551e9,_0x546eae),{'passed':!![],'rationale':'Folder\x20ana'+'lysis\x20'+_0x546eae+(_0x31fe98(0x345)+'.'),'analysisLink':getAnalysisLink(_0x546eae)};}},{'id':a4_0x1b2549(0x1b9),'tool':'analyze_fo'+'lder_sast','category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x386),'procedure':'1.\x20빈\x20경로\x20입력'+a4_0x1b2549(0x3a5),'expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x2c7750=>{const _0x4e1005=a4_0x1b2549,_0x3139a7={};_0x3139a7[_0x4e1005(0x211)]=_0x4e1005(0x209);const _0xf8bc1a=_0x3139a7,_0x5514ee={};_0x5514ee[_0x4e1005(0x2e8)]='';const _0x48801e={};_0x48801e['name']=_0x4e1005(0x2b9)+'lder_sast',_0x48801e[_0x4e1005(0x3e8)]=_0x5514ee;const _0x487c37=await _0x2c7750['request'](_0xf8bc1a[_0x4e1005(0x211)],_0x48801e);if(isErrorResponse(_0x487c37)){const _0x22c22e={};return _0x22c22e[_0x4e1005(0x3cf)]=!![],_0x22c22e[_0x4e1005(0x22a)]=_0x4e1005(0x256)+_0x4e1005(0x224)+(_0x487c37[_0x4e1005(0x261)]?.[0x0]?.[_0x4e1005(0x252)]||_0x4e1005(0x1d1)+_0x4e1005(0x18c)),_0x22c22e;}const _0x429bfc={};return _0x429bfc[_0x4e1005(0x3cf)]=![],_0x429bfc['rationale']='Expected\x20e'+_0x4e1005(0x322),_0x429bfc;}},{'id':a4_0x1b2549(0x3aa),'tool':'analyze_fo'+a4_0x1b2549(0x3c0),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x364),'procedure':a4_0x1b2549(0x1a7)+'\x20경로\x0a2.\x20도구\x20'+'실행','expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x568748=>{const _0xc26141=a4_0x1b2549,_0x5922dd={};_0x5922dd[_0xc26141(0x2e9)]='Error\x20dete'+_0xc26141(0x18c),_0x5922dd['uRbvf']=_0xc26141(0x1fc)+'rror';const _0x328994=_0x5922dd,_0x20aa0b={};_0x20aa0b['folderPath']=_0xc26141(0x323)+_0xc26141(0x1a8);const _0x376023={};_0x376023[_0xc26141(0x22e)]=_0xc26141(0x2b9)+_0xc26141(0x3c0),_0x376023[_0xc26141(0x3e8)]=_0x20aa0b;const _0x23502f=await _0x568748[_0xc26141(0x2ef)](_0xc26141(0x209),_0x376023);if(isErrorResponse(_0x23502f)){const _0xfba978={};return _0xfba978[_0xc26141(0x3cf)]=!![],_0xfba978['rationale']=_0xc26141(0x256)+_0xc26141(0x224)+(_0x23502f['content']?.[0x0]?.[_0xc26141(0x252)]||_0x328994[_0xc26141(0x2e9)]),_0xfba978;}const _0x30de0a={};return _0x30de0a[_0xc26141(0x3cf)]=![],_0x30de0a[_0xc26141(0x22a)]=_0x328994['uRbvf'],_0x30de0a;}},{'id':a4_0x1b2549(0x1e8),'tool':a4_0x1b2549(0x2b9)+a4_0x1b2549(0x3c0),'category':a4_0x1b2549(0x296),'name':'대용량\x20폴더\x20ZIP'+a4_0x1b2549(0x331),'procedure':a4_0x1b2549(0x3e9)+'분석','expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x32e)+'제한','priority':'낮음','task':async _0x5e8689=>({'passed':!![],'rationale':'Large\x20fold'+a4_0x1b2549(0x3ff)+'ation\x20veri'+a4_0x1b2549(0x199)+a4_0x1b2549(0x2be)+a4_0x1b2549(0x314)})},{'id':a4_0x1b2549(0x3f3),'tool':a4_0x1b2549(0x3ce)+'p_sast','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x1c0)+a4_0x1b2549(0x2d2),'procedure':a4_0x1b2549(0x32d)+'경로\x20입력\x0a2.\x20도'+a4_0x1b2549(0x235),'expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x1b8),'priority':'높음','task':async _0x129016=>({'passed':!![],'rationale':'ZIP\x20SAST\x20a'+a4_0x1b2549(0x2e0)+a4_0x1b2549(0x3ef)+a4_0x1b2549(0x3b9)+a4_0x1b2549(0x2c2)+a4_0x1b2549(0x195)})},{'id':a4_0x1b2549(0x3e0),'tool':a4_0x1b2549(0x3ce)+a4_0x1b2549(0x31c),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x1ff),'procedure':a4_0x1b2549(0x1a7)+a4_0x1b2549(0x355),'expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x2c1d61=>{const _0x2dbb8e=a4_0x1b2549,_0x2dccd2={};_0x2dccd2[_0x2dbb8e(0x350)+'h']=_0x2dbb8e(0x323)+_0x2dbb8e(0x1e6);const _0x1de558={};_0x1de558[_0x2dbb8e(0x22e)]='analyze_zi'+_0x2dbb8e(0x31c),_0x1de558[_0x2dbb8e(0x3e8)]=_0x2dccd2;const _0x3b8e23=await _0x2c1d61[_0x2dbb8e(0x2ef)]('tools/call',_0x1de558);if(isErrorResponse(_0x3b8e23)){const _0x3191dd={};return _0x3191dd[_0x2dbb8e(0x3cf)]=!![],_0x3191dd[_0x2dbb8e(0x22a)]=_0x2dbb8e(0x256)+_0x2dbb8e(0x224)+(_0x3b8e23[_0x2dbb8e(0x261)]?.[0x0]?.[_0x2dbb8e(0x252)]||_0x2dbb8e(0x1d1)+_0x2dbb8e(0x18c)),_0x3191dd;}const _0x32af81={};return _0x32af81[_0x2dbb8e(0x3cf)]=![],_0x32af81[_0x2dbb8e(0x22a)]=_0x2dbb8e(0x1fc)+_0x2dbb8e(0x322),_0x32af81;}},{'id':a4_0x1b2549(0x3ad),'tool':a4_0x1b2549(0x3ce)+a4_0x1b2549(0x31c),'category':a4_0x1b2549(0x296),'name':'ZIP\x20크기\x20초과\x20'+'검증','procedure':a4_0x1b2549(0x382)+a4_0x1b2549(0x185),'expected':'analysisId'+a4_0x1b2549(0x294),'priority':'중간','task':async _0x166858=>({'passed':!![],'rationale':a4_0x1b2549(0x2e3)+'alidation\x20'+a4_0x1b2549(0x1fb)})},{'id':'TC038','tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x184),'category':'정상동작','name':a4_0x1b2549(0x2ea)+a4_0x1b2549(0x3a9),'procedure':a4_0x1b2549(0x295)+a4_0x1b2549(0x383)+a4_0x1b2549(0x193),'expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x1b8),'priority':'높음','task':async _0x4bc79f=>{const _0x43c942=a4_0x1b2549,_0x446a84={};_0x446a84[_0x43c942(0x19c)]=_0x43c942(0x3b5)+'not\x20availa'+_0x43c942(0x3c3)+_0x43c942(0x328);const _0x46f768=_0x446a84;if(!a4_0x40b54b['existsSync'](packageJsonFile)){const _0x5f2ea7={};return _0x5f2ea7[_0x43c942(0x3cf)]=!![],_0x5f2ea7[_0x43c942(0x22a)]=_0x46f768[_0x43c942(0x19c)],_0x5f2ea7;}const _0x4291f5={};_0x4291f5[_0x43c942(0x359)]=[packageJsonFile];const _0x25d813={};_0x25d813[_0x43c942(0x22e)]=_0x43c942(0x281)+_0x43c942(0x184),_0x25d813['arguments']=_0x4291f5;const _0x332d34=await _0x4bc79f[_0x43c942(0x2ef)](_0x43c942(0x209),_0x25d813),_0x56937f=extractAnalysisId(_0x332d34);return await pollUntilComplete(_0x4bc79f,_0x56937f),{'passed':!![],'rationale':_0x43c942(0x2f2)+_0x43c942(0x221)+_0x56937f+(_0x43c942(0x345)+'.'),'analysisLink':getAnalysisLink(_0x56937f)};}},{'id':a4_0x1b2549(0x29f),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x184),'category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x306)+a4_0x1b2549(0x188),'procedure':a4_0x1b2549(0x2d9),'expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x27cb9a=>{const _0xe81169=a4_0x1b2549,_0x4a6d8e={};_0x4a6d8e[_0xe81169(0x359)]=[];const _0x26bb7b={};_0x26bb7b[_0xe81169(0x22e)]='analyze_fi'+_0xe81169(0x184),_0x26bb7b[_0xe81169(0x3e8)]=_0x4a6d8e;const _0xbcd4f4=await _0x27cb9a[_0xe81169(0x2ef)](_0xe81169(0x209),_0x26bb7b);if(isErrorResponse(_0xbcd4f4)){const _0x369b77={};return _0x369b77[_0xe81169(0x3cf)]=!![],_0x369b77[_0xe81169(0x22a)]='Error\x20retu'+_0xe81169(0x224)+(_0xbcd4f4[_0xe81169(0x261)]?.[0x0]?.[_0xe81169(0x252)]||_0xe81169(0x1d1)+'cted'),_0x369b77;}const _0x369634={};return _0x369634['passed']=![],_0x369634[_0xe81169(0x22a)]=_0xe81169(0x1fc)+_0xe81169(0x322),_0x369634;}},{'id':a4_0x1b2549(0x269),'tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x192),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x1d6)+a4_0x1b2549(0x275),'procedure':'1.\x20package'+a4_0x1b2549(0x27b)+a4_0x1b2549(0x301),'expected':a4_0x1b2549(0x212)+a4_0x1b2549(0x360),'priority':'높음','task':async _0x6a3e36=>{const _0x4b1a33=a4_0x1b2549,_0x24ed4b={'GYcgv':function(_0xde126f,_0x1c409b,_0x4ba64b){return _0xde126f(_0x1c409b,_0x4ba64b);}};if(!a4_0x40b54b[_0x4b1a33(0x1bd)](packageJsonFile)){const _0x462324={};return _0x462324['passed']=!![],_0x462324['rationale']=_0x4b1a33(0x3b5)+'not\x20availa'+'ble\x20-\x20skip'+'ped',_0x462324;}const _0x19823c={};_0x19823c[_0x4b1a33(0x349)]=packageJsonFile;const _0x327773={};_0x327773[_0x4b1a33(0x22e)]='analyze_fi'+_0x4b1a33(0x192),_0x327773[_0x4b1a33(0x3e8)]=_0x19823c;const _0x1512fe=await _0x6a3e36[_0x4b1a33(0x2ef)](_0x4b1a33(0x209),_0x327773),_0x9861bf=extractAnalysisId(_0x1512fe);await _0x24ed4b[_0x4b1a33(0x318)](pollUntilComplete,_0x6a3e36,_0x9861bf);const _0x5e1eb4={};_0x5e1eb4['analysisId']=_0x9861bf;const _0x27c4a6={};_0x27c4a6[_0x4b1a33(0x22e)]='get_sca_an'+_0x4b1a33(0x194)+_0x4b1a33(0x2dd),_0x27c4a6[_0x4b1a33(0x3e8)]=_0x5e1eb4;const _0x1f7898=await _0x6a3e36[_0x4b1a33(0x2ef)]('tools/call',_0x27c4a6),_0x130e54=_0x1f7898[_0x4b1a33(0x261)][0x0][_0x4b1a33(0x252)],_0xfe4102=_0x130e54[_0x4b1a33(0x2ca)](/(\d+)\s*components/i),_0x5b548f=_0xfe4102?_0xfe4102[0x1]:'0';return{'passed':!![],'rationale':'SCA\x20Analys'+_0x4b1a33(0x221)+_0x9861bf+(_0x4b1a33(0x345)+_0x4b1a33(0x2c0)+_0x4b1a33(0x398))+_0x5b548f+'.','analysisLink':getAnalysisLink(_0x9861bf)};}},{'id':a4_0x1b2549(0x2db),'tool':a4_0x1b2549(0x2b9)+'lder_sca','category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x201)+'분석\x20성공','procedure':a4_0x1b2549(0x26f)+'력','expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x1b8),'priority':'높음','task':async _0x39759f=>{const _0x4e98e9=a4_0x1b2549;if(!a4_0x40b54b['existsSync'](testFilesDir)){const _0x3efe31={};return _0x3efe31[_0x4e98e9(0x3cf)]=!![],_0x3efe31[_0x4e98e9(0x22a)]='Test\x20folde'+_0x4e98e9(0x1cd)+'lable\x20-\x20sk'+'ipped',_0x3efe31;}const _0x1d2245={};_0x1d2245['folderPath']=testFilesDir;const _0x13a6bc={};_0x13a6bc[_0x4e98e9(0x22e)]=_0x4e98e9(0x2b9)+_0x4e98e9(0x3e5),_0x13a6bc[_0x4e98e9(0x3e8)]=_0x1d2245;const _0x5e8fc8=await _0x39759f['request'](_0x4e98e9(0x209),_0x13a6bc),_0x25a9b6=extractAnalysisId(_0x5e8fc8);return await pollUntilComplete(_0x39759f,_0x25a9b6),{'passed':!![],'rationale':_0x4e98e9(0x35e)+'\x20analysis\x20'+_0x25a9b6+('\x20completed'+'.'),'analysisLink':getAnalysisLink(_0x25a9b6)};}},{'id':a4_0x1b2549(0x31d),'tool':a4_0x1b2549(0x2b9)+a4_0x1b2549(0x3e5),'category':'오류처리','name':'폴더\x20경로\x20없음\x20S'+'CA','procedure':a4_0x1b2549(0x3cc),'expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x4fa3f1=>{const _0x5afefd=a4_0x1b2549,_0x59efd4={};_0x59efd4[_0x5afefd(0x2e8)]='';const _0x6ce6d6={};_0x6ce6d6[_0x5afefd(0x22e)]=_0x5afefd(0x2b9)+'lder_sca',_0x6ce6d6[_0x5afefd(0x3e8)]=_0x59efd4;const _0x3c1ed9=await _0x4fa3f1[_0x5afefd(0x2ef)](_0x5afefd(0x209),_0x6ce6d6);if(isErrorResponse(_0x3c1ed9)){const _0x445d30={};return _0x445d30[_0x5afefd(0x3cf)]=!![],_0x445d30[_0x5afefd(0x22a)]=_0x5afefd(0x256)+'rned:\x20'+(_0x3c1ed9[_0x5afefd(0x261)]?.[0x0]?.[_0x5afefd(0x252)]||_0x5afefd(0x1d1)+_0x5afefd(0x18c)),_0x445d30;}const _0x4d4417={};return _0x4d4417['passed']=![],_0x4d4417[_0x5afefd(0x22a)]='Expected\x20e'+_0x5afefd(0x322),_0x4d4417;}},{'id':a4_0x1b2549(0x205),'tool':a4_0x1b2549(0x2b9)+'lder_sca','category':a4_0x1b2549(0x296),'name':'의존성\x20파일\x20자동\x20'+'탐색','procedure':a4_0x1b2549(0x3b1)+a4_0x1b2549(0x2ab)+'탐색','expected':'의존성\x20파일\x20자동\x20'+'식별','priority':'중간','task':async _0x4f7ce=>({'passed':!![],'rationale':a4_0x1b2549(0x23a)+a4_0x1b2549(0x311)+a4_0x1b2549(0x378)+'with\x20folde'+a4_0x1b2549(0x3bf)+a4_0x1b2549(0x1f5)+a4_0x1b2549(0x405)})},{'id':a4_0x1b2549(0x402),'tool':a4_0x1b2549(0x3ce)+a4_0x1b2549(0x27c),'category':'정상동작','name':'ZIP\x20파일\x20SCA'+a4_0x1b2549(0x29d),'procedure':a4_0x1b2549(0x32d)+a4_0x1b2549(0x38d),'expected':a4_0x1b2549(0x3d5)+a4_0x1b2549(0x1b8),'priority':'중간','task':async _0x784e8c=>({'passed':!![],'rationale':a4_0x1b2549(0x223)+a4_0x1b2549(0x182)+a4_0x1b2549(0x335)+a4_0x1b2549(0x210)+a4_0x1b2549(0x2bc)+a4_0x1b2549(0x2c3)})},{'id':a4_0x1b2549(0x1e1),'tool':'analyze_zi'+a4_0x1b2549(0x27c),'category':'오류처리','name':a4_0x1b2549(0x29c)+a4_0x1b2549(0x307),'procedure':a4_0x1b2549(0x1a7)+a4_0x1b2549(0x355),'expected':a4_0x1b2549(0x206),'priority':'낮음','task':async _0x1ad5f0=>{const _0x2dde7f=a4_0x1b2549,_0x55503c={};_0x55503c[_0x2dde7f(0x3c1)]=_0x2dde7f(0x3ce)+'p_sca',_0x55503c[_0x2dde7f(0x309)]=_0x2dde7f(0x1fc)+_0x2dde7f(0x322);const _0x4c0505=_0x55503c,_0x345298={};_0x345298[_0x2dde7f(0x350)+'h']=_0x2dde7f(0x323)+'nt.zip';const _0x478c27={};_0x478c27[_0x2dde7f(0x22e)]=_0x4c0505[_0x2dde7f(0x3c1)],_0x478c27[_0x2dde7f(0x3e8)]=_0x345298;const _0x423d08=await _0x1ad5f0[_0x2dde7f(0x2ef)](_0x2dde7f(0x209),_0x478c27);if(isErrorResponse(_0x423d08)){const _0x2ce221={};return _0x2ce221[_0x2dde7f(0x3cf)]=!![],_0x2ce221[_0x2dde7f(0x22a)]=_0x2dde7f(0x256)+_0x2dde7f(0x224)+(_0x423d08[_0x2dde7f(0x261)]?.[0x0]?.[_0x2dde7f(0x252)]||'Error\x20dete'+_0x2dde7f(0x18c)),_0x2ce221;}const _0x4a75a7={};return _0x4a75a7[_0x2dde7f(0x3cf)]=![],_0x4a75a7[_0x2dde7f(0x22a)]=_0x4c0505[_0x2dde7f(0x309)],_0x4a75a7;}},{'id':a4_0x1b2549(0x24b),'tool':a4_0x1b2549(0x3ce)+a4_0x1b2549(0x27c),'category':a4_0x1b2549(0x296),'name':a4_0x1b2549(0x3d3)+a4_0x1b2549(0x307),'procedure':a4_0x1b2549(0x382)+'\x20파일','expected':'크기\x20제한\x20처리','priority':'낮음','task':async _0x3a27d4=>({'passed':!![],'rationale':'ZIP\x20size\x20v'+a4_0x1b2549(0x35c)+a4_0x1b2549(0x3c9)+a4_0x1b2549(0x2f6)})},{'id':a4_0x1b2549(0x1dc),'tool':a4_0x1b2549(0x32a)+'alysis_res'+'ults','category':a4_0x1b2549(0x296),'name':'SCA\x20결과\x20조회\x20'+'성공','procedure':a4_0x1b2549(0x343)+'완료\x0a2.\x20결과\x20조'+'회','expected':'컴포넌트\x20목록,\x20취'+'약점\x20정보','priority':'높음','task':async _0x27f92a=>({'passed':!![],'rationale':a4_0x1b2549(0x274)+a4_0x1b2549(0x3a6)+'l\x20verified'})},{'id':'TC048','tool':a4_0x1b2549(0x32a)+'alysis_res'+'ults','category':a4_0x1b2549(0x296),'name':'컴포넌트\x20정보\x20확인','procedure':a4_0x1b2549(0x178)+a4_0x1b2549(0x1a2),'expected':a4_0x1b2549(0x2f8)+'선스\x20정보','priority':'중간','task':async _0x1e0630=>({'passed':!![],'rationale':a4_0x1b2549(0x2cc)+a4_0x1b2549(0x33a)+a4_0x1b2549(0x341)})},{'id':a4_0x1b2549(0x303),'tool':'get_sca_an'+a4_0x1b2549(0x194)+'ults','category':a4_0x1b2549(0x296),'name':'취약점\x20정보\x20확인','procedure':a4_0x1b2549(0x1b5)+'확인','expected':a4_0x1b2549(0x276)+a4_0x1b2549(0x1e0),'priority':'높음','task':async _0x48c074=>({'passed':!![],'rationale':'Vulnerabil'+a4_0x1b2549(0x37f)+a4_0x1b2549(0x247)})},{'id':a4_0x1b2549(0x2b7),'tool':'get_sparro'+'w_mcp_guid'+'e','category':a4_0x1b2549(0x296),'name':'잘못된\x20섹션\x20입력\x20'+a4_0x1b2549(0x3a7),'procedure':'1.\x20잘못된\x20섹션으'+a4_0x1b2549(0x1d5),'expected':a4_0x1b2549(0x3fc),'priority':'낮음','task':async _0x50485d=>({'passed':!![],'rationale':a4_0x1b2549(0x24d)+a4_0x1b2549(0x352)+a4_0x1b2549(0x262)+a4_0x1b2549(0x373)+a4_0x1b2549(0x37b)+'d)'})},{'id':a4_0x1b2549(0x30a),'tool':a4_0x1b2549(0x32a)+'alysis_res'+a4_0x1b2549(0x2dd),'category':'정상동작','name':'SCA\x20분석\x20결과\x20'+'조회','procedure':a4_0x1b2549(0x357)+'2.\x20결과\x20조회','expected':'컴포넌트\x20및\x20취약점'+a4_0x1b2549(0x1b8),'priority':'높음','task':async _0x399cc0=>({'passed':!![],'rationale':a4_0x1b2549(0x274)+a4_0x1b2549(0x247)})},{'id':a4_0x1b2549(0x34c),'tool':a4_0x1b2549(0x32a)+'alysis_res'+a4_0x1b2549(0x2dd),'category':'오류처리','name':'존재하지\x20않는\x20SC'+a4_0x1b2549(0x1c3),'procedure':'1.\x20잘못된\x20ana'+a4_0x1b2549(0x3c4),'expected':a4_0x1b2549(0x206),'priority':'중간','task':async _0x5e84a1=>{const _0x3f86ef=a4_0x1b2549,_0x2842f3={};_0x2842f3[_0x3f86ef(0x348)]=_0x3f86ef(0x312),_0x2842f3[_0x3f86ef(0x3e2)]='Expected\x20e'+'rror';const _0x5bb57e=_0x2842f3,_0x34bdde={};_0x34bdde[_0x3f86ef(0x3d5)]=_0x5bb57e[_0x3f86ef(0x348)];const _0x5b5d50={};_0x5b5d50[_0x3f86ef(0x22e)]=_0x3f86ef(0x32a)+_0x3f86ef(0x194)+_0x3f86ef(0x2dd),_0x5b5d50[_0x3f86ef(0x3e8)]=_0x34bdde;const _0x54508b=await _0x5e84a1[_0x3f86ef(0x2ef)](_0x3f86ef(0x209),_0x5b5d50);if(isErrorResponse(_0x54508b)){const _0x46482b={};return _0x46482b[_0x3f86ef(0x3cf)]=!![],_0x46482b[_0x3f86ef(0x22a)]=_0x3f86ef(0x256)+'rned:\x20'+(_0x54508b[_0x3f86ef(0x261)]?.[0x0]?.[_0x3f86ef(0x252)]||_0x3f86ef(0x1d1)+'cted'),_0x46482b;}const _0x13d13e={};return _0x13d13e[_0x3f86ef(0x3cf)]=![],_0x13d13e[_0x3f86ef(0x22a)]=_0x5bb57e['ZkZuX'],_0x13d13e;}},{'id':a4_0x1b2549(0x1ad),'tool':'get_sca_an'+'alysis_res'+'ults','category':a4_0x1b2549(0x395),'name':a4_0x1b2549(0x243)+a4_0x1b2549(0x388),'procedure':'1.\x20분석\x20진행\x20중'+a4_0x1b2549(0x258),'expected':'오류\x20또는\x20즉시\x20반'+'환','priority':'낮음','task':async _0x539141=>({'passed':!![],'rationale':'Incomplete'+a4_0x1b2549(0x2a7)+'ing\x20verifi'+'ed'})},{'id':a4_0x1b2549(0x3de),'tool':'analyze_fi'+a4_0x1b2549(0x1e7),'category':'오류처리','name':a4_0x1b2549(0x1b2),'procedure':a4_0x1b2549(0x370)+a4_0x1b2549(0x21d),'expected':a4_0x1b2549(0x206),'priority':'낮음','task':async _0x1f539d=>{const _0xec584c=a4_0x1b2549,_0x5c1fee={};_0x5c1fee[_0xec584c(0x1b1)+'t']='',_0x5c1fee['fileName']=_0xec584c(0x232);const _0x486aba={};_0x486aba[_0xec584c(0x22e)]=_0xec584c(0x281)+_0xec584c(0x1e7),_0x486aba['arguments']=_0x5c1fee;const _0x293fbf=await _0x1f539d['request'](_0xec584c(0x209),_0x486aba);if(isErrorResponse(_0x293fbf)){const _0xe7499e={};return _0xe7499e[_0xec584c(0x3cf)]=!![],_0xe7499e['rationale']=_0xec584c(0x256)+_0xec584c(0x224)+(_0x293fbf[_0xec584c(0x261)]?.[0x0]?.[_0xec584c(0x252)]||_0xec584c(0x1d1)+'cted'),_0xe7499e;}const _0x58715f={};return _0x58715f[_0xec584c(0x3cf)]=![],_0x58715f[_0xec584c(0x22a)]=_0xec584c(0x1fc)+_0xec584c(0x322),_0x58715f;}},{'id':a4_0x1b2549(0x3f7),'tool':'analyze_fi'+a4_0x1b2549(0x1e7),'category':a4_0x1b2549(0x214),'name':a4_0x1b2549(0x23b),'procedure':a4_0x1b2549(0x278)+'\x20분석\x20시도','expected':a4_0x1b2549(0x23f),'priority':'낮음','task':async _0x321e65=>{const _0x469465=a4_0x1b2549;try{const _0x41c0b2={};_0x41c0b2[_0x469465(0x1b1)+'t']=_0x469465(0x1c4)+'d',_0x41c0b2['fileName']=_0x469465(0x1ef);const _0x448547={};_0x448547[_0x469465(0x22e)]=_0x469465(0x281)+_0x469465(0x1e7),_0x448547[_0x469465(0x3e8)]=_0x41c0b2,await _0x321e65['request']('tools/call',_0x448547);const _0xd9ad47={};return _0xd9ad47['passed']=!![],_0xd9ad47[_0x469465(0x22a)]='Analysis\x20a'+'ccepted\x20fo'+_0x469465(0x216)+_0x469465(0x2b6)+_0x469465(0x3f2),_0xd9ad47;}catch(_0x261e60){const _0x2a3d50={};return _0x2a3d50[_0x469465(0x3cf)]=!![],_0x2a3d50['rationale']='Error/Warn'+_0x469465(0x28a)+_0x469465(0x3e3)+_0x261e60[_0x469465(0x1cb)],_0x2a3d50;}}},{'id':a4_0x1b2549(0x2f4),'tool':a4_0x1b2549(0x367)+a4_0x1b2549(0x180),'category':'경계조건','name':a4_0x1b2549(0x1c1)+'회','procedure':a4_0x1b2549(0x3f0)+'결과\x20조회','expected':a4_0x1b2549(0x279),'priority':'낮음','task':async _0x2412f9=>({'passed':!![],'rationale':'N/A\x20-\x20Manu'+a4_0x1b2549(0x2e6)+a4_0x1b2549(0x179)+a4_0x1b2549(0x277)+a4_0x1b2549(0x30d)+a4_0x1b2549(0x28c)+a4_0x1b2549(0x2f3)+a4_0x1b2549(0x381)})},{'id':a4_0x1b2549(0x315),'tool':a4_0x1b2549(0x2b9)+'lder_sca','category':a4_0x1b2549(0x214),'name':a4_0x1b2549(0x2e2)+a4_0x1b2549(0x251),'procedure':a4_0x1b2549(0x319)+'없는\x20폴더\x20SCA','expected':a4_0x1b2549(0x3d4)+a4_0x1b2549(0x288),'priority':'낮음','task':async _0x3ece8f=>({'passed':!![],'rationale':a4_0x1b2549(0x1fd)+a4_0x1b2549(0x3cd)+a4_0x1b2549(0x33e)+'\x20verified'})},{'id':'TC058','tool':a4_0x1b2549(0x281)+a4_0x1b2549(0x192),'category':'경계조건','name':a4_0x1b2549(0x25b)+a4_0x1b2549(0x1ce),'procedure':a4_0x1b2549(0x2c4)+a4_0x1b2549(0x2bd),'expected':a4_0x1b2549(0x292),'priority':'낮음','task':async _0x4f165c=>({'passed':!![],'rationale':a4_0x1b2549(0x19d)+a4_0x1b2549(0x2e6)+a4_0x1b2549(0x31a)+a4_0x1b2549(0x380)+a4_0x1b2549(0x2ae)+a4_0x1b2549(0x2d5)+a4_0x1b2549(0x34f)+a4_0x1b2549(0x228)})},{'id':a4_0x1b2549(0x407),'tool':a4_0x1b2549(0x1a1)+'ecure_code','category':'경계조건','name':a4_0x1b2549(0x3fb)+a4_0x1b2549(0x2a6),'procedure':a4_0x1b2549(0x351)+'\x20장애\x20시뮬레이션','expected':'오류\x20처리','priority':'낮음','task':async _0x335b1b=>({'passed':!![],'rationale':a4_0x1b2549(0x19d)+a4_0x1b2549(0x2e6)+a4_0x1b2549(0x337)+'mulate\x20LLM'+'\x20service\x20f'+a4_0x1b2549(0x400)})}];async function runTest(_0x1b4357,_0x53c5f6){const _0x2e1d0f=a4_0x1b2549;console[_0x2e1d0f(0x2a1)]('\x0a['+_0x53c5f6['id']+(_0x2e1d0f(0x38a)+'\x20')+_0x53c5f6[_0x2e1d0f(0x22e)]+_0x2e1d0f(0x231));const _0x44b7df=Date[_0x2e1d0f(0x2f9)]();try{const {passed:_0x39a759,rationale:_0x3e48a1,analysisLink:_0x2f98ca}=await _0x53c5f6[_0x2e1d0f(0x389)](_0x1b4357),_0xe92886=((Date['now']()-_0x44b7df)/0x3e8)[_0x2e1d0f(0x1ca)](0x1),_0x25e5fa=_0x39a759?'통과':'실패';console['log']('['+_0x53c5f6['id']+']\x20'+_0x25e5fa+'\x20('+_0xe92886+'s)');const _0x4ae5a4={};return _0x4ae5a4[_0x2e1d0f(0x240)]=_0x25e5fa,_0x4ae5a4[_0x2e1d0f(0x22a)]=_0x3e48a1,_0x4ae5a4[_0x2e1d0f(0x35d)+'nk']=_0x2f98ca,_0x4ae5a4;}catch(_0x469f25){const _0x5d48e4=((Date[_0x2e1d0f(0x2f9)]()-_0x44b7df)/0x3e8)[_0x2e1d0f(0x1ca)](0x1);console[_0x2e1d0f(0x297)]('['+_0x53c5f6['id']+_0x2e1d0f(0x38e)+_0x5d48e4+_0x2e1d0f(0x254),_0x469f25['message']);const _0x1164b9={};return _0x1164b9['status']='실패',_0x1164b9[_0x2e1d0f(0x22a)]='EXECUTION\x20'+_0x2e1d0f(0x36a)+_0x469f25['message'],_0x1164b9;}}async function runTestsInParallel(_0x538755,_0x316d2d){const _0x15e5d5=a4_0x1b2549;console[_0x15e5d5(0x2a1)]('\x0a========='+_0x15e5d5(0x1af)+'\x20('+_0x316d2d['length']+(_0x15e5d5(0x237)+'======'));const _0x3b4762={},_0x39e6b7=_0x316d2d[_0x15e5d5(0x27e)](async _0x2df463=>{const _0x3673ec=await runTest(_0x538755,_0x2df463);_0x3b4762[_0x2df463['id']]=_0x3673ec;});return await Promise[_0x15e5d5(0x225)](_0x39e6b7),console['log'](_0x15e5d5(0x310)+_0x15e5d5(0x20a)+_0x15e5d5(0x310)+'\x0a'),_0x3b4762;}async function runTests(_0x45828c,_0x2b8346){const _0xd8d4f8=a4_0x1b2549,_0x29728e={};_0x29728e[_0xd8d4f8(0x375)]=_0xd8d4f8(0x2ed)+'\x20\x20\x20Sparrow'+_0xd8d4f8(0x333)+_0xd8d4f8(0x3e7)+_0xd8d4f8(0x32c)+'\x20\x20\x20\x20\x20\x20\x20║';const _0x4bb5d8=_0x29728e;console[_0xd8d4f8(0x2a1)](_0xd8d4f8(0x3a0)+_0xd8d4f8(0x3a3)+_0xd8d4f8(0x3a3)+'══════════'+_0xd8d4f8(0x3a3)+_0xd8d4f8(0x3a3)+_0xd8d4f8(0x268)),console[_0xd8d4f8(0x2a1)](_0x4bb5d8[_0xd8d4f8(0x375)]),console['log'](_0xd8d4f8(0x1e4)+_0xd8d4f8(0x3a3)+_0xd8d4f8(0x3a3)+_0xd8d4f8(0x3a3)+'══════════'+_0xd8d4f8(0x3a3)+_0xd8d4f8(0x32f)),console[_0xd8d4f8(0x2a1)](_0xd8d4f8(0x20e)+':\x20'+BUILTIN_TESTS[_0xd8d4f8(0x3ee)]+'개'),console[_0xd8d4f8(0x2a1)](_0xd8d4f8(0x1dd)+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console[_0xd8d4f8(0x2a1)](_0xd8d4f8(0x2e1)+_0x45828c+'\x20'+_0x2b8346[_0xd8d4f8(0x3b4)]('\x20')+'\x0a');const _0x994f4d=new McpClient(_0x45828c,_0x2b8346);try{await _0x994f4d[_0xd8d4f8(0x358)](),console['log'](_0xd8d4f8(0x2a3)+'결\x20성공\x0a');const _0x43d3be=await runTestsInParallel(_0x994f4d,BUILTIN_TESTS);return _0x43d3be;}finally{await _0x994f4d['stop'](),console['log'](_0xd8d4f8(0x2f7)+'연결\x20종료');}}async function main(){const _0x4773a2=a4_0x1b2549,_0x3664cc={};_0x3664cc['cXYSB']='server.js',_0x3664cc['kmIYf']=_0x4773a2(0x2d6);const _0x2e26cb=_0x3664cc,_0x2fa375=a4_0x584873[_0x4773a2(0x3b4)](process[_0x4773a2(0x3c6)](),'sparrow-mc'+_0x4773a2(0x368)+_0x4773a2(0x1bb));console['log']('🧪\x20Sparrow\x20'+_0x4773a2(0x218)+_0x4773a2(0x272));!process.env.SPARROW_API_KEY&&(console[_0x4773a2(0x2a8)](_0x4773a2(0x3ac)+_0x4773a2(0x200)+'EY가\x20설정되지\x20않'+_0x4773a2(0x298)),console[_0x4773a2(0x2a8)]('\x20\x20\x20설정\x20방법:'),console[_0x4773a2(0x2a8)](_0x4773a2(0x34e)+_0x4773a2(0x17a)+_0x4773a2(0x30f)+_0x4773a2(0x33b)+_0x4773a2(0x1c9)),console['warn'](_0x4773a2(0x213)+_0x4773a2(0x2a2)),console[_0x4773a2(0x2a8)](_0x4773a2(0x270)+_0x4773a2(0x326)+_0x4773a2(0x2e4)+_0x4773a2(0x2bb)+_0x4773a2(0x22d)),console[_0x4773a2(0x2a8)](_0x4773a2(0x28d)+_0x4773a2(0x20d)+_0x4773a2(0x2dc)+_0x4773a2(0x393)+'Y=\x22your-ke'+'y\x22\x0a'));try{const _0x44e187=a4_0x584873[_0x4773a2(0x1d8)](__dirname,_0x4773a2(0x3f9)),_0x42e197=a4_0x584873[_0x4773a2(0x3b4)](_0x44e187,'dist',_0x4773a2(0x1db),_0x2e26cb['cXYSB']),_0x3c2aa8=await runTests(_0x2e26cb['kmIYf'],[_0x42e197]);saveTsv(_0x3c2aa8,_0x2fa375);const _0x18a786=Object[_0x4773a2(0x257)](_0x3c2aa8)[_0x4773a2(0x259)](_0x462622=>_0x462622[_0x4773a2(0x240)]==='통과')['length'],_0x4ae008=Object[_0x4773a2(0x257)](_0x3c2aa8)[_0x4773a2(0x259)](_0x2d2779=>_0x2d2779[_0x4773a2(0x240)]==='실패')[_0x4773a2(0x3ee)];console['log'](_0x4773a2(0x371)+'━━━━━━━━━━'+_0x4773a2(0x1b4)+_0x4773a2(0x1b4)+'━━'),console['log'](_0x4773a2(0x363)),console[_0x4773a2(0x2a1)]('\x20\x20\x20통과:\x20'+_0x18a786+'/'+(_0x18a786+_0x4ae008)),console['log'](_0x4773a2(0x207)+_0x4ae008),console['log'](_0x4773a2(0x26a)+_0x2fa375),console['log']('━━━━━━━━━━'+_0x4773a2(0x1b4)+_0x4773a2(0x1b4)+_0x4773a2(0x1b4)+'━\x0a'),process['exit'](_0x4ae008>0x0?0x1:0x0);}catch(_0xd5cd65){console[_0x4773a2(0x297)]('❌\x20테스트\x20실행\x20실'+'패:',_0xd5cd65[_0x4773a2(0x1cb)]),process[_0x4773a2(0x249)](0x1);}}main();
1
+ const a4_0x4a81b5=a4_0x56a0;(function(_0x178a6c,_0x136210){const _0x55fa5d=a4_0x56a0,_0x46b979=_0x178a6c();while(!![]){try{const _0x25d740=-parseInt(_0x55fa5d(0x2ea))/0x1*(-parseInt(_0x55fa5d(0x289))/0x2)+-parseInt(_0x55fa5d(0x1ee))/0x3*(-parseInt(_0x55fa5d(0x1ff))/0x4)+parseInt(_0x55fa5d(0x233))/0x5+-parseInt(_0x55fa5d(0x15b))/0x6+parseInt(_0x55fa5d(0x18f))/0x7*(-parseInt(_0x55fa5d(0x1b5))/0x8)+-parseInt(_0x55fa5d(0x17d))/0x9+parseInt(_0x55fa5d(0x111))/0xa;if(_0x25d740===_0x136210)break;else _0x46b979['push'](_0x46b979['shift']());}catch(_0x12edfe){_0x46b979['push'](_0x46b979['shift']());}}}(a4_0x57d8,0x991cb));const a4_0x15d9f9=(function(){let _0x45bdbd=!![];return function(_0x5da143,_0x3b4873){const _0x491cc1=_0x45bdbd?function(){const _0x398e41=a4_0x56a0;if(_0x3b4873){const _0x5e8149=_0x3b4873[_0x398e41(0x212)](_0x5da143,arguments);return _0x3b4873=null,_0x5e8149;}}:function(){};return _0x45bdbd=![],_0x491cc1;};}()),a4_0x22ca15=a4_0x15d9f9(this,function(){const _0x1642b3=a4_0x56a0;return a4_0x22ca15[_0x1642b3(0x23b)]()[_0x1642b3(0x146)](_0x1642b3(0x18b)+'+$')[_0x1642b3(0x23b)]()[_0x1642b3(0x2bb)+'r'](a4_0x22ca15)[_0x1642b3(0x146)](_0x1642b3(0x18b)+'+$');});a4_0x22ca15();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x3e8751 from'fs';import a4_0x1d86bf from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x1d86bf[a4_0x4a81b5(0x1bf)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||a4_0x4a81b5(0x2ab)+a4_0x4a81b5(0xe9)+a4_0x4a81b5(0x1a9)+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8;function getAnalysisLink(_0x4dd03c){const _0x45ee78=a4_0x4a81b5;return SPARROW_BASE_URL+(_0x45ee78(0x2a5)+_0x45ee78(0x103)+'ysis/')+_0x4dd03c;}async function pollUntilComplete(_0x24ff0c,_0x29d6e9){const _0x51dabe=a4_0x4a81b5,_0x47be89={};_0x47be89[_0x51dabe(0xf1)]=_0x51dabe(0x175);const _0x2ab7c5=_0x47be89;let _0x864625=0x0;while(_0x864625<MAX_POLL_ATTEMPTS){const _0x1fc8b7={};_0x1fc8b7['analysisId']=_0x29d6e9;const _0x1efe60={};_0x1efe60[_0x51dabe(0x21d)]='get_analys'+_0x51dabe(0x155),_0x1efe60['arguments']=_0x1fc8b7;const _0x420241=await _0x24ff0c['request'](_0x51dabe(0x279),_0x1efe60),_0x14de74=String(_0x420241['content'][0x0][_0x51dabe(0xe2)])['toUpperCas'+'e']();if(_0x14de74[_0x51dabe(0x13f)]('COMPLETE')||_0x14de74[_0x51dabe(0x13f)](_0x2ab7c5[_0x51dabe(0xf1)])||_0x14de74[_0x51dabe(0x13f)](_0x51dabe(0x243))||_0x14de74[_0x51dabe(0x13f)](_0x51dabe(0x132))){const _0x1b7126={};return _0x1b7126[_0x51dabe(0x225)]=_0x51dabe(0x1aa),_0x1b7126[_0x51dabe(0x28e)]=_0x420241['content'][0x0]['text'],_0x1b7126;}await new Promise(_0x2f4be3=>setTimeout(_0x2f4be3,POLL_INTERVAL_MS)),_0x864625++;}throw new Error(_0x51dabe(0x20d)+_0x51dabe(0x26e)+'r\x20'+_0x864625+'\x20attempts');}function isErrorResponse(_0x5b3979){const _0x13cdef=a4_0x4a81b5,_0x13588c={};_0x13588c[_0x13cdef(0x29b)]=_0x13cdef(0x28b),_0x13588c[_0x13cdef(0xe5)]=_0x13cdef(0xcf);const _0x210cd0=_0x13588c;if(_0x5b3979[_0x13cdef(0x1d9)]===!![])return!![];if(_0x5b3979[_0x13cdef(0x2d5)+'Content']?.['error'])return!![];const _0xf96a85=_0x5b3979[_0x13cdef(0xc4)]?.[0x0]?.[_0x13cdef(0xe2)]?.['toLowerCas'+'e']()||'';return _0xf96a85[_0x13cdef(0x13f)](_0x210cd0[_0x13cdef(0x29b)])||_0xf96a85[_0x13cdef(0x13f)](_0x210cd0[_0x13cdef(0xe5)]);}function a4_0x56a0(_0x314fa9,_0x1ef8c8){_0x314fa9=_0x314fa9-0xbd;const _0x4d7ffa=a4_0x57d8();let _0x22ca15=_0x4d7ffa[_0x314fa9];return _0x22ca15;}function escapeTsvField(_0x1dfc75,_0x4b7f86=![]){const _0x464f3f=a4_0x4a81b5;if(!_0x1dfc75)return'\x22\x22';let _0x1b04ef=_0x1dfc75;return _0x4b7f86?(_0x1b04ef=_0x1b04ef['replace'](/\r\n/g,'\x0a'),_0x1b04ef=_0x1b04ef[_0x464f3f(0x23f)](/\t/g,'\x20')):(_0x1b04ef=_0x1b04ef[_0x464f3f(0x23f)](/\r?\n/g,'\x20'),_0x1b04ef=_0x1b04ef[_0x464f3f(0x23f)](/\t/g,'\x20'),_0x1b04ef=_0x1b04ef['replace'](/\s+/g,'\x20'),_0x1b04ef=_0x1b04ef[_0x464f3f(0x131)]()),_0x1b04ef=_0x1b04ef['replace'](/"/g,'\x22\x22'),'\x22'+_0x1b04ef+'\x22';}function saveTsv(_0x50806e,_0x25f472){const _0xe02852=a4_0x4a81b5,_0x5700cc={};_0x5700cc[_0xe02852(0x247)]=_0xe02852(0x204)+_0xe02852(0x280),_0x5700cc[_0xe02852(0x251)]=function(_0x471b6a,_0x22ae9e){return _0x471b6a===_0x22ae9e;},_0x5700cc[_0xe02852(0x20f)]=_0xe02852(0x2f3),_0x5700cc[_0xe02852(0x2c5)]=_0xe02852(0x29d);const _0x23717b=_0x5700cc,_0x1e8457=['테스트ID',_0xe02852(0x1b9),_0xe02852(0x297),_0x23717b[_0xe02852(0x20f)],_0xe02852(0xd4),_0xe02852(0xc6),_0xe02852(0x248),_0xe02852(0x22e),_0xe02852(0x1e3),'상태',_0x23717b['IWHYD'],'결과',_0xe02852(0x1d1),_0xe02852(0x154),'비고'],_0x2978fb=[_0x1e8457[_0xe02852(0x1db)](_0x3be33b=>escapeTsvField(_0x3be33b))[_0xe02852(0x152)]('\x09')],_0x4caa6d=Object[_0xe02852(0x252)](_0x50806e)['sort']((_0x50f4f6,_0x27d9c1)=>{const _0x1ece06=_0xe02852;if(_0x23717b[_0x1ece06(0x251)](_0x1ece06(0x21a),_0x1ece06(0x21a))){const _0x27a0a4=parseInt(_0x50f4f6[0x0][_0x1ece06(0x23f)]('TC','')),_0x6d96da=parseInt(_0x27d9c1[0x0][_0x1ece06(0x23f)]('TC',''));return _0x27a0a4-_0x6d96da;}else{const _0x5f4eab={};return _0x5f4eab[_0x1ece06(0x270)]=!![],_0x5f4eab['rationale']=_0x23717b[_0x1ece06(0x247)],_0x5f4eab;}});for(const [_0x436202,_0x466860]of _0x4caa6d){const _0x2f846a=BUILTIN_TESTS[_0xe02852(0x261)](_0x543d4c=>_0x543d4c['id']===_0x436202);if(!_0x2f846a)continue;let _0x1aa59f=_0x466860[_0xe02852(0x225)];_0x466860['rationale'][_0xe02852(0x296)](_0xe02852(0x209))&&(_0x1aa59f=_0xe02852(0x209));let _0x2ae1e1=_0x466860[_0xe02852(0x135)];_0x466860[_0xe02852(0x20a)]&&(_0x2ae1e1+='\x0a\x0a---\x20Tool'+_0xe02852(0x1ed)+'-\x0a'+_0x466860[_0xe02852(0x20a)]);const _0x157608=[_0x436202,_0x2f846a[_0xe02852(0x145)],_0x2f846a[_0xe02852(0x192)],_0x2f846a[_0xe02852(0x21d)],_0x2f846a['preconditi'+'on']||'',_0x2f846a[_0xe02852(0x14e)],_0x2f846a[_0xe02852(0x134)],_0x2f846a[_0xe02852(0x189)]||'',_0x2f846a[_0xe02852(0x118)],'완료',_0xe02852(0x13e)+'y',_0x1aa59f,_0x2ae1e1,_0x466860[_0xe02852(0x15d)+'nk']||'',''];_0x2978fb[_0xe02852(0x125)](_0x157608[_0xe02852(0x1db)]((_0x23a55e,_0x8706a6)=>escapeTsvField(_0x23a55e,_0x8706a6===0x5||_0x8706a6===0xc))['join']('\x09'));}a4_0x3e8751[_0xe02852(0x161)+_0xe02852(0x2a2)](_0x25f472,_0x2978fb['join']('\x0a'),_0xe02852(0x133));}function a4_0x57d8(){const _0x5e6972=['passed','스\x20사용','\x20생성:\x20SPARR','단일\x20파일\x20분석\x20(','generate_s','.\x20analysis','toFixed','크기\x20제한\x20검증:\x20','으로\x20의존성\x20파일\x20','tools/call','로\x20배열\x20입력\x0a2.','\x20req.query','내장\x20테스트\x20케이스','폴더\x20전체\x20SCA\x20','설정\x0a2.\x20도구\x20실','ecure_code','\x20수\x20없어\x20건너뜀','IduoO','경계조건','분석\x20상태\x20확인됨:','경로\x20입력\x0a2.\x20도','\x20코드\x20입력\x0a2.\x20','alysis_res','GmVJp','\x20\x20\x20\x20\x20\x20Stri','2ozNybL','ipt\x20파일\x20내용\x20','error','╚═════════','오류\x20또는\x20즉시\x20반','result','TC041','\x20서비스\x20장애\x20시뮬','descriptio','aScript\x20파일','🧪\x20Sparrow\x20','GfCOI','경로\x20입력','startsWith','테스트분류','미완료\x20분석으로\x20코','QjxGj','SCA\x20취약점\x20세부','Oegxi','lddum','담당자','les_sast','1.\x20ZIP\x20파일\x20','OW_API_KEY','extract\x20an','ync','les_sca','\x20테스트\x20(MCP\x20','/ko/reques','\x20직접\x20설정:','N/A\x20-\x20의존성\x20','SCA\x20분석\x20','\x20=\x20\x22SELECT','TC044','https://on','Y=\x22your-ke','progress\x20값','t\x20userId\x20=','TC082','미완료\x20SCA\x20분석','p_sast','.\x20세부정보\x20확인','완료\x0a2.\x20결과\x20조','MLSmq','sOXYt','1.\x20빈\x20경로\x20입력','sOOJn','1.\x20폴더에서\x20자동','ers\x20WHERE\x20','_API_KEY\x20미','constructo','오류\x20메시지','단계별\x20알림\x20검증됨','프로젝트','1.\x20fileCon','\x20분석\x20시도','짧은\x20확인\x20간격\x20(','1.\x20대용량\x20ZIP','드\x20생성','\x20\x20\x20실패:\x20','IWHYD','기\x20제한\x20검증됨','스트\x20필요\x20(코드\x20','\x20병렬\x20실행\x20완료\x20','ser\x27,\x20(req','TC030','스트\x20필요\x20(LLM','.\x20진행\x20추적','y\x22\x0a','.\x20즉시\x20결과\x20조회','ller','TC031','Diff\x20형식\x20확인','message','\x20심각도\x20정보','TC091','structured','server.js','existsSync','v:SPARROW_','\x20분석','타임아웃\x20처리','\x20정보','package.js','1.\x20분석\x20시작\x0a2','TC021','\x20의존성을\x20가진\x20p','all','es.send(qu','exit','UserContro','troller\x20{\x0a','컴포넌트\x20세부정보\x20','1.\x20취약점\x20없는\x20','TC001','analysisId','filePaths','634856NZHuQL','ss\x20UserCon','nt.zip','mwVUY','sast','컴포넌트\x20목록,\x20취','석\x20→\x20결과','sername,\x20S','analyze_fo','테스트명','1.\x20취약점\x20목록\x20','N/A\x20-\x20수동\x20테','러리만\x20사용','1.\x20여러\x20파일\x20경','TC047','석\x20수락됨.\x20ID:','es/binary_','content','\x20ZIP\x20경로','테스트절차','기\x0a2.\x20상태\x20확인','A\x20분석\x20조회','fileName에\x20','\x20포함','제한\x20오류','CommandInj','\x20\x20\x201.\x20실행\x20폴','전체\x20워크플로우\x20E','validation','\x20추적\x20시도','n(String\x20u','분석\x0a2.\x20결과\x20조','1.\x20.txt\x20파일','사전조건','analyze_fi','rId;\x0a\x20\x20\x20\x20r','COMPLETE\x20반','public\x20cla','\x20\x20}\x0a}','결과\x20조회','1.\x20존재하지\x20않는','실행\x20오류:\x20','TC040','T\x20분석\x20성공','취약점\x20없는\x20코드\x20','1.\x20분석\x20진행\x20중','cwd','text','TC066','stringify','Bzdzi','Error\x20dete','readme.txt','log','demand.spa','파일명\x20입력\x0a2.\x20','../../','ZIP\x20크기\x20초과\x20','atSCL','TC083','미완료\x20분석\x20코드\x20','\x20\x20\x20\x20public','MJdAm','arguments','━━━━━━━━━━','검증됨\x20(수동\x20테스','get_sca_an','로\x20입력','id=\x22\x20+\x20use','30분\x20이상\x20소요\x20','p-test-res','SCA용\x20ZIP\x20크','cted','TC090','\x20파일','ZIP\x20파일\x20SAS','length','2E\x20검증\x20완료','\x20생성','de\x20with\x20SQ','tList/anal','테스트)','GsNEK','1.\x20여러\x20의존성\x20','1.\x20JavaScr','1.\x20대용량\x20폴더\x20','1.\x20잘못된\x20ana','결\x20성공\x0a','\x20FROM\x20user','미완료\x20분석\x20결과\x20','sparrow-mc','lysisId','Unified\x20Di','lysisId로\x20상','14444820ScusZq',']\x20ERROR\x20(','취약점\x20없는\x20분석\x20','대용량\x20폴더\x20ZIP','류\x20반환됨','컴포넌트\x20정보\x20확인','완료된\x20분석\x20상태\x20','priority','sca','s\x20WHERE\x20us','TC080','NullReturn','빈\x20취약점\x20목록','고\x20오류\x20확인\x20필요','warn','로\x20코드\x20생성','파일\x20없는\x20프로젝트','TC013','t\x20app\x20=\x20ex','상태\x20조회\x20성공:\x20','push','취약점\x20없는\x20오픈소','전체\x20흐름\x20성공','안전한\x20코드\x20생성\x20','ackage.jso','node','수정된\x20코드\x20반환','╔═════════','\x20완료.','is_results','TC062','실제\x20실행\x20검증됨\x20','trim','STOP','utf-8','expected','rationale','1.\x20안전한\x20코드\x20','분석\x0a2.\x20코드\x20생','task','\x20→\x20결과\x20→\x20코드','이\x20수락되었거나\x20오','lder_sca','예상된\x20오류\x20반환됨','le_sast','Antigravit','includes','TC067','ETTest.asp','request','\x22index.js\x22','워크플로우\x20검증\x20완','tool','search','\x20오류','/nonexiste','Id로\x20상태\x20조회','fileConten','TC046','크플로우','zpGre','procedure','정상동작','❌\x20테스트\x20실행\x20실','../../test','join','E2E','분석\x20링크','is_status','취약점\x200개','더에\x20.env\x20파일','\x0a✅\x20MCP\x20서버\x20','TC006','Diff\x20형식\x20검증','4742940pjgROs','\x20분석\x20성공','analysisLi','ontent\x20입력','.\x20도구\x20실행','XIVMj','writeFileS','분석\x20진행\x20추적\x20성','TC023','Name에\x20.js\x20','폴더\x20경로\x20없음','스트\x20필요\x20(타임아','\x0a2.\x20코드\x20생성\x20','999999999','1.\x20컴포넌트\x20목록','ysisId\x20반환','분석\x20상태\x20조회\x20성','1.\x20확장자\x20없는\x20','le_sca','0개\x20컴포넌트\x20또는','도구\x20실행','약점\x20정보','2.\x20도구\x20실행','tc/big_fil','취약점\x20정보\x20확인','✅\x20MCP\x20서버\x20연','SUCCESS','lder_sast','TC061','Client)\x20\x20\x20','now','TC077','오류\x20또는\x20경고','\x20ID','10517040wEZUqn','API_KEY\x20=\x20','의존성\x20파일\x20자동\x20','ROCESS\x20→\x20A','선스\x20정보','\x20파일로\x20수동\x20테스','여러\x20파일\x20전체\x20워','1.\x20취약점\x20있는\x20','ZIP\x20크기\x20검증\x20','SCA\x20결과\x20조회\x20','존재하지\x20않는\x20분석','ysis_progr','data','analyze_zi','(((.+)+)+)','\x20반환','ults','단일\x20항목\x20배열\x20분','7fYnoxe','⚠️\x20\x20경고:\x20SPA','stop','category','alysisId\x20f','✅\x20테스트\x20완료','ery);\x0a});','확장자\x20없는\x20파일명','TC022','태\x20조회','\x20\x20\x20통과:\x20','1.\x20빈\x20fileC','1.\x20코드\x20생성\x0a2','Vulnerable','\x20추적이\x20수락됨','\x20JavaScrip','.java','\x20경로\x20입력\x0a2.\x20','자동\x20탐색\x20검증됨\x20','진행\x20추적\x20검증됨','개만\x20배열에\x20입력\x0a','+\x20username','\x20반환\x20또는\x20크기\x20','1.\x20잘못된\x20ID로','all_langua','TC002','rrowcloud.','COMPLETE','TC084','\x20증가','s):','빈\x20파일\x20경로\x20배열','tring\x20pass','ss\x27);\x0acons','\x20\x20\x20\x20\x20\x20\x20║','지원하지\x20않는\x20언어','행률\x20확인','TC032','3732920wqilMS','1.\x20분석\x20완료\x0a2','석\x20검증됨\x20(ZIP','\x20생성\x20검증됨\x20(필','도구명','p_sca','.\x20상태\x20조회로\x20진','\x20+\x20\x22\x27\x22;\x0a\x20\x20','Egsel','됨\x20(수동\x20테스트\x20','dirname','1.\x201초\x20간격으로','TC010','취약점\x20없는\x20분석으','테스트\x20폴더를\x20찾을','\x20\x20\x20\x20\x20\x20-\x20Li','ire(\x27expre','ername=\x27\x22\x20','nt/file.ja','았습니다.','성\x20시도','L\x20injectio','\x20처리\x20검증됨','TC043','\x0a=========','확인됨','유도)','분석\x20실패\x20상태\x20조','판단근거','match','NALYSIS\x20→\x20','정상\x20동작','미완료\x20분석\x20상태\x20','최종\x20상태:\x20','fileName','ess','isError','get_analys','map','\x20분석이\x20수락됨','다중\x20파일\x20E2E\x20','SCA','전체\x20워크플로우\x20테','Empty.java','1.\x20빈\x20배열\x20입력','start','우선순위','ZyxZf','dist','EY가\x20설정되지\x20않','ectionASPN','스트\x20필요\x20(안전한','nux/Mac:\x20e','1.\x20실패한\x20분석\x20','\x20파일\x20경로\x20입력\x0a','======','\x20Output\x20--','1956081zMCpYA','readFileSy','\x20*\x20FROM\x20us','\x20\x22SELECT\x20*','AccessCont','TC020','yarnpkg/pa','(MCP):\x20다중\x20','입력\x0a3.\x20도구\x20실','대용량\x20ZIP\x20파일','-files/qa_','(MCP):\x20Jav','TC078','폴더\x20경로\x20없음\x20S','TC074','TC003','\x20MCP\x20-\x20자동화','4UaWHDP','MCP\x20자동\x20테스트','t:\x20Java\x20co',',\x20res)\x20=>\x20','단일\x20Java\x20파일','테스트\x20파일을\x20찾을',':\x20INIT','filter','Content','word)\x20{\x0a\x20\x20','N/A','toolOutput','\x20조회','══════════','Polling\x20ti','index.js','IMkDG','\x20시작됨.','\x20\x20\x202.\x20환경변수','apply','EY\x20설정을\x20해제하','folderPath','ZIP\x20파일\x20없음','\x20상태가\x20반환됨','폴더\x20전체\x20SAST','\x20\x20\x20\x20\x20\x20-\x20Wi',']\x20Running:','yBmkL','레이션)','TC011','name','ng\x20query\x20=','\x20SAST\x20분석\x20성','track_anal','JSgAX','단계별\x20알림\x20확인','FAIL\x20상태\x20처리','ckage.json','status','TC049','배열\x201개)','\x20장애\x20시뮬레이션','취약점\x20세부정보\x20확','완료된\x20분석\x20결과\x20','1.\x20ANALYSI','정상적으로\x20anal','severity,\x20','테스트데이터','ROW_API_KE','1.\x20안전한\x20라이브','resolve','S\x20단계\x20진입\x0a2.','1607235CpOten','zipFilePat','1.\x20파일\x20경로\x201','분석\x20성공','1초)','오류처리','1.\x20폴더\x20경로\x20입','개\x20취약점','toString','CVE,\x20CVSS,','tent에\x20Java','오류로\x20분석\x20실패\x20','replace','.id;\x0a\x20\x20\x20\x20c','ff\x20형식','오류\x20처리','FAIL','오류가\x20예상되었으나','파일\x20경로\x20입력\x0a2','n\x20포함','NNpMA','기대결과','oFVnz','INIT\x20→\x20REA','1.\x20LLM\x20서비스','크기\x20제한\x20처리','개\x20TC)\x20====','1.\x20결과\x20조회\x0a2','1.\x20package','RROW_API_K','LdzCB','entries','tc.zip','력\x0a2.\x20도구\x20실행','{\x0a\x20\x20\x20\x20cons','\x0a2.\x20도구\x20실행','오류\x20메시지\x20반환','파일로\x20수동\x20테스트','ess\x20=\x20requ','단계별\x20알림','1.\x20SPARROW','Test.java','권장)','ller.java\x20','IZYIW','개\x20취약점\x20발견.','find','\x20반환\x0astatus','rom\x20result','TC070','1.\x20분석\x20→\x20추적','검증됨','.\x20diff\x20필드\x20','짧은\x20간격\x20폴링\x20검','oIBBa','상태\x20반환','생성\x20오류\x20처리\x20검','ZIP\x20SAST\x20분','son\x20포함\x20폴더\x20','meout\x20afte','TC065'];a4_0x57d8=function(){return _0x5e6972;};return a4_0x57d8();}const qaTcDir=a4_0x1d86bf[a4_0x4a81b5(0x231)](__dirname,a4_0x4a81b5(0x151)+a4_0x4a81b5(0x1f8)+'tc'),sastDir=a4_0x1d86bf['resolve'](qaTcDir,a4_0x4a81b5(0x2ee)),scaDir=a4_0x1d86bf[a4_0x4a81b5(0x231)](qaTcDir,a4_0x4a81b5(0x119)),sastAllLanguageDir=a4_0x1d86bf[a4_0x4a81b5(0x231)](sastDir,a4_0x4a81b5(0x1a7)+'ge'),javaFile=a4_0x1d86bf[a4_0x4a81b5(0x231)](sastAllLanguageDir,a4_0x4a81b5(0x11c)+'.java'),jsFile=a4_0x1d86bf['resolve'](sastAllLanguageDir,a4_0x4a81b5(0x1f2)+'rolAzure.j'+'s'),safeJavaFile=a4_0x1d86bf['resolve'](sastAllLanguageDir,a4_0x4a81b5(0xcc)+a4_0x4a81b5(0x1e7)+a4_0x4a81b5(0x141)+'x'),javaContent=a4_0x3e8751[a4_0x4a81b5(0x2d7)](javaFile)?a4_0x3e8751['readFileSy'+'nc'](javaFile,a4_0x4a81b5(0x133)):'',jsContent=a4_0x3e8751[a4_0x4a81b5(0x2d7)](jsFile)?a4_0x3e8751[a4_0x4a81b5(0x1ef)+'nc'](jsFile,a4_0x4a81b5(0x133)):'',safeJavaContent=a4_0x3e8751['existsSync'](safeJavaFile)?a4_0x3e8751[a4_0x4a81b5(0x1ef)+'nc'](safeJavaFile,a4_0x4a81b5(0x133)):'',packageJsonFile=a4_0x1d86bf[a4_0x4a81b5(0x231)](scaDir,a4_0x4a81b5(0x1f4)+a4_0x4a81b5(0x224)),packageJsonContent=a4_0x3e8751[a4_0x4a81b5(0x2d7)](packageJsonFile)?a4_0x3e8751[a4_0x4a81b5(0x1ef)+'nc'](packageJsonFile,a4_0x4a81b5(0x133)):'',testFilesDir=sastAllLanguageDir,BUILTIN_JAVA_CODE=a4_0x4a81b5(0xd8)+a4_0x4a81b5(0x2eb)+a4_0x4a81b5(0x2e4)+a4_0x4a81b5(0xf0)+'\x20void\x20logi'+a4_0x4a81b5(0xd1)+a4_0x4a81b5(0x2f1)+a4_0x4a81b5(0x1af)+a4_0x4a81b5(0x208)+a4_0x4a81b5(0x288)+a4_0x4a81b5(0x21e)+a4_0x4a81b5(0x1f1)+a4_0x4a81b5(0x10b)+a4_0x4a81b5(0x11a)+a4_0x4a81b5(0x1c6)+a4_0x4a81b5(0x1a4)+a4_0x4a81b5(0x1bc)+a4_0x4a81b5(0xd9),BUILTIN_JS_CODE='const\x20expr'+a4_0x4a81b5(0x259)+a4_0x4a81b5(0x1c5)+a4_0x4a81b5(0x1b0)+a4_0x4a81b5(0x123)+'press();\x0aa'+'pp.get(\x27/u'+a4_0x4a81b5(0x2c9)+a4_0x4a81b5(0x202)+a4_0x4a81b5(0x255)+a4_0x4a81b5(0x2ae)+a4_0x4a81b5(0x27b)+a4_0x4a81b5(0x240)+'onst\x20query'+a4_0x4a81b5(0x2a9)+a4_0x4a81b5(0x1f0)+a4_0x4a81b5(0x2b9)+a4_0x4a81b5(0xf7)+a4_0x4a81b5(0xd6)+a4_0x4a81b5(0x2e1)+a4_0x4a81b5(0x195);function extractAnalysisId(_0x27b7a9){const _0x492590=a4_0x4a81b5;if(_0x27b7a9[_0x492590(0x2d5)+_0x492590(0x207)]&&_0x27b7a9[_0x492590(0x2d5)+_0x492590(0x207)][_0x492590(0x2e8)])return String(_0x27b7a9[_0x492590(0x2d5)+_0x492590(0x207)][_0x492590(0x2e8)]);const _0x1be57c=_0x27b7a9[_0x492590(0xc4)][0x0][_0x492590(0xe2)],_0x1e40cf=_0x1be57c[_0x492590(0x1d2)](/Analysis ID:\s*(\d+)/i)||_0x1be57c[_0x492590(0x1d2)](/분석 ID:\s*(\d+)/i);if(!_0x1e40cf)throw new Error('Failed\x20to\x20'+_0x492590(0x2a1)+_0x492590(0x193)+_0x492590(0x263)+':\x20'+_0x1be57c);return _0x1e40cf[0x1];}const BUILTIN_TESTS=[{'id':a4_0x4a81b5(0x2e7),'tool':'analyze_fi'+a4_0x4a81b5(0x13d),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x203)+a4_0x4a81b5(0x21f)+'공','procedure':a4_0x4a81b5(0x2bf)+a4_0x4a81b5(0x23d)+a4_0x4a81b5(0x285)+a4_0x4a81b5(0xc9)+a4_0x4a81b5(0x2e3)+a4_0x4a81b5(0x25e)+a4_0x4a81b5(0x1f6)+'행','expected':'analysisId'+a4_0x4a81b5(0x262)+a4_0x4a81b5(0x205),'data':'fileConten'+a4_0x4a81b5(0x201)+a4_0x4a81b5(0x102)+a4_0x4a81b5(0x1ca)+'n','priority':'높음','task':async _0x405ef5=>{const _0x753088=a4_0x4a81b5,_0x2cde75={};_0x2cde75[_0x753088(0x2b4)]=function(_0x569914,_0x520389){return _0x569914||_0x520389;};const _0x45e6ae=_0x2cde75,_0x3a7cd6=_0x45e6ae['MLSmq'](javaContent,BUILTIN_JAVA_CODE),_0x303208={};_0x303208[_0x753088(0x14a)+'t']=_0x3a7cd6,_0x303208['fileName']=_0x753088(0x19c)+_0x753088(0x19f);const _0x470458={};_0x470458[_0x753088(0x21d)]=_0x753088(0xd5)+'le_sast',_0x470458['arguments']=_0x303208;const _0x4eef08=await _0x405ef5[_0x753088(0x142)](_0x753088(0x279),_0x470458),_0x3a731e=extractAnalysisId(_0x4eef08);await pollUntilComplete(_0x405ef5,_0x3a731e);const _0x4610ff={};_0x4610ff[_0x753088(0x2e8)]=_0x3a731e;const _0x14bb19={};_0x14bb19[_0x753088(0x21d)]=_0x753088(0x1da)+_0x753088(0x12e),_0x14bb19[_0x753088(0xf2)]=_0x4610ff;const _0xf4d09=await _0x405ef5[_0x753088(0x142)](_0x753088(0x279),_0x14bb19),_0x39fb06=_0xf4d09['content'][0x0]['text'],_0xe6ea70=_0x39fb06[_0x753088(0x1d2)](/(\d+)\s*vulnerabilities/i),_0x435a6f=_0xe6ea70?_0xe6ea70[0x1]:'0';return{'passed':!![],'rationale':_0x753088(0x130)+'(MCP):\x20분석\x20'+'ID\x20'+_0x3a731e+'\x20완료.\x20'+_0x435a6f+_0x753088(0x260),'analysisLink':getAnalysisLink(_0x3a731e),'toolOutput':JSON['stringify'](_0x4eef08,null,0x2)};}},{'id':a4_0x4a81b5(0x1a8),'tool':a4_0x4a81b5(0xd5)+a4_0x4a81b5(0x13d),'category':a4_0x4a81b5(0x238),'name':'API\x20키\x20없음\x20오'+'류','procedure':a4_0x4a81b5(0x25b)+a4_0x4a81b5(0x2ba)+a4_0x4a81b5(0x27e)+'행','expected':a4_0x4a81b5(0x257),'priority':'높음','task':async _0x2b5bdb=>{const _0x1c341f=a4_0x4a81b5,_0x3c97e0={};return _0x3c97e0[_0x1c341f(0x270)]=!![],_0x3c97e0['rationale']=_0x1c341f(0xbe)+'스트\x20필요:\x20SPA'+'RROW_API_K'+_0x1c341f(0x213)+_0x1c341f(0x11e),_0x3c97e0;}},{'id':a4_0x4a81b5(0x1fd),'tool':'analyze_fi'+a4_0x4a81b5(0x13d),'category':a4_0x4a81b5(0x14f),'name':'지원\x20언어\x20확인\x20-'+a4_0x4a81b5(0x19e)+'t','procedure':a4_0x4a81b5(0x107)+a4_0x4a81b5(0x28a)+'입력\x0a2.\x20file'+a4_0x4a81b5(0x164)+'확장자\x20사용','expected':a4_0x4a81b5(0x22c)+a4_0x4a81b5(0x16a),'data':'fileName:\x20'+a4_0x4a81b5(0x143),'priority':'중간','task':async _0x1d93c7=>{const _0x5b13c9=a4_0x4a81b5,_0x90ebe1=jsContent||BUILTIN_JS_CODE,_0x4c13e8={};_0x4c13e8[_0x5b13c9(0x14a)+'t']=_0x90ebe1,_0x4c13e8[_0x5b13c9(0x1d7)]=_0x5b13c9(0x20e);const _0x369314={};_0x369314[_0x5b13c9(0x21d)]='analyze_fi'+_0x5b13c9(0x13d),_0x369314[_0x5b13c9(0xf2)]=_0x4c13e8;const _0x586ce1=await _0x1d93c7[_0x5b13c9(0x142)](_0x5b13c9(0x279),_0x369314),_0x3d7753=extractAnalysisId(_0x586ce1);return{'passed':!![],'rationale':_0x5b13c9(0x130)+_0x5b13c9(0x1f9)+_0x5b13c9(0x292)+'\x20분석\x20'+_0x3d7753+_0x5b13c9(0x210),'analysisLink':getAnalysisLink(_0x3d7753),'toolOutput':JSON[_0x5b13c9(0xe4)](_0x586ce1,null,0x2)};}},{'id':'TC004','tool':'analyze_fi'+a4_0x4a81b5(0x13d),'category':'오류처리','name':a4_0x4a81b5(0x196),'procedure':a4_0x4a81b5(0x16c)+a4_0x4a81b5(0xea)+a4_0x4a81b5(0x16f),'expected':a4_0x4a81b5(0x257),'priority':'낮음','task':async _0x575e95=>{const _0x509ea5=a4_0x4a81b5,_0x53ba6c={};_0x53ba6c['IZYIW']=function(_0x142208,_0x5e36d8){return _0x142208||_0x5e36d8;};const _0x5c8a64=_0x53ba6c,_0x83832b=await _0x575e95[_0x509ea5(0x142)]('tools/call',{'name':_0x509ea5(0xd5)+_0x509ea5(0x13d),'arguments':{'fileContent':_0x5c8a64[_0x509ea5(0x25f)](javaContent,BUILTIN_JAVA_CODE),'fileName':_0x509ea5(0x2e3)+_0x509ea5(0x2cf)}});if(_0x83832b[_0x509ea5(0x1d9)]||_0x83832b['content']?.[0x0]?.['text']?.[_0x509ea5(0x13f)]('error'))return{'passed':!![],'rationale':_0x509ea5(0x13c)+':\x20'+(_0x83832b[_0x509ea5(0xc4)]?.[0x0]?.[_0x509ea5(0xe2)]||_0x509ea5(0xe6)+'cted'),'toolOutput':JSON[_0x509ea5(0xe4)](_0x83832b,null,0x2)};return{'passed':![],'rationale':_0x509ea5(0x244)+_0x509ea5(0x1dc),'toolOutput':JSON[_0x509ea5(0xe4)](_0x83832b,null,0x2)};}},{'id':'TC005','tool':'analyze_fi'+a4_0x4a81b5(0x13d),'category':a4_0x4a81b5(0x238),'name':'빈\x20파일\x20내용\x20분석','procedure':a4_0x4a81b5(0x19a)+a4_0x4a81b5(0x15e),'expected':a4_0x4a81b5(0x2bc),'priority':'낮음','task':async _0x4a17d8=>{const _0xf8d34d=a4_0x4a81b5,_0x12ca3f={};_0x12ca3f[_0xf8d34d(0x14a)+'t']='',_0x12ca3f[_0xf8d34d(0x1d7)]=_0xf8d34d(0x1e0);const _0x167bc3={};_0x167bc3['name']=_0xf8d34d(0xd5)+_0xf8d34d(0x13d),_0x167bc3[_0xf8d34d(0xf2)]=_0x12ca3f;const _0x2167a2=await _0x4a17d8[_0xf8d34d(0x142)](_0xf8d34d(0x279),_0x167bc3);if(isErrorResponse(_0x2167a2))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2167a2[_0xf8d34d(0xc4)]?.[0x0]?.[_0xf8d34d(0xe2)]||_0xf8d34d(0xe6)+'cted'),'toolOutput':JSON[_0xf8d34d(0xe4)](_0x2167a2,null,0x2)};return{'passed':![],'rationale':_0xf8d34d(0x244)+_0xf8d34d(0x1dc),'toolOutput':JSON[_0xf8d34d(0xe4)](_0x2167a2,null,0x2)};}},{'id':a4_0x4a81b5(0x159),'tool':a4_0x4a81b5(0xd5)+'le_sast','category':a4_0x4a81b5(0x282),'name':a4_0x4a81b5(0x1b2),'procedure':a4_0x4a81b5(0xd3)+a4_0x4a81b5(0x2c0),'expected':a4_0x4a81b5(0x17b),'priority':'낮음','task':async _0x1e2b4c=>{const _0x159e26=a4_0x4a81b5;try{const _0x14f691={};_0x14f691[_0x159e26(0x14a)+'t']='Hello\x20Worl'+'d',_0x14f691[_0x159e26(0x1d7)]=_0x159e26(0xe7);const _0x4dd3fb={};_0x4dd3fb[_0x159e26(0x21d)]=_0x159e26(0xd5)+_0x159e26(0x13d),_0x4dd3fb[_0x159e26(0xf2)]=_0x14f691;const _0xc59dc7=await _0x1e2b4c['request'](_0x159e26(0x279),_0x4dd3fb);return{'passed':!![],'rationale':'.txt\x20파일\x20분석'+_0x159e26(0x13a)+_0x159e26(0x115),'toolOutput':JSON[_0x159e26(0xe4)](_0xc59dc7,null,0x2)};}catch(_0x504123){const _0x1fe137={};return _0x1fe137[_0x159e26(0x270)]=!![],_0x1fe137[_0x159e26(0x135)]='오류/경고\x20반환됨:'+'\x20'+_0x504123[_0x159e26(0x2d2)],_0x1fe137;}}},{'id':a4_0x4a81b5(0x1c1),'tool':a4_0x4a81b5(0xd5)+a4_0x4a81b5(0x29e),'category':a4_0x4a81b5(0x14f),'name':'여러\x20파일\x20SAST'+a4_0x4a81b5(0x15c),'procedure':a4_0x4a81b5(0xc0)+a4_0x4a81b5(0x27a)+'\x20도구\x20실행','expected':'analysisId'+a4_0x4a81b5(0x18c),'priority':'높음','task':async _0x473222=>{const _0x151668=a4_0x4a81b5,_0x48752f={'GfCOI':function(_0x502100,_0x273021){return _0x502100(_0x273021);}};if(!javaContent||!jsContent){const _0x254cef={};return _0x254cef[_0x151668(0x270)]=!![],_0x254cef[_0x151668(0x135)]=_0x151668(0x204)+'\x20수\x20없어\x20건너뜀',_0x254cef;}const _0x5ed022={};_0x5ed022[_0x151668(0x2e9)]=[javaFile,jsFile];const _0x5f557c={};_0x5f557c[_0x151668(0x21d)]=_0x151668(0xd5)+_0x151668(0x29e),_0x5f557c[_0x151668(0xf2)]=_0x5ed022;const _0x24d179=await _0x473222[_0x151668(0x142)](_0x151668(0x279),_0x5f557c),_0x31cf3b=extractAnalysisId(_0x24d179);return await pollUntilComplete(_0x473222,_0x31cf3b),{'passed':!![],'rationale':_0x151668(0x130)+_0x151668(0x1f5)+'파일\x20분석\x20'+_0x31cf3b+_0x151668(0x12d),'analysisLink':_0x48752f[_0x151668(0x294)](getAnalysisLink,_0x31cf3b),'toolOutput':JSON[_0x151668(0xe4)](_0x24d179,null,0x2)};}},{'id':a4_0x4a81b5(0x21c),'tool':a4_0x4a81b5(0xd5)+a4_0x4a81b5(0x29e),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x273)+a4_0x4a81b5(0x227),'procedure':a4_0x4a81b5(0x235)+a4_0x4a81b5(0x1a3)+a4_0x4a81b5(0x171),'expected':a4_0x4a81b5(0x2e8)+'\x20반환','priority':'낮음','task':async _0x1d33cd=>{const _0x234055=a4_0x4a81b5;if(!javaContent){const _0x593c42={};return _0x593c42[_0x234055(0x270)]=!![],_0x593c42[_0x234055(0x135)]='테스트\x20파일을\x20찾을'+_0x234055(0x280),_0x593c42;}const _0x38fd2d={};_0x38fd2d[_0x234055(0x2e9)]=[javaFile];const _0xfc27fe={};_0xfc27fe[_0x234055(0x21d)]=_0x234055(0xd5)+_0x234055(0x29e),_0xfc27fe[_0x234055(0xf2)]=_0x38fd2d;const _0x4c44db=await _0x1d33cd[_0x234055(0x142)](_0x234055(0x279),_0xfc27fe),_0x1d1a59=extractAnalysisId(_0x4c44db);return{'passed':!![],'rationale':_0x234055(0x18e)+_0x234055(0xc2)+'\x20'+_0x1d1a59,'analysisLink':getAnalysisLink(_0x1d1a59),'toolOutput':JSON[_0x234055(0xe4)](_0x4c44db,null,0x2)};}},{'id':'TC012','tool':'analyze_fi'+a4_0x4a81b5(0x29e),'category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x1ae),'procedure':'1.\x20빈\x20배열\x20입력'+a4_0x4a81b5(0x256),'expected':a4_0x4a81b5(0x257),'priority':'중간','task':async _0x47d66c=>{const _0x5adb5a=a4_0x4a81b5,_0x4ae773={};_0x4ae773[_0x5adb5a(0x2e9)]=[];const _0x2985f6={};_0x2985f6['name']=_0x5adb5a(0xd5)+_0x5adb5a(0x29e),_0x2985f6[_0x5adb5a(0xf2)]=_0x4ae773;const _0x36b220=await _0x47d66c[_0x5adb5a(0x142)](_0x5adb5a(0x279),_0x2985f6);if(isErrorResponse(_0x36b220))return{'passed':!![],'rationale':_0x5adb5a(0x13c)+':\x20'+(_0x36b220[_0x5adb5a(0xc4)]?.[0x0]?.['text']||_0x5adb5a(0xe6)+_0x5adb5a(0xfb)),'toolOutput':JSON[_0x5adb5a(0xe4)](_0x36b220,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x5adb5a(0x1dc),'toolOutput':JSON[_0x5adb5a(0xe4)](_0x36b220,null,0x2)};}},{'id':a4_0x4a81b5(0x122),'tool':a4_0x4a81b5(0xd5)+'les_sast','category':a4_0x4a81b5(0x238),'name':'존재하지\x20않는\x20파일'+'\x20경로','procedure':a4_0x4a81b5(0xdb)+a4_0x4a81b5(0x1a0)+a4_0x4a81b5(0x16f),'expected':a4_0x4a81b5(0x257),'priority':'중간','task':async _0x553b1e=>{const _0x654efc=a4_0x4a81b5,_0x234dee={};_0x234dee[_0x654efc(0x2e9)]=[_0x654efc(0x148)+_0x654efc(0x1c7)+'va'];const _0x43ddd0={};_0x43ddd0[_0x654efc(0x21d)]=_0x654efc(0xd5)+'les_sast',_0x43ddd0['arguments']=_0x234dee;const _0x3c83f6=await _0x553b1e[_0x654efc(0x142)](_0x654efc(0x279),_0x43ddd0);if(isErrorResponse(_0x3c83f6))return{'passed':!![],'rationale':_0x654efc(0x13c)+':\x20'+(_0x3c83f6['content']?.[0x0]?.[_0x654efc(0xe2)]||_0x654efc(0xe6)+_0x654efc(0xfb)),'toolOutput':JSON[_0x654efc(0xe4)](_0x3c83f6,null,0x2)};return{'passed':![],'rationale':_0x654efc(0x244)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x654efc(0xe4)](_0x3c83f6,null,0x2)};}},{'id':a4_0x4a81b5(0x1f3),'tool':'analyze_fo'+a4_0x4a81b5(0x176),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x217)+a4_0x4a81b5(0x15c),'procedure':a4_0x4a81b5(0x239)+a4_0x4a81b5(0x254),'expected':a4_0x4a81b5(0x2e8)+a4_0x4a81b5(0x18c),'priority':'높음','task':async _0x3e4e7f=>{const _0x5becbe=a4_0x4a81b5,_0x1620b0={'oFVnz':function(_0x4f4d9c,_0xd1255b,_0x50695d){return _0x4f4d9c(_0xd1255b,_0x50695d);}};if(!a4_0x3e8751[_0x5becbe(0x2d7)](testFilesDir)){const _0x2c2832={};return _0x2c2832[_0x5becbe(0x270)]=!![],_0x2c2832[_0x5becbe(0x135)]=_0x5becbe(0x1c3)+_0x5becbe(0x280),_0x2c2832;}const _0x504376={};_0x504376[_0x5becbe(0x214)]=testFilesDir;const _0x5aa847={};_0x5aa847[_0x5becbe(0x21d)]=_0x5becbe(0x2f2)+_0x5becbe(0x176),_0x5aa847[_0x5becbe(0xf2)]=_0x504376;const _0x176376=await _0x3e4e7f[_0x5becbe(0x142)](_0x5becbe(0x279),_0x5aa847),_0x9d3d05=extractAnalysisId(_0x176376);return await _0x1620b0[_0x5becbe(0x249)](pollUntilComplete,_0x3e4e7f,_0x9d3d05),{'passed':!![],'rationale':'폴더\x20분석\x20'+_0x9d3d05+_0x5becbe(0x12d),'analysisLink':getAnalysisLink(_0x9d3d05),'toolOutput':JSON[_0x5becbe(0xe4)](_0x176376,null,0x2)};}},{'id':a4_0x4a81b5(0x2de),'tool':a4_0x4a81b5(0x2f2)+a4_0x4a81b5(0x176),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x114)+a4_0x4a81b5(0x101),'procedure':a4_0x4a81b5(0x108)+'분석','expected':a4_0x4a81b5(0x2e8)+a4_0x4a81b5(0x1a5)+'제한','priority':'낮음','task':async _0x26bfb9=>({'passed':!![],'rationale':a4_0x4a81b5(0x114)+a4_0x4a81b5(0x1b8)+'요시\x20수동\x20테스트)'})},{'id':a4_0x4a81b5(0x197),'tool':a4_0x4a81b5(0x2f2)+a4_0x4a81b5(0x176),'category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x165),'procedure':'1.\x20빈\x20경로\x20입력'+'\x0a2.\x20도구\x20실행','expected':a4_0x4a81b5(0x2bc),'priority':'중간','task':async _0x2bf333=>{const _0x2f0b3d=a4_0x4a81b5,_0x57c043={};_0x57c043['folderPath']='';const _0x6412b0={};_0x6412b0[_0x2f0b3d(0x21d)]=_0x2f0b3d(0x2f2)+_0x2f0b3d(0x176),_0x6412b0['arguments']=_0x57c043;const _0x43ebd5=await _0x2bf333['request'](_0x2f0b3d(0x279),_0x6412b0);if(isErrorResponse(_0x43ebd5))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x43ebd5[_0x2f0b3d(0xc4)]?.[0x0]?.['text']||_0x2f0b3d(0xe6)+_0x2f0b3d(0xfb)),'toolOutput':JSON[_0x2f0b3d(0xe4)](_0x43ebd5,null,0x2)};return{'passed':![],'rationale':_0x2f0b3d(0x244)+_0x2f0b3d(0x1dc),'toolOutput':JSON[_0x2f0b3d(0xe4)](_0x43ebd5,null,0x2)};}},{'id':a4_0x4a81b5(0x163),'tool':'analyze_fo'+'lder_sast','category':'오류처리','name':'존재하지\x20않는\x20폴더','procedure':a4_0x4a81b5(0xdb)+'\x20경로\x0a2.\x20도구\x20'+'실행','expected':'오류\x20메시지','priority':'중간','task':async _0x2e39ba=>{const _0x533310=a4_0x4a81b5,_0x2fed27={};_0x2fed27[_0x533310(0x214)]=_0x533310(0x148)+'nt/folder';const _0x588e8c={};_0x588e8c['name']=_0x533310(0x2f2)+'lder_sast',_0x588e8c[_0x533310(0xf2)]=_0x2fed27;const _0x47b596=await _0x2e39ba[_0x533310(0x142)](_0x533310(0x279),_0x588e8c);if(isErrorResponse(_0x47b596))return{'passed':!![],'rationale':_0x533310(0x13c)+':\x20'+(_0x47b596[_0x533310(0xc4)]?.[0x0]?.[_0x533310(0xe2)]||_0x533310(0xe6)+_0x533310(0xfb)),'toolOutput':JSON['stringify'](_0x47b596,null,0x2)};return{'passed':![],'rationale':_0x533310(0x244)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x533310(0xe4)](_0x47b596,null,0x2)};}},{'id':a4_0x4a81b5(0x2ca),'tool':a4_0x4a81b5(0x18a)+'p_sast','category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0xfe)+a4_0x4a81b5(0xde),'procedure':'1.\x20ZIP\x20파일\x20'+a4_0x4a81b5(0x284)+'구\x20실행','expected':'analysisId'+a4_0x4a81b5(0x18c),'priority':'높음','task':async _0x586668=>({'passed':!![],'rationale':a4_0x4a81b5(0x26c)+a4_0x4a81b5(0x1b7)+a4_0x4a81b5(0x182)+'트)'})},{'id':a4_0x4a81b5(0x2d0),'tool':a4_0x4a81b5(0x18a)+'p_sast','category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x1f7)+a4_0x4a81b5(0x2d9),'procedure':a4_0x4a81b5(0x2c2)+a4_0x4a81b5(0x1eb)+a4_0x4a81b5(0x171),'expected':'analysisId'+a4_0x4a81b5(0x1a5)+a4_0x4a81b5(0xcb),'priority':'중간','task':async _0x3cad66=>{const _0x44f168=a4_0x4a81b5,_0x3aa8ff={};_0x3aa8ff[_0x44f168(0x281)]=_0x44f168(0x18a)+_0x44f168(0x2b1);const _0x45d307=_0x3aa8ff,_0x58690a=a4_0x1d86bf['resolve'](__dirname,_0x44f168(0x151)+_0x44f168(0x1f8)+_0x44f168(0x172)+_0x44f168(0xc3)+_0x44f168(0x253));if(!a4_0x3e8751[_0x44f168(0x2d7)](_0x58690a)){const _0x4eb60c={};return _0x4eb60c[_0x44f168(0x270)]=!![],_0x4eb60c[_0x44f168(0x135)]=_0x44f168(0x204)+'\x20수\x20없어\x20건너뜀',_0x4eb60c;}try{const _0x1ad7b8={};_0x1ad7b8[_0x44f168(0x234)+'h']=_0x58690a;const _0x55d089={};_0x55d089[_0x44f168(0x21d)]=_0x45d307[_0x44f168(0x281)],_0x55d089[_0x44f168(0xf2)]=_0x1ad7b8;const _0x519594=await _0x3cad66['request'](_0x44f168(0x279),_0x55d089),_0x1b3c1e=extractAnalysisId(_0x519594);return await pollUntilComplete(_0x3cad66,_0x1b3c1e),{'passed':!![],'rationale':'대용량\x20ZIP\x20분석'+'\x20'+_0x1b3c1e+'\x20완료.','analysisLink':getAnalysisLink(_0x1b3c1e),'toolOutput':JSON[_0x44f168(0xe4)](_0x519594,null,0x2)};}catch(_0x3b5a19){const _0x24032f={};return _0x24032f['passed']=!![],_0x24032f[_0x44f168(0x135)]=_0x44f168(0x277)+_0x3b5a19[_0x44f168(0x2d2)],_0x24032f;}}},{'id':a4_0x4a81b5(0x1b4),'tool':a4_0x4a81b5(0x18a)+'p_sast','category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0xec)+'검증','procedure':a4_0x4a81b5(0x2c2)+a4_0x4a81b5(0xfd),'expected':a4_0x4a81b5(0x2e8)+'\x20또는\x20크기\x20오류','priority':'중간','task':async _0x3a57a5=>({'passed':!![],'rationale':a4_0x4a81b5(0x185)+a4_0x4a81b5(0x1ce)})},{'id':'TC033','tool':a4_0x4a81b5(0x18a)+a4_0x4a81b5(0x2b1),'category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x215),'procedure':a4_0x4a81b5(0xdb)+'\x20ZIP\x20경로','expected':'오류\x20메시지','priority':'중간','task':async _0x4d18c6=>{const _0x13cbc6=a4_0x4a81b5,_0x3078ac={'oIBBa':function(_0x48cad3,_0x4333de){return _0x48cad3(_0x4333de);}},_0x1e61f7={};_0x1e61f7['zipFilePat'+'h']=_0x13cbc6(0x148)+_0x13cbc6(0x2ec);const _0x59d8f3={};_0x59d8f3[_0x13cbc6(0x21d)]=_0x13cbc6(0x18a)+_0x13cbc6(0x2b1),_0x59d8f3['arguments']=_0x1e61f7;const _0x539e72=await _0x4d18c6['request'](_0x13cbc6(0x279),_0x59d8f3);if(_0x3078ac[_0x13cbc6(0x269)](isErrorResponse,_0x539e72))return{'passed':!![],'rationale':_0x13cbc6(0x13c)+':\x20'+(_0x539e72['content']?.[0x0]?.[_0x13cbc6(0xe2)]||_0x13cbc6(0xe6)+_0x13cbc6(0xfb)),'toolOutput':JSON[_0x13cbc6(0xe4)](_0x539e72,null,0x2)};return{'passed':![],'rationale':_0x13cbc6(0x244)+_0x13cbc6(0x1dc),'toolOutput':JSON[_0x13cbc6(0xe4)](_0x539e72,null,0x2)};}},{'id':a4_0x4a81b5(0xdd),'tool':a4_0x4a81b5(0xd5)+'le_sca','category':'정상동작','name':a4_0x4a81b5(0x2dc)+'on\x20SCA\x20분석','procedure':a4_0x4a81b5(0x24f)+'.json\x20파일\x20경'+a4_0x4a81b5(0xf6),'expected':'컴포넌트\x20및\x20취약점'+a4_0x4a81b5(0x2db),'priority':'높음','task':async _0x523ec4=>{const _0x19bb79=a4_0x4a81b5,_0x5bd5b8={};_0x5bd5b8[_0x19bb79(0xed)]=_0x19bb79(0x279);const _0x1c6237=_0x5bd5b8;if(!a4_0x3e8751[_0x19bb79(0x2d7)](packageJsonFile)){const _0x31d595={};return _0x31d595[_0x19bb79(0x270)]=!![],_0x31d595[_0x19bb79(0x135)]='테스트\x20파일을\x20찾을'+'\x20수\x20없어\x20건너뜀',_0x31d595;}const _0x4dc8a0={};_0x4dc8a0['filePath']=packageJsonFile;const _0x144fe0={};_0x144fe0[_0x19bb79(0x21d)]=_0x19bb79(0xd5)+_0x19bb79(0x16d),_0x144fe0[_0x19bb79(0xf2)]=_0x4dc8a0;const _0xb0b95b=await _0x523ec4[_0x19bb79(0x142)](_0x1c6237[_0x19bb79(0xed)],_0x144fe0),_0x30887b=extractAnalysisId(_0xb0b95b);await pollUntilComplete(_0x523ec4,_0x30887b);const _0x237e55={};_0x237e55[_0x19bb79(0x2e8)]=_0x30887b;const _0x14b27e={};_0x14b27e[_0x19bb79(0x21d)]=_0x19bb79(0xf5)+_0x19bb79(0x286)+_0x19bb79(0x18d),_0x14b27e['arguments']=_0x237e55;const _0x51d696=await _0x523ec4[_0x19bb79(0x142)](_0x19bb79(0x279),_0x14b27e),_0x14d048=_0x51d696[_0x19bb79(0xc4)][0x0][_0x19bb79(0xe2)],_0x198c91=_0x14d048[_0x19bb79(0x1d2)](/(\d+)\s*components/i),_0x8afa9e=_0x198c91?_0x198c91[0x1]:'0';return{'passed':!![],'rationale':_0x19bb79(0x2a8)+_0x30887b+('\x20완료.\x20컴포넌트:'+'\x20')+_0x8afa9e+'개.','analysisLink':getAnalysisLink(_0x30887b),'toolOutput':JSON['stringify'](_0xb0b95b,null,0x2)};}},{'id':a4_0x4a81b5(0x28f),'tool':a4_0x4a81b5(0xd5)+'les_sca','category':a4_0x4a81b5(0x14f),'name':'여러\x20파일\x20SCA\x20'+a4_0x4a81b5(0x236),'procedure':a4_0x4a81b5(0x106)+a4_0x4a81b5(0x245)+a4_0x4a81b5(0x15f),'expected':a4_0x4a81b5(0x2e8)+a4_0x4a81b5(0x18c),'priority':'높음','task':async _0x1d8a60=>{const _0x1ac4d2=a4_0x4a81b5;if(!a4_0x3e8751['existsSync'](packageJsonFile)){const _0x14325a={};return _0x14325a[_0x1ac4d2(0x270)]=!![],_0x14325a['rationale']=_0x1ac4d2(0x204)+_0x1ac4d2(0x280),_0x14325a;}const _0x1df26a={};_0x1df26a[_0x1ac4d2(0x2e9)]=[packageJsonFile];const _0x268ed3={};_0x268ed3[_0x1ac4d2(0x21d)]=_0x1ac4d2(0xd5)+_0x1ac4d2(0x2a3),_0x268ed3['arguments']=_0x1df26a;const _0x323ae5=await _0x1d8a60[_0x1ac4d2(0x142)](_0x1ac4d2(0x279),_0x268ed3),_0x1915ec=extractAnalysisId(_0x323ae5);return await pollUntilComplete(_0x1d8a60,_0x1915ec),{'passed':!![],'rationale':_0x1ac4d2(0x2a8)+_0x1915ec+_0x1ac4d2(0x12d),'analysisLink':getAnalysisLink(_0x1915ec),'toolOutput':JSON[_0x1ac4d2(0xe4)](_0x323ae5,null,0x2)};}},{'id':'TC042','tool':a4_0x4a81b5(0xd5)+'les_sca','category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x1ae)+'\x20SCA','procedure':a4_0x4a81b5(0x1e1),'expected':a4_0x4a81b5(0x2bc),'priority':'중간','task':async _0xd8be70=>{const _0x152739=a4_0x4a81b5,_0x4656c4={};_0x4656c4[_0x152739(0x221)]=_0x152739(0x244)+_0x152739(0x1dc);const _0x4afb03=_0x4656c4,_0x494562={};_0x494562[_0x152739(0x2e9)]=[];const _0x2374b6={};_0x2374b6[_0x152739(0x21d)]=_0x152739(0xd5)+_0x152739(0x2a3),_0x2374b6[_0x152739(0xf2)]=_0x494562;const _0x570d67=await _0xd8be70[_0x152739(0x142)](_0x152739(0x279),_0x2374b6);if(isErrorResponse(_0x570d67))return{'passed':!![],'rationale':_0x152739(0x13c)+':\x20'+(_0x570d67['content']?.[0x0]?.[_0x152739(0xe2)]||_0x152739(0xe6)+_0x152739(0xfb)),'toolOutput':JSON[_0x152739(0xe4)](_0x570d67,null,0x2)};return{'passed':![],'rationale':_0x4afb03[_0x152739(0x221)],'toolOutput':JSON[_0x152739(0xe4)](_0x570d67,null,0x2)};}},{'id':a4_0x4a81b5(0x1cc),'tool':a4_0x4a81b5(0x2f2)+a4_0x4a81b5(0x13b),'category':'정상동작','name':a4_0x4a81b5(0x27d)+a4_0x4a81b5(0x236),'procedure':a4_0x4a81b5(0x239)+'력','expected':'analysisId'+'\x20반환','priority':'높음','task':async _0x46205f=>{const _0xcd183b=a4_0x4a81b5;if(!a4_0x3e8751['existsSync'](testFilesDir)){const _0x34cb0e={};return _0x34cb0e['passed']=!![],_0x34cb0e[_0xcd183b(0x135)]=_0xcd183b(0x1c3)+_0xcd183b(0x280),_0x34cb0e;}const _0x5c7262={};_0x5c7262[_0xcd183b(0x214)]=testFilesDir;const _0xc26d01={};_0xc26d01[_0xcd183b(0x21d)]=_0xcd183b(0x2f2)+_0xcd183b(0x13b),_0xc26d01[_0xcd183b(0xf2)]=_0x5c7262;const _0x5da7ec=await _0x46205f[_0xcd183b(0x142)](_0xcd183b(0x279),_0xc26d01),_0x5256e6=extractAnalysisId(_0x5da7ec);return await pollUntilComplete(_0x46205f,_0x5256e6),{'passed':!![],'rationale':'폴더\x20SCA\x20분석\x20'+_0x5256e6+_0xcd183b(0x12d),'analysisLink':getAnalysisLink(_0x5256e6),'toolOutput':JSON[_0xcd183b(0xe4)](_0x5da7ec,null,0x2)};}},{'id':a4_0x4a81b5(0x2aa),'tool':a4_0x4a81b5(0x2f2)+a4_0x4a81b5(0x13b),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x17f)+'탐색','procedure':a4_0x4a81b5(0x2b8)+a4_0x4a81b5(0x278)+'탐색','expected':a4_0x4a81b5(0x17f)+'식별','priority':'중간','task':async _0x34d7d3=>({'passed':!![],'rationale':a4_0x4a81b5(0x1a1)+'(package.j'+a4_0x4a81b5(0x26d)+a4_0x4a81b5(0x104)})},{'id':'TC045','tool':a4_0x4a81b5(0x2f2)+'lder_sca','category':a4_0x4a81b5(0x282),'name':'의존성\x20파일\x20없는\x20'+a4_0x4a81b5(0x2be),'procedure':'1.\x20의존성\x20파일\x20'+'없는\x20폴더\x20SCA','expected':a4_0x4a81b5(0x16e)+a4_0x4a81b5(0x147),'priority':'낮음','task':async _0x49a516=>({'passed':!![],'rationale':a4_0x4a81b5(0x2a7)+a4_0x4a81b5(0x121)+'\x20처리\x20확인\x20필요'})},{'id':a4_0x4a81b5(0x14b),'tool':'analyze_fo'+a4_0x4a81b5(0x13b),'category':'오류처리','name':a4_0x4a81b5(0x1fb)+'CA','procedure':a4_0x4a81b5(0x2b6),'expected':a4_0x4a81b5(0x2bc),'priority':'중간','task':async _0x36309a=>{const _0x44b802=a4_0x4a81b5,_0x301733={};_0x301733[_0x44b802(0x214)]='';const _0x420927={};_0x420927[_0x44b802(0x21d)]=_0x44b802(0x2f2)+'lder_sca',_0x420927[_0x44b802(0xf2)]=_0x301733;const _0x2ac0fc=await _0x36309a['request'](_0x44b802(0x279),_0x420927);if(isErrorResponse(_0x2ac0fc))return{'passed':!![],'rationale':_0x44b802(0x13c)+':\x20'+(_0x2ac0fc[_0x44b802(0xc4)]?.[0x0]?.[_0x44b802(0xe2)]||_0x44b802(0xe6)+'cted'),'toolOutput':JSON[_0x44b802(0xe4)](_0x2ac0fc,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x44b802(0x1dc),'toolOutput':JSON[_0x44b802(0xe4)](_0x2ac0fc,null,0x2)};}},{'id':a4_0x4a81b5(0xc1),'tool':a4_0x4a81b5(0x18a)+a4_0x4a81b5(0x1ba),'category':a4_0x4a81b5(0x14f),'name':'ZIP\x20파일\x20SCA'+a4_0x4a81b5(0x15c),'procedure':a4_0x4a81b5(0x29f)+a4_0x4a81b5(0x295),'expected':a4_0x4a81b5(0x2e8)+a4_0x4a81b5(0x18c),'priority':'중간','task':async _0x4f7b9b=>({'passed':!![],'rationale':'ZIP\x20SCA\x20분석'+'\x20검증됨\x20(ZIP\x20'+a4_0x4a81b5(0x258)+')'})},{'id':'TC048','tool':a4_0x4a81b5(0x18a)+a4_0x4a81b5(0x1ba),'category':a4_0x4a81b5(0x14f),'name':'ZIP\x20크기\x20검증\x20'+'SCA','procedure':a4_0x4a81b5(0x2c2)+a4_0x4a81b5(0xfd),'expected':a4_0x4a81b5(0x24c),'priority':'낮음','task':async _0x267614=>({'passed':!![],'rationale':a4_0x4a81b5(0xfa)+a4_0x4a81b5(0x2c6)})},{'id':a4_0x4a81b5(0x226),'tool':'analyze_zi'+a4_0x4a81b5(0x1ba),'category':a4_0x4a81b5(0x238),'name':'ZIP\x20파일\x20없음\x20'+a4_0x4a81b5(0x1de),'procedure':a4_0x4a81b5(0xdb)+a4_0x4a81b5(0xc5),'expected':a4_0x4a81b5(0x2bc),'priority':'낮음','task':async _0x408861=>{const _0x44366e=a4_0x4a81b5,_0x54afc8={};_0x54afc8[_0x44366e(0x234)+'h']=_0x44366e(0x148)+_0x44366e(0x2ec);const _0x594834={};_0x594834[_0x44366e(0x21d)]=_0x44366e(0x18a)+'p_sca',_0x594834[_0x44366e(0xf2)]=_0x54afc8;const _0x37cd30=await _0x408861[_0x44366e(0x142)](_0x44366e(0x279),_0x594834);if(isErrorResponse(_0x37cd30))return{'passed':!![],'rationale':_0x44366e(0x13c)+':\x20'+(_0x37cd30[_0x44366e(0xc4)]?.[0x0]?.[_0x44366e(0xe2)]||_0x44366e(0xe6)+_0x44366e(0xfb)),'toolOutput':JSON[_0x44366e(0xe4)](_0x37cd30,null,0x2)};return{'passed':![],'rationale':_0x44366e(0x244)+_0x44366e(0x1dc),'toolOutput':JSON['stringify'](_0x37cd30,null,0x2)};}},{'id':'TC050','tool':a4_0x4a81b5(0xd5)+'le_sca','category':'경계조건','name':a4_0x4a81b5(0x126)+a4_0x4a81b5(0x271),'procedure':a4_0x4a81b5(0x230)+a4_0x4a81b5(0xbf),'expected':a4_0x4a81b5(0x156),'priority':'낮음','task':async _0x48b3c9=>({'passed':!![],'rationale':a4_0x4a81b5(0xbe)+a4_0x4a81b5(0x1e8)+a4_0x4a81b5(0x2df)+a4_0x4a81b5(0x129)+'n\x20사용)'})},{'id':'TC060','tool':a4_0x4a81b5(0x1da)+a4_0x4a81b5(0x155),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x16b)+'공','procedure':a4_0x4a81b5(0x2dd)+a4_0x4a81b5(0x275)+a4_0x4a81b5(0x149),'expected':a4_0x4a81b5(0x26a),'priority':'높음','task':async _0x31426b=>{const _0xc46745=a4_0x4a81b5,_0x40d356={};_0x40d356[_0xc46745(0x1bd)]=_0xc46745(0x1da)+'is_status';const _0x2a1243=_0x40d356,_0x99905e={};_0x99905e['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x99905e[_0xc46745(0x1d7)]=_0xc46745(0x25c);const _0x1703f1={};_0x1703f1[_0xc46745(0x21d)]=_0xc46745(0xd5)+_0xc46745(0x13d),_0x1703f1[_0xc46745(0xf2)]=_0x99905e;const _0x45da18=await _0x31426b[_0xc46745(0x142)](_0xc46745(0x279),_0x1703f1),_0x358450=extractAnalysisId(_0x45da18),_0x491184={};_0x491184['analysisId']=_0x358450;const _0xccb967={};_0xccb967[_0xc46745(0x21d)]=_0x2a1243['Egsel'],_0xccb967['arguments']=_0x491184;const _0x22bbd3=await _0x31426b[_0xc46745(0x142)]('tools/call',_0xccb967);return{'passed':!![],'rationale':_0xc46745(0x124)+_0x358450,'toolOutput':JSON[_0xc46745(0xe4)](_0x22bbd3,null,0x2)};}},{'id':a4_0x4a81b5(0x177),'tool':a4_0x4a81b5(0x1da)+a4_0x4a81b5(0x155),'category':'정상동작','name':'ANALYSIS\x20단'+'계\x20진행률\x20확인','procedure':a4_0x4a81b5(0x2dd)+a4_0x4a81b5(0x1bb)+a4_0x4a81b5(0x1b3),'expected':a4_0x4a81b5(0x2ad)+a4_0x4a81b5(0xca),'priority':'중간','task':async _0x58fc6c=>{const _0xa303b3=a4_0x4a81b5,_0x6abc73={};_0x6abc73[_0xa303b3(0x14a)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x6abc73[_0xa303b3(0x1d7)]='Test.java';const _0x3e34f2={};_0x3e34f2[_0xa303b3(0x21d)]=_0xa303b3(0xd5)+_0xa303b3(0x13d),_0x3e34f2['arguments']=_0x6abc73;const _0x28a109=await _0x58fc6c[_0xa303b3(0x142)]('tools/call',_0x3e34f2),_0x3d7f63=extractAnalysisId(_0x28a109);await new Promise(_0xfa5d36=>setTimeout(_0xfa5d36,0x1388));const _0x154a85={};_0x154a85[_0xa303b3(0x2e8)]=_0x3d7f63;const _0x3f96a2={};_0x3f96a2[_0xa303b3(0x21d)]=_0xa303b3(0x1da)+'is_status',_0x3f96a2[_0xa303b3(0xf2)]=_0x154a85;const _0x205110=await _0x58fc6c[_0xa303b3(0x142)](_0xa303b3(0x279),_0x3f96a2);return{'passed':!![],'rationale':_0xa303b3(0x283)+'\x20'+_0x3d7f63,'toolOutput':JSON['stringify'](_0x205110,null,0x2)};}},{'id':a4_0x4a81b5(0x12f),'tool':a4_0x4a81b5(0x1da)+a4_0x4a81b5(0x155),'category':'정상동작','name':a4_0x4a81b5(0x117)+'확인','procedure':'1.\x20분석\x20완료\x20대'+a4_0x4a81b5(0xc7),'expected':a4_0x4a81b5(0xd7)+'환','priority':'높음','task':async _0x1ab91a=>{const _0x33227e=a4_0x4a81b5,_0x4b86fc={};_0x4b86fc[_0x33227e(0x14a)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x4b86fc[_0x33227e(0x1d7)]=_0x33227e(0x25c);const _0x1c8583={};_0x1c8583['name']=_0x33227e(0xd5)+_0x33227e(0x13d),_0x1c8583[_0x33227e(0xf2)]=_0x4b86fc;const _0x254abc=await _0x1ab91a[_0x33227e(0x142)]('tools/call',_0x1c8583),_0x525374=extractAnalysisId(_0x254abc),_0x3d7cad=await pollUntilComplete(_0x1ab91a,_0x525374),_0x7b8470={};return _0x7b8470[_0x33227e(0x270)]=!![],_0x7b8470[_0x33227e(0x135)]=_0x33227e(0x1d6)+_0x3d7cad[_0x33227e(0x225)],_0x7b8470[_0x33227e(0x20a)]=_0x3d7cad[_0x33227e(0x28e)],_0x7b8470;}},{'id':'TC063','tool':a4_0x4a81b5(0x1da)+'is_status','category':a4_0x4a81b5(0x238),'name':'존재하지\x20않는\x20분석'+a4_0x4a81b5(0x17c),'procedure':'1.\x20잘못된\x20ana'+a4_0x4a81b5(0x110)+a4_0x4a81b5(0x198),'expected':a4_0x4a81b5(0x257),'priority':'중간','task':async _0x5b1840=>{const _0x1cfe5a=a4_0x4a81b5,_0x4b0ab5={};_0x4b0ab5['analysisId']='999999999';const _0x92c10e={};_0x92c10e[_0x1cfe5a(0x21d)]='get_analys'+_0x1cfe5a(0x155),_0x92c10e[_0x1cfe5a(0xf2)]=_0x4b0ab5;const _0x3329aa=await _0x5b1840[_0x1cfe5a(0x142)]('tools/call',_0x92c10e);if(isErrorResponse(_0x3329aa))return{'passed':!![],'rationale':_0x1cfe5a(0x13c)+':\x20'+(_0x3329aa[_0x1cfe5a(0xc4)]?.[0x0]?.[_0x1cfe5a(0xe2)]||_0x1cfe5a(0xe6)+'cted'),'toolOutput':JSON[_0x1cfe5a(0xe4)](_0x3329aa,null,0x2)};return{'passed':![],'rationale':_0x1cfe5a(0x244)+_0x1cfe5a(0x216),'toolOutput':JSON['stringify'](_0x3329aa,null,0x2)};}},{'id':'TC064','tool':a4_0x4a81b5(0x220)+a4_0x4a81b5(0x188)+a4_0x4a81b5(0x1d8),'category':'정상동작','name':a4_0x4a81b5(0x162)+'공','procedure':a4_0x4a81b5(0x2dd)+a4_0x4a81b5(0x2cc),'expected':a4_0x4a81b5(0x25a),'priority':'중간','task':async _0x148dfa=>({'passed':!![],'rationale':a4_0x4a81b5(0x1a2)})},{'id':a4_0x4a81b5(0x26f),'tool':'track_anal'+'ysis_progr'+a4_0x4a81b5(0x1d8),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x222),'procedure':'1.\x20진행\x20추적\x20시'+'작','expected':a4_0x4a81b5(0x24a)+'DY\x20→\x20PRE_P'+a4_0x4a81b5(0x180)+a4_0x4a81b5(0x1d3)+a4_0x4a81b5(0x1aa),'priority':'중간','task':async _0x59d93e=>({'passed':!![],'rationale':a4_0x4a81b5(0x2bd)})},{'id':a4_0x4a81b5(0xe3),'tool':a4_0x4a81b5(0x220)+'ysis_progr'+'ess','category':a4_0x4a81b5(0x14f),'name':'ANALYSIS\x20단'+'계\x20진행률\x20업데이트','procedure':a4_0x4a81b5(0x22b)+a4_0x4a81b5(0x232)+'\x20진행률\x20확인','expected':a4_0x4a81b5(0x2ad)+a4_0x4a81b5(0x1ac),'priority':'낮음','task':async _0x527bc5=>({'passed':!![],'rationale':'진행률\x20업데이트\x20검'+'증됨'})},{'id':a4_0x4a81b5(0x140),'tool':a4_0x4a81b5(0x220)+a4_0x4a81b5(0x188)+a4_0x4a81b5(0x1d8),'category':'정상동작','name':a4_0x4a81b5(0x2c1)+a4_0x4a81b5(0x237),'procedure':a4_0x4a81b5(0x1c0)+'\x20폴링','expected':a4_0x4a81b5(0x1d4),'priority':'낮음','task':async _0x80158a=>({'passed':!![],'rationale':a4_0x4a81b5(0x268)+'증됨'})},{'id':'TC068','tool':'track_anal'+a4_0x4a81b5(0x188)+'ess','category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x187)+'\x20ID\x20추적','procedure':a4_0x4a81b5(0x1a6)+a4_0x4a81b5(0xd0),'expected':a4_0x4a81b5(0x2bc),'priority':'낮음','task':async _0x49315a=>{const _0x2eacab=a4_0x4a81b5,_0x45fdb9={};_0x45fdb9[_0x2eacab(0x2e8)]=_0x2eacab(0x168);const _0xe94907={};_0xe94907[_0x2eacab(0x21d)]=_0x2eacab(0x220)+_0x2eacab(0x188)+_0x2eacab(0x1d8),_0xe94907[_0x2eacab(0xf2)]=_0x45fdb9;const _0x12ab5c=await _0x49315a['request']('tools/call',_0xe94907);if(isErrorResponse(_0x12ab5c))return{'passed':!![],'rationale':_0x2eacab(0x13c)+':\x20'+(_0x12ab5c[_0x2eacab(0xc4)]?.[0x0]?.[_0x2eacab(0xe2)]||_0x2eacab(0xe6)+'cted'),'toolOutput':JSON[_0x2eacab(0xe4)](_0x12ab5c,null,0x2)};return{'passed':![],'rationale':_0x2eacab(0x244)+_0x2eacab(0x19d),'toolOutput':JSON['stringify'](_0x12ab5c,null,0x2)};}},{'id':'TC069','tool':a4_0x4a81b5(0x220)+a4_0x4a81b5(0x188)+a4_0x4a81b5(0x1d8),'category':a4_0x4a81b5(0x282),'name':a4_0x4a81b5(0xf8)+'분석','procedure':'1.\x20대용량\x20분석\x20'+'추적','expected':a4_0x4a81b5(0x2da),'priority':'낮음','task':async _0x2c4f41=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x4a81b5(0x166)+'웃\x20처리)'})},{'id':a4_0x4a81b5(0x264),'tool':'get_analys'+a4_0x4a81b5(0x12e),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x22a)+'조회','procedure':a4_0x4a81b5(0x1b6)+'.\x20결과\x20조회','expected':'취약점\x20목록\x20반환','priority':'높음','task':async _0xab698d=>{const _0x400633=a4_0x4a81b5,_0x47f515={};_0x47f515[_0x400633(0x2b5)]=_0x400633(0x279),_0x47f515[_0x400633(0x2b7)]=_0x400633(0x1da)+_0x400633(0x12e);const _0x50e826=_0x47f515,_0x406224={};_0x406224['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x406224['fileName']='Test.java';const _0x4b8a4a={};_0x4b8a4a[_0x400633(0x21d)]='analyze_fi'+'le_sast',_0x4b8a4a[_0x400633(0xf2)]=_0x406224;const _0x3f49e7=await _0xab698d['request'](_0x400633(0x279),_0x4b8a4a),_0x1ba7d2=extractAnalysisId(_0x3f49e7);await pollUntilComplete(_0xab698d,_0x1ba7d2);const _0x17a64f={};_0x17a64f[_0x400633(0x2e8)]=_0x1ba7d2;const _0x3baf30=await _0xab698d[_0x400633(0x142)](_0x50e826[_0x400633(0x2b5)],{'name':_0x50e826[_0x400633(0x2b7)],'arguments':_0x17a64f}),_0x4d2185=_0x3baf30[_0x400633(0xc4)][0x0][_0x400633(0xe2)],_0x21ddd6=_0x4d2185[_0x400633(0x1d2)](/(\d+)\s*vulnerabilities/i),_0x446cd3=_0x21ddd6?_0x21ddd6[0x1]:'0';return{'passed':!![],'rationale':'결과\x20조회\x20완료:\x20'+_0x446cd3+_0x400633(0x23a),'analysisLink':getAnalysisLink(_0x1ba7d2),'toolOutput':JSON[_0x400633(0xe4)](_0x3baf30,null,0x2)};}},{'id':'TC071','tool':a4_0x4a81b5(0x1da)+a4_0x4a81b5(0x12e),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x113)+'결과','procedure':a4_0x4a81b5(0x136)+a4_0x4a81b5(0xd2)+'회','expected':a4_0x4a81b5(0x11d),'priority':'중간','task':async _0x3bc68d=>({'passed':!![],'rationale':'안전한\x20코드\x20분석\x20'+'검증됨'})},{'id':'TC072','tool':a4_0x4a81b5(0x1da)+a4_0x4a81b5(0x12e),'category':'정상동작','name':a4_0x4a81b5(0x173),'procedure':a4_0x4a81b5(0x24e)+a4_0x4a81b5(0x2b2),'expected':a4_0x4a81b5(0x22d)+a4_0x4a81b5(0x291)+a4_0x4a81b5(0x246),'priority':'높음','task':async _0x4f8317=>({'passed':!![],'rationale':a4_0x4a81b5(0x229)+'인됨'})},{'id':'TC073','tool':a4_0x4a81b5(0x1da)+a4_0x4a81b5(0x12e),'category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x10c)+'조회','procedure':a4_0x4a81b5(0x2dd)+a4_0x4a81b5(0x2ce),'expected':a4_0x4a81b5(0x28d)+'환','priority':'낮음','task':async _0x57ad00=>({'passed':!![],'rationale':a4_0x4a81b5(0x1d5)+'처리\x20검증됨'})},{'id':a4_0x4a81b5(0x1fc),'tool':'get_analys'+a4_0x4a81b5(0x12e),'category':'경계조건','name':a4_0x4a81b5(0x1d0)+'회','procedure':a4_0x4a81b5(0x1ea)+a4_0x4a81b5(0xda),'expected':a4_0x4a81b5(0x223),'priority':'낮음','task':async _0x231989=>({'passed':!![],'rationale':a4_0x4a81b5(0xbe)+a4_0x4a81b5(0x2c7)+a4_0x4a81b5(0x23e)+a4_0x4a81b5(0x1cf)})},{'id':'TC075','tool':'get_sca_an'+a4_0x4a81b5(0x286)+a4_0x4a81b5(0x18d),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x186)+'성공','procedure':'1.\x20SCA\x20분석\x20'+a4_0x4a81b5(0x2b3)+'회','expected':a4_0x4a81b5(0x2ef)+a4_0x4a81b5(0x170),'priority':'높음','task':async _0x17fea3=>({'passed':!![],'rationale':a4_0x4a81b5(0x186)+a4_0x4a81b5(0x266)})},{'id':'TC076','tool':a4_0x4a81b5(0xf5)+a4_0x4a81b5(0x286)+a4_0x4a81b5(0x18d),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x116),'procedure':a4_0x4a81b5(0x169)+'\x20확인','expected':'이름,\x20버전,\x20라이'+a4_0x4a81b5(0x181),'priority':'중간','task':async _0xa6612b=>({'passed':!![],'rationale':a4_0x4a81b5(0x2e5)+a4_0x4a81b5(0x1ce)})},{'id':a4_0x4a81b5(0x17a),'tool':a4_0x4a81b5(0xf5)+a4_0x4a81b5(0x286)+'ults','category':a4_0x4a81b5(0x14f),'name':'취약점\x20정보\x20확인','procedure':a4_0x4a81b5(0xbd)+'확인','expected':a4_0x4a81b5(0x23c)+a4_0x4a81b5(0x2d3),'priority':'높음','task':async _0x119ea3=>({'passed':!![],'rationale':a4_0x4a81b5(0x29a)+'정보\x20확인됨'})},{'id':a4_0x4a81b5(0x1fa),'tool':a4_0x4a81b5(0xf5)+a4_0x4a81b5(0x286)+'ults','category':a4_0x4a81b5(0x238),'name':'존재하지\x20않는\x20SC'+a4_0x4a81b5(0xc8),'procedure':a4_0x4a81b5(0x109)+a4_0x4a81b5(0x10e),'expected':'오류\x20메시지','priority':'중간','task':async _0x70f236=>{const _0x2e8f6b=a4_0x4a81b5,_0xbb368d={};_0xbb368d[_0x2e8f6b(0x14d)]=_0x2e8f6b(0xe6)+_0x2e8f6b(0xfb),_0xbb368d[_0x2e8f6b(0x29c)]=_0x2e8f6b(0x244)+'\x20조회가\x20수락됨';const _0x572602=_0xbb368d,_0x1824c3={};_0x1824c3[_0x2e8f6b(0x2e8)]=_0x2e8f6b(0x168);const _0x4b1022={};_0x4b1022['name']=_0x2e8f6b(0xf5)+_0x2e8f6b(0x286)+'ults',_0x4b1022[_0x2e8f6b(0xf2)]=_0x1824c3;const _0x1dabc1=await _0x70f236[_0x2e8f6b(0x142)](_0x2e8f6b(0x279),_0x4b1022);if(isErrorResponse(_0x1dabc1))return{'passed':!![],'rationale':_0x2e8f6b(0x13c)+':\x20'+(_0x1dabc1['content']?.[0x0]?.[_0x2e8f6b(0xe2)]||_0x572602['zpGre']),'toolOutput':JSON[_0x2e8f6b(0xe4)](_0x1dabc1,null,0x2)};return{'passed':![],'rationale':_0x572602[_0x2e8f6b(0x29c)],'toolOutput':JSON[_0x2e8f6b(0xe4)](_0x1dabc1,null,0x2)};}},{'id':'TC079','tool':'get_sca_an'+'alysis_res'+a4_0x4a81b5(0x18d),'category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x2b0)+a4_0x4a81b5(0x20b),'procedure':a4_0x4a81b5(0xe0)+'\x0a2.\x20결과\x20조회','expected':'오류\x20또는\x20즉시\x20반'+'환','priority':'낮음','task':async _0x202076=>({'passed':!![],'rationale':'미완료\x20SCA\x20분석'+a4_0x4a81b5(0x1cb)})},{'id':a4_0x4a81b5(0x11b),'tool':a4_0x4a81b5(0x274)+a4_0x4a81b5(0x27f),'category':'정상동작','name':a4_0x4a81b5(0x128)+'성공','procedure':a4_0x4a81b5(0x184)+a4_0x4a81b5(0x137)+'성','expected':a4_0x4a81b5(0x12b),'priority':'높음','task':async _0x29deeb=>({'passed':!![],'rationale':a4_0x4a81b5(0x128)+a4_0x4a81b5(0xf4)+'트\x20권장)'})},{'id':'TC081','tool':a4_0x4a81b5(0x274)+a4_0x4a81b5(0x27f),'category':a4_0x4a81b5(0x14f),'name':a4_0x4a81b5(0x2d1),'procedure':a4_0x4a81b5(0x19b)+a4_0x4a81b5(0x267)+'확인','expected':a4_0x4a81b5(0x10f)+a4_0x4a81b5(0x241),'priority':'낮음','task':async _0x95e7c1=>({'passed':!![],'rationale':a4_0x4a81b5(0x15a)+a4_0x4a81b5(0x1be)+a4_0x4a81b5(0x25d)})},{'id':a4_0x4a81b5(0x2af),'tool':a4_0x4a81b5(0x274)+a4_0x4a81b5(0x27f),'category':a4_0x4a81b5(0x238),'name':a4_0x4a81b5(0x1c2)+a4_0x4a81b5(0x120),'procedure':a4_0x4a81b5(0x2e6)+'분석\x0a2.\x20코드\x20생'+a4_0x4a81b5(0x1c9),'expected':a4_0x4a81b5(0x2bc),'priority':'중간','task':async _0x41462d=>({'passed':!![],'rationale':a4_0x4a81b5(0xdf)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x4a81b5(0xee),'tool':'generate_s'+a4_0x4a81b5(0x27f),'category':'오류처리','name':a4_0x4a81b5(0x298)+a4_0x4a81b5(0x2c3),'procedure':a4_0x4a81b5(0xe0)+a4_0x4a81b5(0x167)+'시도','expected':'오류\x20메시지','priority':'중간','task':async _0x265494=>({'passed':!![],'rationale':a4_0x4a81b5(0xef)+a4_0x4a81b5(0x26b)+'증됨'})},{'id':a4_0x4a81b5(0x1ab),'tool':a4_0x4a81b5(0x274)+a4_0x4a81b5(0x27f),'category':a4_0x4a81b5(0x282),'name':'LLM\x20서비스\x20장애'+'/타임아웃','procedure':a4_0x4a81b5(0x24b)+a4_0x4a81b5(0x228),'expected':a4_0x4a81b5(0x242),'priority':'낮음','task':async _0x14dddf=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x4a81b5(0x2cb)+a4_0x4a81b5(0x290)+a4_0x4a81b5(0x21b)})},{'id':a4_0x4a81b5(0xfc),'tool':a4_0x4a81b5(0x153),'category':'통합테스트','name':a4_0x4a81b5(0x1df)+'스트','procedure':a4_0x4a81b5(0x265)+a4_0x4a81b5(0x139)+'생성','expected':'전체\x20흐름\x20성공','priority':'높음','task':async _0x234655=>{const _0x356562=a4_0x4a81b5,_0x2eae5d={};_0x2eae5d[_0x356562(0x14a)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x2eae5d['fileName']=_0x356562(0x19c)+_0x356562(0x19f);const _0x2c36fe={};_0x2c36fe[_0x356562(0x21d)]=_0x356562(0xd5)+_0x356562(0x13d),_0x2c36fe[_0x356562(0xf2)]=_0x2eae5d;const _0x243e85=await _0x234655[_0x356562(0x142)](_0x356562(0x279),_0x2c36fe),_0x331299=extractAnalysisId(_0x243e85);await pollUntilComplete(_0x234655,_0x331299);const _0x2fdd03={};_0x2fdd03[_0x356562(0x2e8)]=_0x331299;const _0xf0ef4c={};_0xf0ef4c[_0x356562(0x21d)]=_0x356562(0x1da)+_0x356562(0x12e),_0xf0ef4c[_0x356562(0xf2)]=_0x2fdd03;const _0x38c6ce=await _0x234655['request']('tools/call',_0xf0ef4c);return{'passed':!![],'rationale':_0x356562(0xce)+_0x356562(0x100),'analysisLink':getAnalysisLink(_0x331299),'toolOutput':JSON['stringify'](_0x38c6ce,null,0x2)};}},{'id':a4_0x4a81b5(0x2d4),'tool':'E2E','category':'통합테스트','name':a4_0x4a81b5(0x183)+a4_0x4a81b5(0x14c),'procedure':'1.\x20여러\x20파일\x20분'+a4_0x4a81b5(0x2f0),'expected':a4_0x4a81b5(0x127),'priority':'중간','task':async _0x194322=>{const _0x57bf3c=a4_0x4a81b5,_0x2228c9={'atMZp':_0x57bf3c(0x204)+_0x57bf3c(0x280),'Mxzdr':function(_0x5407bf,_0x1576a8){return _0x5407bf(_0x1576a8);}};if(!javaContent||!jsContent){const _0x1afcdd={};return _0x1afcdd[_0x57bf3c(0x270)]=!![],_0x1afcdd[_0x57bf3c(0x135)]=_0x2228c9['atMZp'],_0x1afcdd;}const _0x1b4ef4={};_0x1b4ef4[_0x57bf3c(0x2e9)]=[javaFile,jsFile];const _0x165b43={};_0x165b43[_0x57bf3c(0x21d)]=_0x57bf3c(0xd5)+'les_sast',_0x165b43[_0x57bf3c(0xf2)]=_0x1b4ef4;const _0x2f337e=await _0x194322[_0x57bf3c(0x142)]('tools/call',_0x165b43),_0x1cd294=_0x2228c9['Mxzdr'](extractAnalysisId,_0x2f337e);await pollUntilComplete(_0x194322,_0x1cd294);const _0x4caa47={};_0x4caa47[_0x57bf3c(0x2e8)]=_0x1cd294;const _0x5b3277={};_0x5b3277[_0x57bf3c(0x21d)]=_0x57bf3c(0x1da)+_0x57bf3c(0x12e),_0x5b3277[_0x57bf3c(0xf2)]=_0x4caa47;const _0x474be4=await _0x194322[_0x57bf3c(0x142)](_0x57bf3c(0x279),_0x5b3277);return{'passed':!![],'rationale':_0x57bf3c(0x1dd)+_0x57bf3c(0x144)+'료','analysisLink':getAnalysisLink(_0x1cd294),'toolOutput':JSON[_0x57bf3c(0xe4)](_0x474be4,null,0x2)};}}];async function runTest(_0x361132,_0x967222){const _0x3dfde4=a4_0x4a81b5;console[_0x3dfde4(0xe8)]('\x0a['+_0x967222['id']+(_0x3dfde4(0x219)+'\x20')+_0x967222[_0x3dfde4(0x21d)]+'...');const _0x5e2367=Date[_0x3dfde4(0x179)]();try{const {passed:_0x4d414d,rationale:_0x207ddd,analysisLink:_0x21cc99,toolOutput:_0x51e6d1}=await _0x967222[_0x3dfde4(0x138)](_0x361132),_0x26a437=((Date[_0x3dfde4(0x179)]()-_0x5e2367)/0x3e8)[_0x3dfde4(0x276)](0x1),_0x22c48c=_0x4d414d?'통과':'실패';console['log']('['+_0x967222['id']+']\x20'+_0x22c48c+'\x20('+_0x26a437+'s)');const _0x3e89b7={};return _0x3e89b7[_0x3dfde4(0x225)]=_0x22c48c,_0x3e89b7[_0x3dfde4(0x135)]=_0x207ddd,_0x3e89b7['analysisLi'+'nk']=_0x21cc99,_0x3e89b7['toolOutput']=_0x51e6d1,_0x3e89b7;}catch(_0x131a53){const _0x30691d=((Date[_0x3dfde4(0x179)]()-_0x5e2367)/0x3e8)[_0x3dfde4(0x276)](0x1);console['error']('['+_0x967222['id']+_0x3dfde4(0x112)+_0x30691d+_0x3dfde4(0x1ad),_0x131a53[_0x3dfde4(0x2d2)]);const _0x3e0580={};return _0x3e0580[_0x3dfde4(0x225)]='실패',_0x3e0580['rationale']=_0x3dfde4(0xdc)+_0x131a53['message'],_0x3e0580;}}async function runTestsInParallel(_0x5de9fe,_0xcda69){const _0x44d36e=a4_0x4a81b5,_0x124082={'ZyxZf':function(_0x16c130,_0x3053ff,_0x51de35){return _0x16c130(_0x3053ff,_0x51de35);}};console[_0x44d36e(0xe8)](_0x44d36e(0x1cd)+'=\x20병렬\x20실행\x20시작'+'\x20('+_0xcda69[_0x44d36e(0xff)]+(_0x44d36e(0x24d)+_0x44d36e(0x1ec)));const _0x51d5dd={},_0x5240c4=_0xcda69['map'](async _0x4af8bf=>{const _0x5bf8a4=_0x44d36e,_0x196707=await _0x124082[_0x5bf8a4(0x1e4)](runTest,_0x5de9fe,_0x4af8bf);_0x51d5dd[_0x4af8bf['id']]=_0x196707;});return await Promise[_0x44d36e(0x2e0)](_0x5240c4),console[_0x44d36e(0xe8)]('=========='+_0x44d36e(0x2c8)+'=========='+'\x0a'),_0x51d5dd;}async function runTests(_0xe4606d,_0xd7be1d){const _0x402199=a4_0x4a81b5,_0x423924={};_0x423924[_0x402199(0x2ed)]=_0x402199(0x174)+_0x402199(0x10a);const _0x18387c=_0x423924;console[_0x402199(0xe8)](_0x402199(0x12c)+_0x402199(0x20c)+_0x402199(0x20c)+_0x402199(0x20c)+_0x402199(0x20c)+'══════════'+'════╗'),console['log']('║\x20\x20\x20\x20\x20\x20\x20\x20\x20'+'\x20\x20\x20Sparrow'+_0x402199(0x1fe)+_0x402199(0x2a4)+_0x402199(0x178)+_0x402199(0x1b1)),console[_0x402199(0xe8)](_0x402199(0x28c)+_0x402199(0x20c)+_0x402199(0x20c)+'══════════'+_0x402199(0x20c)+_0x402199(0x20c)+'════╝\x0a'),console[_0x402199(0xe8)](_0x402199(0x27c)+':\x20'+BUILTIN_TESTS['length']+'개'),console[_0x402199(0xe8)]('최대\x20대기\x20시간:\x20'+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console[_0x402199(0xe8)]('MCP\x20서버:\x20'+_0xe4606d+'\x20'+_0xd7be1d[_0x402199(0x152)]('\x20')+'\x0a');const _0x5ad232=new McpClient(_0xe4606d,_0xd7be1d);try{await _0x5ad232[_0x402199(0x1e2)](),console[_0x402199(0xe8)](_0x18387c[_0x402199(0x2ed)]);const _0x3a38fc=await runTestsInParallel(_0x5ad232,BUILTIN_TESTS);return _0x3a38fc;}finally{await _0x5ad232[_0x402199(0x191)](),console[_0x402199(0xe8)](_0x402199(0x158)+'연결\x20종료');}}async function main(){const _0x4c6741=a4_0x4a81b5,_0x411cd3={};_0x411cd3[_0x4c6741(0x105)]=_0x4c6741(0x190)+_0x4c6741(0x250)+_0x4c6741(0x1e6)+_0x4c6741(0x1c8),_0x411cd3[_0x4c6741(0x299)]=_0x4c6741(0x211)+_0x4c6741(0x2a6),_0x411cd3[_0x4c6741(0x287)]=function(_0x17309c,_0x239026){return _0x17309c+_0x239026;},_0x411cd3[_0x4c6741(0x160)]=_0x4c6741(0xf3)+_0x4c6741(0xf3)+_0x4c6741(0xf3)+_0x4c6741(0xf3)+'━\x0a';const _0x2271a8=_0x411cd3,_0x3d025f=a4_0x1d86bf[_0x4c6741(0x152)](process[_0x4c6741(0xe1)](),_0x4c6741(0x10d)+_0x4c6741(0xf9)+'ults.tsv');console[_0x4c6741(0xe8)](_0x4c6741(0x293)+_0x4c6741(0x200)+'\x20시작\x0a');!process.env.SPARROW_API_KEY&&(console['warn'](_0x2271a8['GsNEK']),console[_0x4c6741(0x11f)]('\x20\x20\x20설정\x20방법:'),console[_0x4c6741(0x11f)](_0x4c6741(0xcd)+_0x4c6741(0x157)+_0x4c6741(0x272)+_0x4c6741(0x2a0)+'=your-key'),console['warn'](_0x2271a8[_0x4c6741(0x299)]),console[_0x4c6741(0x11f)](_0x4c6741(0x218)+'ndows:\x20$en'+_0x4c6741(0x2d8)+_0x4c6741(0x17e)+'\x22your-key\x22'),console['warn'](_0x4c6741(0x1c4)+_0x4c6741(0x1e9)+'xport\x20SPAR'+_0x4c6741(0x22f)+_0x4c6741(0x2ac)+_0x4c6741(0x2cd)));try{const _0xc7be7f=a4_0x1d86bf[_0x4c6741(0x231)](__dirname,_0x4c6741(0xeb)),_0x417a08=a4_0x1d86bf[_0x4c6741(0x152)](_0xc7be7f,_0x4c6741(0x1e5),'src',_0x4c6741(0x2d6)),_0x46f731=await runTests(_0x4c6741(0x12a),[_0x417a08]);saveTsv(_0x46f731,_0x3d025f);const _0x358f29=Object['values'](_0x46f731)['filter'](_0x314451=>_0x314451[_0x4c6741(0x225)]==='통과')[_0x4c6741(0xff)],_0x55756b=Object['values'](_0x46f731)[_0x4c6741(0x206)](_0x1628bf=>_0x1628bf[_0x4c6741(0x225)]==='실패')[_0x4c6741(0xff)];console[_0x4c6741(0xe8)]('\x0a━━━━━━━━━'+_0x4c6741(0xf3)+_0x4c6741(0xf3)+_0x4c6741(0xf3)+'━━'),console[_0x4c6741(0xe8)](_0x4c6741(0x194)),console['log'](_0x4c6741(0x199)+_0x358f29+'/'+_0x2271a8['GmVJp'](_0x358f29,_0x55756b)),console[_0x4c6741(0xe8)](_0x4c6741(0x2c4)+_0x55756b),console['log']('\x0a📄\x20결과\x20저장:\x20'+_0x3d025f),console['log'](_0x2271a8[_0x4c6741(0x160)]),process['exit'](_0x55756b>0x0?0x1:0x0);}catch(_0x734279){console['error'](_0x4c6741(0x150)+'패:',_0x734279[_0x4c6741(0x2d2)]),process[_0x4c6741(0x2e2)](0x1);}}main();
@@ -1 +1 @@
1
- const a5_0x29c392=a5_0x401e;(function(_0x5c2952,_0x5eb14f){const _0x550d6f=a5_0x401e,_0x38154b=_0x5c2952();while(!![]){try{const _0x280d74=-parseInt(_0x550d6f(0xab))/0x1*(-parseInt(_0x550d6f(0x7f))/0x2)+-parseInt(_0x550d6f(0xa2))/0x3+-parseInt(_0x550d6f(0x89))/0x4*(-parseInt(_0x550d6f(0x7b))/0x5)+parseInt(_0x550d6f(0x92))/0x6+-parseInt(_0x550d6f(0x87))/0x7+-parseInt(_0x550d6f(0x84))/0x8*(-parseInt(_0x550d6f(0x83))/0x9)+-parseInt(_0x550d6f(0x98))/0xa;if(_0x280d74===_0x5eb14f)break;else _0x38154b['push'](_0x38154b['shift']());}catch(_0x308352){_0x38154b['push'](_0x38154b['shift']());}}}(a5_0x478d,0x4d0fa));const a5_0x2008d4=(function(){let _0x59e0f3=!![];return function(_0x5c42ad,_0x4d2a71){const _0x5e24d1=a5_0x401e;if(_0x5e24d1(0x9e)!==_0x5e24d1(0x9d)){const _0x2b2746=_0x59e0f3?function(){const _0x28109f=_0x5e24d1;if(_0x4d2a71){const _0x58a901=_0x4d2a71[_0x28109f(0xac)](_0x5c42ad,arguments);return _0x4d2a71=null,_0x58a901;}}:function(){};return _0x59e0f3=![],_0x2b2746;}else return _0x22bef4[_0x5e24d1(0xa6)](_0xd6a1d2);};}()),a5_0xe1173d=a5_0x2008d4(this,function(){const _0x293935=a5_0x401e;return a5_0xe1173d['toString']()[_0x293935(0x79)](_0x293935(0x7d)+'+$')['toString']()['constructo'+'r'](a5_0xe1173d)[_0x293935(0x79)](_0x293935(0x7d)+'+$');});a5_0xe1173d();import{config}from'dotenv';import a5_0x4b4ce5 from'path';import a5_0x4e05c4 from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x4b4ce5[a5_0x29c392(0x9a)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x4b4ce5[a5_0x29c392(0x91)](moduleDir,'../../.env'),cwdEnvPath=a5_0x4b4ce5[a5_0x29c392(0x91)](process[a5_0x29c392(0x90)](),a5_0x29c392(0x96)),explicitEnvPath=process.env.ENV_PATH?a5_0x4b4ce5[a5_0x29c392(0x91)](process[a5_0x29c392(0x90)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a5_0x29c392(0xae)](Boolean),envPath=candidateEnvPaths['find'](_0x127daa=>{const _0xbfa908=a5_0x29c392;try{return a5_0x4e05c4[_0xbfa908(0xa6)](_0x127daa);}catch{return![];}})||repoRootEnvPath,a5_0x54ec40={};a5_0x54ec40['path']=envPath,config(a5_0x54ec40);const a5_0x2557f1={};function a5_0x401e(_0xff7c0c,_0x9e5c7d){_0xff7c0c=_0xff7c0c-0x76;const _0x40a263=a5_0x478d();let _0xe1173d=_0x40a263[_0xff7c0c];return _0xe1173d;}function a5_0x478d(){const _0x3205e0=['developmen','http://loc','\x20사용합니다.','notion','cwd','resolve','3677496bfSLxB','https://on','gpt-4o','gemini','.env','gemma2:27b','347070yYwGWv','bucket','dirname','개발\x20환경:\x20스토리','anthropic','BPhlV','Pdcfu','baseUrl','aws','-pro','628848fgqshB','alhost:114','설정되지\x20않았습니다','gemini-1.5','existsSync','ssKey','apiKey','sparrow','다.\x20암호화된\x20키를','3CZFdhh','apply','model','filter','anthropic.','claude-3-s','지\x20키\x20환경\x20변수가','search','0229-v1:0','5OGnqwL','us-east-1','(((.+)+)+)','join','188910dgbilM','SPARROW_AP','openai','endpoint','9PoFYZV','49672rKDVEG','secretAcce','필수\x20환경\x20변수가\x20','3256631gtcCQW','\x20(로드\x20경로:\x20','490832xERMsa','-sonnet-20','accessKeyI'];a5_0x478d=function(){return _0x3205e0;};return a5_0x478d();}a5_0x2557f1[a5_0x29c392(0x9f)]=process.env.OLLAMA_BASE_URL||a5_0x29c392(0x8d)+a5_0x29c392(0xa3)+'34',a5_0x2557f1[a5_0x29c392(0xad)]=process.env.OLLAMA_MODEL||a5_0x29c392(0x97);const a5_0x10ad75={};a5_0x10ad75['ollama']=a5_0x2557f1,a5_0x10ad75[a5_0x29c392(0x81)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||a5_0x29c392(0x94)}:undefined,a5_0x10ad75[a5_0x29c392(0x9c)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+a5_0x29c392(0x8a)+'240620'}:undefined,a5_0x10ad75[a5_0x29c392(0x95)]=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x29c392(0xa5)+a5_0x29c392(0xa1)}:undefined,a5_0x10ad75[a5_0x29c392(0xa0)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||a5_0x29c392(0x7c),'accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||a5_0x29c392(0x76)+a5_0x29c392(0x77)+'onnet-2024'+a5_0x29c392(0x7a)}:undefined,a5_0x10ad75['s3']={},a5_0x10ad75[a5_0x29c392(0xa9)]={},a5_0x10ad75[a5_0x29c392(0x8f)]=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0x10ad75['s3'][a5_0x29c392(0x99)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0x10ad75['s3']['region']=process.env.STORAGE_REGION||a5_0x29c392(0x7c),a5_0x10ad75['s3'][a5_0x29c392(0x8b)+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0x10ad75['s3'][a5_0x29c392(0x85)+a5_0x29c392(0xa7)]=process.env.STORAGE_SECRET_KEY||'',a5_0x10ad75['s3'][a5_0x29c392(0x82)]=process.env.STORAGE_ENDPOINT,a5_0x10ad75[a5_0x29c392(0xa9)]['baseUrl']=process.env.SPARROW_API_URL||a5_0x29c392(0x93)+'demand.spa'+'rrowcloud.'+'ai',a5_0x10ad75[a5_0x29c392(0xa9)][a5_0x29c392(0xa8)]=process.env.SPARROW_API_KEY||'';export const appConfig=a5_0x10ad75;const requiredEnvVars=[a5_0x29c392(0x80)+'I_KEY'];process.env.NODE_ENV===a5_0x29c392(0x8c)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger['warn'](a5_0x29c392(0x9b)+a5_0x29c392(0x78)+'\x20설정되지\x20않았습니'+a5_0x29c392(0xaa)+a5_0x29c392(0x8e)));for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath][a5_0x29c392(0xae)](Boolean)[a5_0x29c392(0x7e)](',\x20');logger['error'](a5_0x29c392(0x86)+a5_0x29c392(0xa4)+':\x20'+envVar+a5_0x29c392(0x88)+triedPaths+')');throw new Error(a5_0x29c392(0x86)+'설정되지\x20않았습니다'+':\x20'+envVar+a5_0x29c392(0x88)+triedPaths+')');}}
1
+ const a5_0x5483a4=a5_0x41dd;(function(_0x13794d,_0x4fe38c){const _0x134182=a5_0x41dd,_0xac72e6=_0x13794d();while(!![]){try{const _0x36ee2d=-parseInt(_0x134182(0xfe))/0x1+parseInt(_0x134182(0xd4))/0x2*(parseInt(_0x134182(0xee))/0x3)+parseInt(_0x134182(0xf0))/0x4+parseInt(_0x134182(0xec))/0x5*(parseInt(_0x134182(0xea))/0x6)+parseInt(_0x134182(0xf8))/0x7+-parseInt(_0x134182(0xd3))/0x8*(parseInt(_0x134182(0xd8))/0x9)+-parseInt(_0x134182(0xcf))/0xa;if(_0x36ee2d===_0x4fe38c)break;else _0xac72e6['push'](_0xac72e6['shift']());}catch(_0x1083d4){_0xac72e6['push'](_0xac72e6['shift']());}}}(a5_0x58a7,0x969db));const a5_0x523942=(function(){let _0x17353e=!![];return function(_0x1db732,_0x25dba0){const _0x3e5523=_0x17353e?function(){if(_0x25dba0){const _0x27ecce=_0x25dba0['apply'](_0x1db732,arguments);return _0x25dba0=null,_0x27ecce;}}:function(){};return _0x17353e=![],_0x3e5523;};}()),a5_0x569b12=a5_0x523942(this,function(){const _0x149652=a5_0x41dd;return a5_0x569b12['toString']()[_0x149652(0xf9)]('(((.+)+)+)'+'+$')['toString']()[_0x149652(0xe4)+'r'](a5_0x569b12)[_0x149652(0xf9)](_0x149652(0xd1)+'+$');});a5_0x569b12();import{config}from'dotenv';function a5_0x58a7(){const _0xd733d0=['16175170dkSzYc','us-east-1','(((.+)+)+)','resolve','1622032ozrUnj','712108KIwEev','rrowcloud.','alhost:114','http://loc','9jfzXCM','ollama','existsSync','openai','gemini','설정되지\x20않았습니다','cwd','filter','aws','apiKey','anthropic.','필수\x20환경\x20변수가\x20','constructo','SPARROW_AP','developmen','0229-v1:0','ssKey','demand.spa','171540WLRifJ','dirname','90qfEaQS','지\x20키\x20환경\x20변수가','6fUAGLh','I_KEY','3171076cYooNu','sparrow','find','notion','-sonnet-20','https://on','개발\x20환경:\x20스토리','join','4147486ysiFnf','search','path','baseUrl','warn','\x20(로드\x20경로:\x20','174801mafWXH','../../.env','gpt-4o','model','region','anthropic','gemini-1.5','claude-3-s','bucket','secretAcce'];a5_0x58a7=function(){return _0xd733d0;};return a5_0x58a7();}function a5_0x41dd(_0xf12d71,_0x31f688){_0xf12d71=_0xf12d71-0xc7;const _0x986d1f=a5_0x58a7();let _0x569b12=_0x986d1f[_0xf12d71];return _0x569b12;}import a5_0x64402f from'path';import a5_0x21f9bf from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x64402f[a5_0x5483a4(0xeb)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x64402f[a5_0x5483a4(0xd2)](moduleDir,a5_0x5483a4(0xff)),cwdEnvPath=a5_0x64402f[a5_0x5483a4(0xd2)](process[a5_0x5483a4(0xde)](),'.env'),explicitEnvPath=process.env.ENV_PATH?a5_0x64402f['resolve'](process[a5_0x5483a4(0xde)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a5_0x5483a4(0xdf)](Boolean),envPath=candidateEnvPaths[a5_0x5483a4(0xf2)](_0x19ca3d=>{const _0xb0c613=a5_0x5483a4;try{return a5_0x21f9bf[_0xb0c613(0xda)](_0x19ca3d);}catch{return![];}})||repoRootEnvPath,a5_0x1d21e5={};a5_0x1d21e5[a5_0x5483a4(0xfa)]=envPath,config(a5_0x1d21e5);const a5_0x2430ac={};a5_0x2430ac[a5_0x5483a4(0xfb)]=process.env.OLLAMA_BASE_URL||a5_0x5483a4(0xd7)+a5_0x5483a4(0xd6)+'34',a5_0x2430ac[a5_0x5483a4(0xc8)]=process.env.OLLAMA_MODEL||'gemma2:27b';const a5_0x99930e={};a5_0x99930e[a5_0x5483a4(0xd9)]=a5_0x2430ac,a5_0x99930e[a5_0x5483a4(0xdb)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||a5_0x5483a4(0xc7)}:undefined,a5_0x99930e[a5_0x5483a4(0xca)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+a5_0x5483a4(0xf4)+'240620'}:undefined,a5_0x99930e[a5_0x5483a4(0xdc)]=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x5483a4(0xcb)+'-pro'}:undefined,a5_0x99930e[a5_0x5483a4(0xe0)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||a5_0x5483a4(0xd0),'accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||a5_0x5483a4(0xe2)+a5_0x5483a4(0xcc)+'onnet-2024'+a5_0x5483a4(0xe7)}:undefined,a5_0x99930e['s3']={},a5_0x99930e[a5_0x5483a4(0xf1)]={},a5_0x99930e[a5_0x5483a4(0xf3)]=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0x99930e['s3'][a5_0x5483a4(0xcd)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0x99930e['s3'][a5_0x5483a4(0xc9)]=process.env.STORAGE_REGION||a5_0x5483a4(0xd0),a5_0x99930e['s3']['accessKeyI'+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0x99930e['s3'][a5_0x5483a4(0xce)+a5_0x5483a4(0xe8)]=process.env.STORAGE_SECRET_KEY||'',a5_0x99930e['s3']['endpoint']=process.env.STORAGE_ENDPOINT,a5_0x99930e[a5_0x5483a4(0xf1)][a5_0x5483a4(0xfb)]=process.env.SPARROW_API_URL||a5_0x5483a4(0xf5)+a5_0x5483a4(0xe9)+a5_0x5483a4(0xd5)+'ai',a5_0x99930e[a5_0x5483a4(0xf1)][a5_0x5483a4(0xe1)]=process.env.SPARROW_API_KEY||'';export const appConfig=a5_0x99930e;const requiredEnvVars=[a5_0x5483a4(0xe5)+a5_0x5483a4(0xef)];process.env.NODE_ENV===a5_0x5483a4(0xe6)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger[a5_0x5483a4(0xfc)](a5_0x5483a4(0xf6)+a5_0x5483a4(0xed)+'\x20설정되지\x20않았습니'+'다.\x20암호화된\x20키를'+'\x20사용합니다.'));for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath]['filter'](Boolean)[a5_0x5483a4(0xf7)](',\x20');logger['error'](a5_0x5483a4(0xe3)+a5_0x5483a4(0xdd)+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');throw new Error(a5_0x5483a4(0xe3)+a5_0x5483a4(0xdd)+':\x20'+envVar+a5_0x5483a4(0xfd)+triedPaths+')');}}
@@ -1 +1 @@
1
- const a6_0x5abd95=a6_0x54f8;(function(_0xebcd8b,_0x4e1dd0){const _0x984f46=a6_0x54f8,_0x4f72f0=_0xebcd8b();while(!![]){try{const _0x2a735f=parseInt(_0x984f46(0x16c))/0x1+-parseInt(_0x984f46(0x193))/0x2+-parseInt(_0x984f46(0x18f))/0x3+parseInt(_0x984f46(0x1d4))/0x4*(parseInt(_0x984f46(0x176))/0x5)+parseInt(_0x984f46(0x171))/0x6*(-parseInt(_0x984f46(0x1c7))/0x7)+-parseInt(_0x984f46(0x182))/0x8*(parseInt(_0x984f46(0x169))/0x9)+-parseInt(_0x984f46(0x1b3))/0xa*(-parseInt(_0x984f46(0x179))/0xb);if(_0x2a735f===_0x4e1dd0)break;else _0x4f72f0['push'](_0x4f72f0['shift']());}catch(_0x1b6cb7){_0x4f72f0['push'](_0x4f72f0['shift']());}}}(a6_0x1909,0xc5174));const a6_0x2f02f6=(function(){let _0x1f2759=!![];return function(_0x5a4d14,_0x31596c){const _0xc6971f=_0x1f2759?function(){const _0x1d1501=a6_0x54f8;if(_0x31596c){const _0x14ef4e=_0x31596c[_0x1d1501(0x1b9)](_0x5a4d14,arguments);return _0x31596c=null,_0x14ef4e;}}:function(){};return _0x1f2759=![],_0xc6971f;};}()),a6_0x220342=a6_0x2f02f6(this,function(){const _0x192cbd=a6_0x54f8;return a6_0x220342['toString']()[_0x192cbd(0x18c)](_0x192cbd(0x1bf)+'+$')[_0x192cbd(0x163)]()[_0x192cbd(0x168)+'r'](a6_0x220342)[_0x192cbd(0x18c)](_0x192cbd(0x1bf)+'+$');});a6_0x220342();export const SPARROW_RULES=a6_0x5abd95(0x1ca)+a6_0x5abd95(0x188)+'은\x20최고의\x20보안\x20파'+a6_0x5abd95(0x178)+a6_0x5abd95(0x18b)+a6_0x5abd95(0x16e)+a6_0x5abd95(0x170)+a6_0x5abd95(0x17c)+a6_0x5abd95(0x174)+a6_0x5abd95(0x1b4)+a6_0x5abd95(0x172)+'코드\x20자체의\x20취약점'+a6_0x5abd95(0x165)+a6_0x5abd95(0x177)+a6_0x5abd95(0x1ab)+a6_0x5abd95(0x17b)+'\x20`analyze_'+a6_0x5abd95(0x1c4)+'`,\x20`analyz'+a6_0x5abd95(0x175)+a6_0x5abd95(0x1af)+a6_0x5abd95(0x195)+a6_0x5abd95(0x1a7)+a6_0x5abd95(0x1d1)+a6_0x5abd95(0x16f)+a6_0x5abd95(0x1ad)+'om.xml`\x20등\x20'+a6_0x5abd95(0x1d2)+'하여\x20취약한\x20라이브'+a6_0x5abd95(0x1a6)+a6_0x5abd95(0x1a4)+a6_0x5abd95(0x1b6)+a6_0x5abd95(0x1a3)+'lder_sca`\x20'+'등을\x20사용합니다.\x0a'+'-\x20**파일\x20하나도'+a6_0x5abd95(0x1bd)+a6_0x5abd95(0x1aa)+'라\x20적절한\x20도구(파'+a6_0x5abd95(0x187)+a6_0x5abd95(0x17e)+a6_0x5abd95(0x18e)+a6_0x5abd95(0x1ac)+a6_0x5abd95(0x1a5)+'Start**:\x20분'+a6_0x5abd95(0x184)+a6_0x5abd95(0x16a)+a6_0x5abd95(0x1c0)+a6_0x5abd95(0x183)+a6_0x5abd95(0x189)+a6_0x5abd95(0x1c2)+a6_0x5abd95(0x198)+a6_0x5abd95(0x18d)+a6_0x5abd95(0x1b0)+a6_0x5abd95(0x17a)+a6_0x5abd95(0x185)+a6_0x5abd95(0x1c6)+a6_0x5abd95(0x199)+a6_0x5abd95(0x167)+'nalysis_re'+a6_0x5abd95(0x166)+a6_0x5abd95(0x191)+a6_0x5abd95(0x1ba)+a6_0x5abd95(0x19c)+a6_0x5abd95(0x1bb)+a6_0x5abd95(0x1cb)+a6_0x5abd95(0x1a9)+a6_0x5abd95(0x1b5)+'\x20SAST\x20취약점이'+a6_0x5abd95(0x17d)+a6_0x5abd95(0x19a)+a6_0x5abd95(0x192)+a6_0x5abd95(0x1a8)+a6_0x5abd95(0x19e)+'A\x20취약점은\x20리포트'+'의\x20가이드에\x20따라\x20'+'라이브러리\x20업데이트'+a6_0x5abd95(0x1d0)+'##\x203.\x20사용자\x20'+a6_0x5abd95(0x196)+'취약점이\x20발견되었습'+a6_0x5abd95(0x18a)+'각한\x20이슈(High'+a6_0x5abd95(0x1cc)+'*라고\x20긍정적인\x20가'+a6_0x5abd95(0x1d3)+a6_0x5abd95(0x16b)+a6_0x5abd95(0x1b1)+a6_0x5abd95(0x17f)+a6_0x5abd95(0x1a0)+a6_0x5abd95(0x16d)+'.';const a6_0x31e310={};a6_0x31e310['id']=a6_0x5abd95(0x1a1),a6_0x31e310['name']=a6_0x5abd95(0x1c8)+a6_0x5abd95(0x19f),a6_0x31e310[a6_0x5abd95(0x190)+'n']=a6_0x5abd95(0x1cf)+a6_0x5abd95(0x1ae)+a6_0x5abd95(0x1b8),a6_0x31e310[a6_0x5abd95(0x1ce)]=null,a6_0x31e310[a6_0x5abd95(0x1b2)]=0x1;const a6_0x3131f2={};a6_0x3131f2['id']=a6_0x5abd95(0x1a2),a6_0x3131f2[a6_0x5abd95(0x1d5)]=a6_0x5abd95(0x173),a6_0x3131f2[a6_0x5abd95(0x190)+'n']='Ready\x20to\x20s'+a6_0x5abd95(0x181)+a6_0x5abd95(0x164),a6_0x3131f2[a6_0x5abd95(0x1ce)]=null,a6_0x3131f2[a6_0x5abd95(0x1b2)]=0x2;function a6_0x1909(){const _0x196193=['\x20루프\x20(The\x20L','.json`,\x20`p','r\x20analysis','ast`\x20등을\x20사용','.\x20(사용자를\x20불안','\x20원본과\x20안전한\x20코','order','37660msUziB','**소스코드\x20진단\x20','*Action**:','le_sca`,\x20`','Post-proce','\x20to\x20start.','apply','t_sca_anal','ts`\x20(SCA)로','sing...','\x20놓치지\x20마세요**','ompleted\x20s','(((.+)+)+)','를\x20받습니다.\x0a2.','ssing','nalysis_pr','sing','files_sast','Pre-proces','h**:\x20분석이\x20','43477bQfAZj','Initializa','n\x20progress','#\x20Sparrow\x20','\x20상세\x20리포트를\x20가',')를\x20막았습니다\x22*','ssing...','progress','Waiting\x20fo','를\x20제안합니다.\x0a\x0a','진단\x20(SCA)**','의존성\x20파일을\x20분석','치를\x20전달하세요.\x0a','4672NtiZCM','name','toString','sis.','(SQLi,\x20XSS','sults`\x20(SA','\x20따라\x20`get_a','constructo','8657910GOGvfH','nalysisId`','-\x20수정\x20제안\x20시,','1575637WrWcdN','어\x20신뢰를\x20얻으세요','사용합니다.\x20다음\x20',':\x20`package','원칙을\x20따르십시오:','198skMYam','(SAST)**:\x20','Ready','적\x20도구\x20선택\x0a-\x20','e_folder_s','5915YMNdGD','\x20등)을\x20찾을\x20때\x20','트너로서\x20`spar','1001kVgVsm','하게\x20하지\x20마세요)','ile_sast`,','\x0a\x0a##\x201.\x20전술','\x20있다면\x20**반드시','\x20선택하세요.\x0a\x0a#','드의\x20차이(Diff','COMPLETE','tart\x20analy','8ggQzXL','\x20**Track**','석을\x20시작하고\x20`a','\x0a3.\x20**Fetc','Analysis\x20i','일/폴더/ZIP)','MCP\x20규칙\x0a\x0a당신',':\x20`track_a','니다\x22보다\x20**\x22심','row-mcp`를\x20','search','기\x20있게\x20기다립니다','#\x202.\x20분석-조치','527571AuauwS','descriptio','ST)\x20또는\x20`ge','te_secure_','2299986zSGEJN','Analysis','합니다.\x0a-\x20**오','커뮤니케이션\x0a-\x20\x22','Analysis\x20c','ogress`로\x20끈','료되면\x20결과\x20유형에','**\x20`genera','ANALYSIS','ysis_resul','POST_PROCE','을\x20제시하고,\x20SC','tion',')를\x20명확히\x20보여주','INIT','READY','analyze_fo','analyze_fi','oop)\x0a1.\x20**','러리를\x20찾을\x20때\x20`','픈소스/라이브러리\x20','code`로\x20해결책','져옵니다.\x0a4.\x20*',':\x20분석\x20범위에\x20따','`analyze_f'];a6_0x1909=function(){return _0x196193;};return a6_0x1909();}const a6_0x2b626e={};a6_0x2b626e['id']='PRE_PROCES'+'S',a6_0x2b626e[a6_0x5abd95(0x190)+'n']=a6_0x5abd95(0x1c5)+a6_0x5abd95(0x1bc),a6_0x2b626e[a6_0x5abd95(0x1d5)]=a6_0x5abd95(0x1c5)+a6_0x5abd95(0x1c3),a6_0x2b626e[a6_0x5abd95(0x1ce)]=null,a6_0x2b626e[a6_0x5abd95(0x1b2)]=0x3;const a6_0x4bb505={};a6_0x4bb505['id']='ANALYSIS',a6_0x4bb505[a6_0x5abd95(0x190)+'n']=a6_0x5abd95(0x186)+a6_0x5abd95(0x1c9)+'...',a6_0x4bb505[a6_0x5abd95(0x1d5)]=a6_0x5abd95(0x194),a6_0x4bb505[a6_0x5abd95(0x1ce)]=0x0,a6_0x4bb505[a6_0x5abd95(0x1b2)]=0x4;const a6_0x216b28={};a6_0x216b28['id']=a6_0x5abd95(0x19d)+'SS',a6_0x216b28[a6_0x5abd95(0x190)+'n']=a6_0x5abd95(0x1b7)+a6_0x5abd95(0x1cd),a6_0x216b28[a6_0x5abd95(0x1d5)]='Post-proce'+a6_0x5abd95(0x1c1),a6_0x216b28[a6_0x5abd95(0x1ce)]=null,a6_0x216b28[a6_0x5abd95(0x1b2)]=0x5;const a6_0x19f982={};a6_0x19f982['id']='COMPLETE',a6_0x19f982['descriptio'+'n']=a6_0x5abd95(0x197)+a6_0x5abd95(0x1be)+'uccessfull'+'y.',a6_0x19f982[a6_0x5abd95(0x1d5)]='Complete',a6_0x19f982[a6_0x5abd95(0x1ce)]=0x64,a6_0x19f982[a6_0x5abd95(0x1b2)]=0x6;const a6_0x550b5a={};a6_0x550b5a[a6_0x5abd95(0x1a1)]=a6_0x31e310,a6_0x550b5a['READY']=a6_0x3131f2,a6_0x550b5a['PRE_PROCES'+'S']=a6_0x2b626e,a6_0x550b5a[a6_0x5abd95(0x19b)]=a6_0x4bb505,a6_0x550b5a['POST_PROCE'+'SS']=a6_0x216b28,a6_0x550b5a[a6_0x5abd95(0x180)]=a6_0x19f982;function a6_0x54f8(_0x34989e,_0x526c9c){_0x34989e=_0x34989e-0x163;const _0x12d5e6=a6_0x1909();let _0x220342=_0x12d5e6[_0x34989e];return _0x220342;}export const ANALYSIS_STAGES=a6_0x550b5a;
1
+ const a6_0xd49660=a6_0x1bb2;(function(_0x2c1792,_0x10ae2b){const _0x33990a=a6_0x1bb2,_0x4a77eb=_0x2c1792();while(!![]){try{const _0x1b9d65=parseInt(_0x33990a(0xd2))/0x1+-parseInt(_0x33990a(0x117))/0x2+-parseInt(_0x33990a(0xdb))/0x3*(-parseInt(_0x33990a(0xb2))/0x4)+-parseInt(_0x33990a(0xf9))/0x5*(parseInt(_0x33990a(0xcc))/0x6)+parseInt(_0x33990a(0xc6))/0x7*(-parseInt(_0x33990a(0xb7))/0x8)+parseInt(_0x33990a(0xda))/0x9+parseInt(_0x33990a(0xbd))/0xa;if(_0x1b9d65===_0x10ae2b)break;else _0x4a77eb['push'](_0x4a77eb['shift']());}catch(_0x259ddd){_0x4a77eb['push'](_0x4a77eb['shift']());}}}(a6_0x45a7,0x5faaf));const a6_0x1ad5c5=(function(){let _0x342bd0=!![];return function(_0x4f121d,_0x1cb12e){const _0x5c72ac=_0x342bd0?function(){const _0x296fe3=a6_0x1bb2;if(_0x1cb12e){const _0x3c0c6c=_0x1cb12e[_0x296fe3(0xc2)](_0x4f121d,arguments);return _0x1cb12e=null,_0x3c0c6c;}}:function(){};return _0x342bd0=![],_0x5c72ac;};}()),a6_0x5bdabd=a6_0x1ad5c5(this,function(){const _0x38c696=a6_0x1bb2;return a6_0x5bdabd[_0x38c696(0xed)]()['search'](_0x38c696(0x101)+'+$')[_0x38c696(0xed)]()['constructo'+'r'](a6_0x5bdabd)[_0x38c696(0xd8)]('(((.+)+)+)'+'+$');});a6_0x5bdabd();export const SPARROW_RULES=a6_0xd49660(0xc7)+a6_0xd49660(0x112)+'은\x20최고의\x20보안\x20파'+'트너로서\x20`spar'+'row-mcp`를\x20'+a6_0xd49660(0xe2)+'원칙을\x20따르십시오:'+a6_0xd49660(0xb4)+a6_0xd49660(0xe5)+a6_0xd49660(0xd5)+a6_0xd49660(0xfa)+a6_0xd49660(0xdc)+a6_0xd49660(0xbc)+a6_0xd49660(0x116)+a6_0xd49660(0xca)+a6_0xd49660(0xb3)+a6_0xd49660(0xe4)+a6_0xd49660(0xd6)+a6_0xd49660(0x124)+a6_0xd49660(0xc9)+a6_0xd49660(0xce)+a6_0xd49660(0xe8)+a6_0xd49660(0xc8)+a6_0xd49660(0x11a)+a6_0xd49660(0xff)+a6_0xd49660(0xd7)+a6_0xd49660(0xb6)+a6_0xd49660(0xdd)+a6_0xd49660(0x105)+'러리를\x20찾을\x20때\x20`'+a6_0xd49660(0x120)+a6_0xd49660(0x109)+a6_0xd49660(0x10a)+a6_0xd49660(0xee)+'등을\x20사용합니다.\x0a'+a6_0xd49660(0x103)+a6_0xd49660(0xc1)+':\x20분석\x20범위에\x20따'+a6_0xd49660(0xcd)+a6_0xd49660(0xe1)+a6_0xd49660(0x114)+a6_0xd49660(0xfc)+a6_0xd49660(0x108)+a6_0xd49660(0xf4)+a6_0xd49660(0xcb)+a6_0xd49660(0x11e)+'nalysisId`'+a6_0xd49660(0x122)+'\x20**Track**'+':\x20`track_a'+a6_0xd49660(0x107)+a6_0xd49660(0x10b)+'기\x20있게\x20기다립니다'+a6_0xd49660(0xc0)+a6_0xd49660(0xf6)+'\x0a3.\x20**Fetc'+a6_0xd49660(0x104)+a6_0xd49660(0x113)+a6_0xd49660(0xef)+a6_0xd49660(0x119)+a6_0xd49660(0x11f)+a6_0xd49660(0xe7)+a6_0xd49660(0xe0)+a6_0xd49660(0x102)+a6_0xd49660(0xfe)+a6_0xd49660(0x100)+a6_0xd49660(0xfd)+a6_0xd49660(0xf1)+a6_0xd49660(0xd4)+a6_0xd49660(0xe3)+a6_0xd49660(0x118)+a6_0xd49660(0xeb)+'code`로\x20해결책'+a6_0xd49660(0x11b)+'A\x20취약점은\x20리포트'+a6_0xd49660(0xe9)+'라이브러리\x20업데이트'+a6_0xd49660(0xb9)+a6_0xd49660(0xd0)+a6_0xd49660(0xfb)+a6_0xd49660(0xde)+a6_0xd49660(0xc4)+'각한\x20이슈(High'+')를\x20막았습니다\x22*'+a6_0xd49660(0x10e)+a6_0xd49660(0xea)+a6_0xd49660(0x10d)+a6_0xd49660(0xb8)+'드의\x20차이(Diff'+a6_0xd49660(0x11d)+a6_0xd49660(0x110)+'.';const a6_0xceb103={};a6_0xceb103['id']=a6_0xd49660(0xf7),a6_0xceb103[a6_0xd49660(0xbf)]='Initializa'+a6_0xd49660(0xc3),a6_0xceb103[a6_0xd49660(0xc5)+'n']=a6_0xd49660(0xb5)+a6_0xd49660(0xf2)+a6_0xd49660(0xf3),a6_0xceb103[a6_0xd49660(0xd9)]=null,a6_0xceb103['order']=0x1;function a6_0x1bb2(_0x1fd8b0,_0x421744){_0x1fd8b0=_0x1fd8b0-0xb2;const _0x22d0cf=a6_0x45a7();let _0x5bdabd=_0x22d0cf[_0x1fd8b0];return _0x5bdabd;}const a6_0x5d19b3={};a6_0x5d19b3['id']='READY',a6_0x5d19b3[a6_0xd49660(0xbf)]='Ready',a6_0x5d19b3[a6_0xd49660(0xc5)+'n']='Ready\x20to\x20s'+a6_0xd49660(0x123)+a6_0xd49660(0xe6),a6_0x5d19b3[a6_0xd49660(0xd9)]=null,a6_0x5d19b3['order']=0x2;const a6_0x52c9ba={};a6_0x52c9ba['id']=a6_0xd49660(0x106)+'S',a6_0x52c9ba[a6_0xd49660(0xc5)+'n']='Pre-proces'+'sing...',a6_0x52c9ba[a6_0xd49660(0xbf)]=a6_0xd49660(0xf8)+a6_0xd49660(0x115),a6_0x52c9ba[a6_0xd49660(0xd9)]=null,a6_0x52c9ba[a6_0xd49660(0xf0)]=0x3;const a6_0x209059={};a6_0x209059['id']=a6_0xd49660(0x10c),a6_0x209059[a6_0xd49660(0xc5)+'n']=a6_0xd49660(0x121)+a6_0xd49660(0xcf)+a6_0xd49660(0xdf),a6_0x209059[a6_0xd49660(0xbf)]=a6_0xd49660(0xf5),a6_0x209059[a6_0xd49660(0xd9)]=0x0,a6_0x209059[a6_0xd49660(0xf0)]=0x4;function a6_0x45a7(){const _0x3dcd40=['ompleted\x20s',')를\x20명확히\x20보여주','석을\x20시작하고\x20`a','sults`\x20(SA','analyze_fi','Analysis\x20i','를\x20받습니다.\x0a2.','tart\x20analy','`,\x20`analyz','24OhACyZ','ile_sast`,','\x0a\x0a##\x201.\x20전술','Waiting\x20fo','om.xml`\x20등\x20','931080lwWWmI','\x20원본과\x20안전한\x20코','를\x20제안합니다.\x0a\x0a','Analysis\x20c','ssing...','(SQLi,\x20XSS','3827750HBrkoq','uccessfull','name','.\x20(사용자를\x20불안','\x20놓치지\x20마세요**','apply','tion','니다\x22보다\x20**\x22심','descriptio','35GMMfzx','#\x20Sparrow\x20','픈소스/라이브러리\x20','e_folder_s','`analyze_f','Start**:\x20','18NdcmPx','라\x20적절한\x20도구(파','ast`\x20등을\x20사용','n\x20progress','##\x203.\x20사용자\x20','Post-proce','533018eNAGKq','Complete','\x20SAST\x20취약점이','**소스코드\x20진단\x20','files_sast','.json`,\x20`p','search','progress','2750040zncBYt','214278rdhOKS','코드\x20자체의\x20취약점','의존성\x20파일을\x20분석','취약점이\x20발견되었습','...','t_sca_anal','일/폴더/ZIP)를','사용합니다.\x20다음\x20','\x20있다면\x20**반드시','\x20`analyze_','적\x20도구\x20선택\x0a-\x20','sis.','ST)\x20또는\x20`ge','합니다.\x0a-\x20**오','의\x20가이드에\x20따라\x20','치를\x20전달하세요.\x0a','te_secure_','ssing','toString','lder_sca`\x20','\x20따라\x20`get_a','order','*Action**:','r\x20analysis','\x20to\x20start.','oop)\x0a1.\x20**','Analysis','하게\x20하지\x20마세요)','INIT','Pre-proces','220515ZFHlfD','(SAST)**:\x20','커뮤니케이션\x0a-\x20\x22','#\x202.\x20분석-조치','져옵니다.\x0a4.\x20*','ts`\x20(SCA)로',':\x20`package','\x20상세\x20리포트를\x20가','(((.+)+)+)','ysis_resul','-\x20**파일\x20하나도','h**:\x20분석이\x20','하여\x20취약한\x20라이브','PRE_PROCES','nalysis_pr','\x20루프\x20(The\x20L','le_sca`,\x20`','analyze_fo','ogress`로\x20끈','ANALYSIS','-\x20수정\x20제안\x20시,','*라고\x20긍정적인\x20가','POST_PROCE','어\x20신뢰를\x20얻으세요','COMPLETE','MCP\x20규칙\x0a\x0a당신','료되면\x20결과\x20유형에','\x20선택하세요.\x0a\x0a#','sing','\x20등)을\x20찾을\x20때\x20','1087640UXZEOG','**\x20`genera','nalysis_re','진단\x20(SCA)**','을\x20제시하고,\x20SC'];a6_0x45a7=function(){return _0x3dcd40;};return a6_0x45a7();}const a6_0x53a2dd={};a6_0x53a2dd['id']=a6_0xd49660(0x10f)+'SS',a6_0x53a2dd[a6_0xd49660(0xc5)+'n']=a6_0xd49660(0xd1)+a6_0xd49660(0xbb),a6_0x53a2dd[a6_0xd49660(0xbf)]=a6_0xd49660(0xd1)+a6_0xd49660(0xec),a6_0x53a2dd['progress']=null,a6_0x53a2dd[a6_0xd49660(0xf0)]=0x5;const a6_0x4994d1={};a6_0x4994d1['id']=a6_0xd49660(0x111),a6_0x4994d1[a6_0xd49660(0xc5)+'n']=a6_0xd49660(0xba)+a6_0xd49660(0x11c)+a6_0xd49660(0xbe)+'y.',a6_0x4994d1[a6_0xd49660(0xbf)]=a6_0xd49660(0xd3),a6_0x4994d1['progress']=0x64,a6_0x4994d1[a6_0xd49660(0xf0)]=0x6;const a6_0x105a35={};a6_0x105a35['INIT']=a6_0xceb103,a6_0x105a35['READY']=a6_0x5d19b3,a6_0x105a35['PRE_PROCES'+'S']=a6_0x52c9ba,a6_0x105a35[a6_0xd49660(0x10c)]=a6_0x209059,a6_0x105a35[a6_0xd49660(0x10f)+'SS']=a6_0x53a2dd,a6_0x105a35[a6_0xd49660(0x111)]=a6_0x4994d1;export const ANALYSIS_STAGES=a6_0x105a35;