주변 신축보다 낮은 곳
66곳
비교 가능 147곳 중(신뢰도 충분)
최고 경쟁률
90,443:1
송파 시그니처 롯데캐슬
청약홈 무순위·잔여세대·불법행위 재공급 공고 기준 · 매일 아침 갱신 · 날짜순 청약 일정 보기 →
충정로역자이르네서울특별시 중구 · 무순위 · 35세대 · 접수 예정 D-4주변 신축과 비슷
9,463만평당(전용)
›
오남역 서희스타힐스 여의재 1단지경기도 남양주시 · 무순위 · 12세대 · 접수 예정 D-4주변 신축보다 53% 높음 참고
2,798만평당(전용)
›
세종 우미 린 센터파크(행정중심복합도시 5-2생활권 S1블록, 글미마을 9단지)세종특별자치시 다솜동 · 무순위 · 5세대 · 접수 예정 D-4
2,334만평당(전용)
›
신림스카이아파트(20차)서울특별시 관악구 · 무순위 · 4세대 · 접수 예정 D-4주변 신축보다 38% 낮음
3,508만평당(전용)
›
강변역 센트럴 아이파크서울특별시 광진구 · 불법행위 재공급 · 1세대 · 접수 예정 D-4주변 신축보다 33% 낮음
4,754만평당(전용)
›
어반클라쎄목동(12차)서울특별시 양천구 · 무순위 · 3세대 · 마감 주변 신축보다 28% 낮음 · 경쟁률 470:1
4,805만평당(전용)
›
강동 헤리티지 자이서울특별시 강동구 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 49% 낮음 · 경쟁률 53,046:1
4,337만평당(전용)
›
상주자이르네경상북도 상주시 · 무순위 · 257세대 · 마감 · 경쟁률 251세대 미달
1,771만평당(전용)
›
두산위브 더센트럴 수원경기도 수원시 · 무순위 · 25세대 · 마감 주변 신축보다 8% 높음 · 경쟁률 36.04:1
4,362만평당(전용)
›
과천 디에트르 퍼스티지(S2BL)경기도 과천시 · 불법행위 재공급 · 6세대 · 마감 주변 신축보다 52% 낮음 · 경쟁률 552:1
4,796만평당(전용)
›
구리역 하이니티 리버파크경기도 구리시 · 무순위 · 341세대 · 마감 주변 신축보다 54% 높음 · 경쟁률 3.63:1 · 52세대 미달
5,620만평당(전용)
›
부천역 에피트 어바닉경기도 부천시 · 무순위 · 62세대 · 마감 주변 신축과 비슷 · 경쟁률 18세대 미달
2,820만평당(전용)
›
e편한세상 여수 글렌츠전라남도 여수시 · 무순위 · 51세대 · 마감 주변 신축보다 22% 높음 참고 · 경쟁률 46세대 미달
2,291만평당(전용)
›
천왕역 모아엘가 트레뷰(10차)서울특별시 구로구 · 무순위 · 19세대 · 마감 주변 신축보다 18% 높음 · 경쟁률 10.63:1
4,251만평당(전용)
›
오산 세교2지구 A-21블록 모아미래도경기도 오산시 · 무순위 · 3세대 · 마감 주변 신축보다 20% 낮음 · 경쟁률 132:1
1,716만평당(전용)
›
영종국제도시 A26BL 제일풍경채 디오션인천광역시 중구 · 무순위 · 3세대 · 마감 주변 신축보다 7% 높음 참고 · 경쟁률 9:1
1,919만평당(전용)
›
힐스테이트 오산 더퍼스트(조합원 자격상실 및 제명세대)(2회차)경기도 오산시 · 무순위 · 8세대 · 마감 주변 신축보다 14% 높음 참고 · 경쟁률 5.25:1
2,050만평당(전용)
›
용인 플랫폼시티 라온프라이빗 아르디에경기도 용인시 · 무순위 · 98세대 · 마감 주변 신축보다 13% 높음 · 경쟁률 1.19:1 · 3세대 미달
3,115만평당(전용)
›
래미안 엘라비네서울특별시 강서구 · 무순위 · 56세대 · 마감 주변 신축보다 9% 높음 · 경쟁률 21.59:1
7,083만평당(전용)
›
동탄 파크릭스 A55BL경기도 화성시 · 무순위 · 8세대 · 마감 주변 신축보다 22% 낮음 · 경쟁률 222:1
2,084만평당(전용)
›
동탄 파크릭스 A51-2BL경기도 화성시 · 무순위 · 3세대 · 마감 주변 신축보다 21% 낮음 · 경쟁률 89:1
2,143만평당(전용)
›
동탄 파크릭스 A51-1BL경기도 화성시 · 무순위 · 3세대 · 마감 주변 신축보다 20% 낮음 · 경쟁률 74.33:1
2,119만평당(전용)
›
광명자이더샵포레나경기도 광명시 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 39% 낮음 · 경쟁률 1,478:1
3,612만평당(전용)
›
동탄 파크릭스 A52BL경기도 화성시 · 무순위 · 1세대 · 마감 주변 신축보다 29% 낮음 · 경쟁률 343:1
1,916만평당(전용)
›
동탄 파크릭스 A51-1BL경기도 화성시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 24% 낮음 · 경쟁률 175:1
2,023만평당(전용)
›
아산탕정자이 메트로시티(A3BL)충청남도 아산시 · 무순위 · 606세대 · 마감 주변 신축보다 17% 낮음 · 경쟁률 2.13:1 · 162세대 미달
2,174만평당(전용)
›
창원자이 더 스카이경상남도 창원시 · 무순위 · 431세대 · 마감 주변 신축과 비슷 · 경쟁률 310세대 미달
3,641만평당(전용)
›
해링턴플레이스 노원 센트럴서울특별시 노원구 · 무순위 · 58세대 · 마감 주변 신축과 비슷 · 경쟁률 5.19:1
4,819만평당(전용)
›
양주 옥정 린 파밀리에(6차)경기도 양주시 · 무순위 · 11세대 · 마감 · 경쟁률 2.55:1
1,519만평당(전용)
›
한화포레나 부산당리부산광역시 사하구 · 무순위 · 6세대 · 마감 주변 신축보다 80% 높음 · 경쟁률 1.33:1
3,213만평당(전용)
›
대전 롯데캐슬 더퍼스트(조합원 취소분)대전광역시 동구 · 무순위 · 5세대 · 마감 주변 신축보다 11% 높음 · 경쟁률 5.2:1
2,274만평당(전용)
›
힐스테이트 금오 더퍼스트경기도 의정부시 · 무순위 · 1세대 · 마감 주변 신축보다 16% 낮음 · 경쟁률 19:1
1,806만평당(전용)
›
청계 노르웨이숲(8차)서울특별시 중구 · 무순위 · 23세대 · 마감 주변 신축보다 13% 낮음 · 경쟁률 6.65:1
6,232만평당(전용)
›
동탄신도시 금강펜테리움 6차 센트럴파크(A59BL)경기도 화성시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 26% 낮음 · 경쟁률 1,539:1
1,898만평당(전용)
›
경성대부경대역 비스타동원 더 프리미엄부산광역시 남구 · 무순위 · 24세대 · 마감 주변 신축보다 18% 높음 · 경쟁률 7세대 미달
3,642만평당(전용)
›
엄궁역 트라비스 하늘채부산광역시 사상구 · 무순위 · 272세대 · 마감 주변 신축보다 18% 높음 · 경쟁률 251세대 미달
2,714만평당(전용)
›
래미안 라그란데서울특별시 동대문구 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 19% 낮음 · 경쟁률 23,491:1
4,223만평당(전용)
›
용산 호반써밋 에이디션서울특별시 용산구 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 45% 낮음 참고 · 경쟁률 12,299:1
6,203만평당(전용)
›
업성 푸르지오 레이크시티충청남도 천안시 · 무순위 · 364세대 · 마감 주변 신축보다 39% 높음 · 경쟁률 207세대 미달
2,656만평당(전용)
›
북전주 광신프로그레스전북특별자치도 전주시 · 무순위 · 298세대 · 마감 주변 신축보다 40% 높음 참고 · 경쟁률 286세대 미달
1,740만평당(전용)
›
풍무역세권 수자인 그라센트 2차경기도 김포시 · 무순위 · 261세대 · 마감 주변 신축보다 6% 높음 · 경쟁률 156세대 미달
2,767만평당(전용)
›
의정부역 센트럴 아이파크경기도 의정부시 · 무순위 · 141세대 · 마감 주변 신축보다 41% 높음 · 경쟁률 108세대 미달
3,218만평당(전용)
›
르네오션 고성 퍼스트뷰강원특별자치도 고성군 · 무순위 · 63세대 · 마감 주변 신축보다 67% 높음 참고 · 경쟁률 57세대 미달
1,962만평당(전용)
›
온천장 하늘채 엘리시움부산광역시 동래구 · 무순위 · 17세대 · 마감 주변 신축과 비슷 · 경쟁률 9세대 미달
3,139만평당(전용)
›
대방역 여의도 더로드캐슬(3차)서울특별시 영등포구 · 무순위 · 6세대 · 마감 주변 신축보다 15% 낮음 · 경쟁률 57.67:1
6,443만평당(전용)
›
DMC 가재울 아이파크서울특별시 서대문구 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 18% 낮음 · 경쟁률 19,674:1
4,735만평당(전용)
›
중앙하이츠 갈산역 센트럴인천광역시 부평구 · 무순위 · 45세대 · 마감 주변 신축과 비슷 · 경쟁률 15세대 미달
2,828만평당(전용)
›
옥정중앙역 대방 디에트르(중상1, 복합1BL)경기도 양주시 · 무순위 · 379세대 · 마감 주변 신축보다 37% 높음 · 경쟁률 163세대 미달
2,403만평당(전용)
›
도안자이 센텀리체 1단지대전광역시 유성구 · 무순위 · 660세대 · 마감 주변 신축과 비슷 · 경쟁률 589세대 미달
3,055만평당(전용)
›
도안자이 센텀리체 2단지대전광역시 유성구 · 무순위 · 657세대 · 마감 주변 신축과 비슷 참고 · 경쟁률 616세대 미달
3,057만평당(전용)
›
더샵 안동더퍼스트경상북도 안동시 · 무순위 · 70세대 · 마감 주변 신축보다 34% 높음 참고 · 경쟁률 1.77:1 · 6세대 미달
1,899만평당(전용)
›
문수로 라티에르 673울산광역시 남구 · 무순위 · 12세대 · 마감 주변 신축보다 22% 높음 · 경쟁률 6세대 미달
3,565만평당(전용)
›
야목역 서희스타힐스 그랜드힐경기도 화성시 · 무순위 · 8세대 · 마감 주변 신축보다 32% 높음 참고 · 경쟁률 1.62:1
2,299만평당(전용)
›
라클라체자이드파인서울특별시 동작구 · 무순위 · 2세대 · 마감 주변 신축보다 28% 높음 · 경쟁률 1,234:1
10,058만평당(전용)
›
용인 고림 동문 디 이스트경기도 용인시 · 무순위 · 61세대 · 마감 주변 신축보다 30% 높음 · 경쟁률 30세대 미달
3,102만평당(전용)
›
래미안 엘라비네(2차)서울특별시 강서구 · 무순위 · 33세대 · 마감 주변 신축보다 7% 높음 · 경쟁률 14.12:1
6,994만평당(전용)
›
신림스카이아파트(19차)서울특별시 관악구 · 무순위 · 4세대 · 마감 주변 신축보다 38% 낮음 · 경쟁률 13:1
3,508만평당(전용)
›
인천 작전 한라비발디인천광역시 계양구 · 무순위 · 2세대 · 마감 주변 신축보다 11% 낮음 · 경쟁률 8:1
2,299만평당(전용)
›
두산위브더제니스 구미(조합원취소분)경상북도 구미시 · 무순위 · 3세대 · 마감 주변 신축보다 43% 높음 · 경쟁률 12.33:1
1,978만평당(전용)
›
레이카운티부산광역시 연제구 · 불법행위 재공급 · 3세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 11,178:1
2,580만평당(전용)
›
힐스테이트 평거 센트럴경상남도 진주시 · 무순위 · 129세대 · 마감 주변 신축보다 46% 높음 참고 · 경쟁률 57세대 미달
2,744만평당(전용)
›
인천 영종하늘도시 A25블록 대성베르힐(3차)인천광역시 중구 · 무순위 · 5세대 · 마감 주변 신축보다 9% 낮음 참고 · 경쟁률 11.4:1
1,630만평당(전용)
›
힐스테이트 안양펠루스경기도 안양시 · 무순위 · 54세대 · 마감 주변 신축보다 10% 높음 · 경쟁률 1.02:1 · 14세대 미달
4,314만평당(전용)
›
소제지구 A4BL 중흥S-클래스 우미린전라남도 여수시 · 무순위 · 274세대 · 마감 주변 신축보다 18% 높음 참고 · 경쟁률 264세대 미달
1,911만평당(전용)
›
청주 푸르지오 씨엘리체충청북도 청주시 · 무순위 · 270세대 · 마감 주변 신축보다 20% 높음 · 경쟁률 2.7:1 · 96세대 미달
1,942만평당(전용)
›
경기광주역 롯데캐슬 시그니처 1단지경기도 광주시 · 무순위 · 83세대 · 마감 주변 신축보다 28% 높음 · 경쟁률 1.39:1 · 5세대 미달
3,397만평당(전용)
›
동탄 그웬 160 (동탄2 B11BL)경기도 화성특례시 · 무순위 · 78세대 · 마감 · 경쟁률 1.01:1 · 12세대 미달
3,443만평당(전용)
›
소제지구 A3BL 중흥S-클래스 우미린전라남도 여수시 · 무순위 · 41세대 · 마감 주변 신축보다 20% 높음 참고 · 경쟁률 35세대 미달
1,960만평당(전용)
›
엘리프 성성호수공원 2BL충청남도 천안시 · 무순위 · 485세대 · 마감 · 경쟁률 412세대 미달
2,222만평당(전용)
›
엘리프 성성호수공원 1BL충청남도 천안시 · 무순위 · 126세대 · 마감 · 경쟁률 8.67:1
2,378만평당(전용)
›
신검단중앙역 금강펜테리움 센트럴파크(3차)인천광역시 서구 · 무순위 · 1세대 · 마감 주변 신축보다 24% 낮음 · 경쟁률 721:1
1,844만평당(전용)
›
강릉 우미 린 더 프리미어강원특별자치도 강릉시 · 무순위 · 106세대 · 마감 주변 신축보다 37% 높음 참고 · 경쟁률 98세대 미달
2,125만평당(전용)
›
복대자이 더 스카이충청북도 청주시 · 무순위 · 1세대 · 마감 주변 신축보다 18% 낮음 · 경쟁률 2,350:1
1,545만평당(전용)
›
신검단중앙역 금강펜테리움 센트럴파크인천광역시 서구 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 23% 낮음 · 경쟁률 1,132:1
1,870만평당(전용)
›
복대자이 더 스카이충청북도 청주시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 20% 낮음 · 경쟁률 401:1
1,509만평당(전용)
›
청계 노르웨이숲(9차)서울특별시 중구 · 무순위 · 23세대 · 마감 주변 신축보다 13% 낮음 · 경쟁률 16.74:1
6,232만평당(전용)
›
e편한세상 부천 어반스퀘어경기도 부천시 · 무순위 · 485세대 · 마감 주변 신축보다 75% 높음 · 경쟁률 283세대 미달
4,516만평당(전용)
›
공주월송 진아레히충청남도 공주시 · 무순위 · 230세대 · 마감 주변 신축보다 10% 높음 참고 · 경쟁률 120세대 미달
1,708만평당(전용)
›
고덕국제신도시 수자인풍경채 1단지경기도 평택시 · 무순위 · 126세대 · 마감 주변 신축과 비슷 · 경쟁률 84세대 미달
2,210만평당(전용)
›
고덕국제신도시 수자인풍경채 2단지경기도 평택시 · 무순위 · 116세대 · 마감 주변 신축과 비슷 · 경쟁률 88세대 미달
2,210만평당(전용)
›
해링턴플레이스 노원 센트럴(2차)서울특별시 노원구 · 무순위 · 58세대 · 마감 주변 신축과 비슷 · 경쟁률 4.5:1
4,819만평당(전용)
›
상주북천 하늘채 파크원경상북도 상주시 · 무순위 · 42세대 · 마감 주변 신축보다 15% 높음 참고 · 경쟁률 1.48:1 · 14세대 미달
1,763만평당(전용)
›
선운지구다사로움 공가세대 일반공급광주광역시 광산구 · 무순위 · 20세대 · 마감 주변 신축보다 21% 낮음 · 경쟁률 4.4:1
1,279만평당(전용)
›
에스아이팰리스 올림픽공원 (9차)서울특별시 강동구 · 무순위 · 9세대 · 마감 주변 신축보다 10% 낮음 · 경쟁률 46.11:1
7,552만평당(전용)
›
순천금호어울림더파크2차전라남도 순천시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 21% 낮음 · 경쟁률 2:1
1,203만평당(전용)
›
의왕고천지구 대방 디에트르 센트럴(B1BL)(2차)경기도 의왕시 · 무순위 · 1세대 · 마감 · 경쟁률 3,321:1
3,086만평당(전용)
›
파주금촌 금호어울림(조합원 취소분)경기도 파주시 · 무순위 · 10세대 · 마감 주변 신축보다 6% 높음 참고 · 경쟁률 1.7:1 · 5세대 미달
2,204만평당(전용)
›
인천시청역 한신더휴인천광역시 남동구 · 무순위 · 3세대 · 마감 주변 신축과 비슷 · 경쟁률 119:1
2,433만평당(전용)
›
강변역 센트럴 아이파크서울특별시 광진구 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 31% 낮음 · 경쟁률 38,664:1
4,948만평당(전용)
›
더 리치먼드 미아서울특별시 강북구 · 무순위 · 98세대 · 마감 주변 신축보다 6% 낮음 · 경쟁률 1.45:1 · 23세대 미달
5,329만평당(전용)
›
두산위브 트리니뷰 구명역부산광역시 북구 · 무순위 · 31세대 · 마감 주변 신축보다 35% 높음 · 경쟁률 6세대 미달
3,029만평당(전용)
›
중앙하이츠 원종역경기도 부천시 · 무순위 · 28세대 · 마감 주변 신축보다 28% 높음 참고 · 경쟁률 1.43:1 · 1세대 미달
2,638만평당(전용)
›
엘리프 역곡경기도 부천시 · 무순위 · 36세대 · 마감 주변 신축보다 16% 높음 · 경쟁률 3.44:1
3,709만평당(전용)
›
식사 푸르지오 파크센트(조합원 취소분)경기도 고양시 · 무순위 · 20세대 · 마감 주변 신축보다 14% 높음 · 경쟁률 1.7:1
3,116만평당(전용)
›
동래사적공원 오네뜨부산광역시 동래구 · 무순위 · 2세대 · 마감 주변 신축보다 8% 낮음 · 경쟁률 4.5:1
2,547만평당(전용)
›
검암역자이르네인천광역시 서구 · 무순위 · 150세대 · 마감 주변 신축보다 27% 높음 참고 · 경쟁률 1.06:1 · 23세대 미달
2,295만평당(전용)
›
더샵 관저아르테대전광역시 서구 · 무순위 · 223세대 · 마감 주변 신축보다 30% 높음 · 경쟁률 1.03:1 · 113세대 미달
2,438만평당(전용)
›
오남역 서희스타힐스 여의재 3단지경기도 남양주시 · 무순위 · 58세대 · 마감 주변 신축보다 55% 높음 참고 · 경쟁률 1.02:1 · 9세대 미달
2,843만평당(전용)
›
해운대 마티안 디 에디션부산광역시 해운대구 · 무순위 · 26세대 · 마감 주변 신축보다 7% 높음 · 경쟁률 8세대 미달
4,293만평당(전용)
›
메트로시티 자산 데시앙경상남도 창원시 · 무순위 · 9세대 · 마감 주변 신축보다 23% 높음 · 경쟁률 9.67:1
2,174만평당(전용)
›
오션포레베네스트하우스(미단시티 공동8BL)인천광역시 중구 · 무순위 · 3세대 · 마감 주변 신축과 비슷 참고 · 경쟁률 3.33:1
1,720만평당(전용)
›
써밋 더힐서울특별시 동작구 · 무순위 · 3세대 · 마감 주변 신축보다 34% 높음 · 경쟁률 726:1
11,521만평당(전용)
›
더 리치먼드 리버센트 소양강원특별자치도 춘천시 · 무순위 · 24세대 · 마감 주변 신축보다 29% 높음 · 경쟁률 16세대 미달
2,292만평당(전용)
›
대방역 여의도 더로드캐슬(4차)서울특별시 영등포구 · 무순위 · 5세대 · 마감 주변 신축보다 15% 낮음 · 경쟁률 98.6:1
6,443만평당(전용)
›
수원역 아너스빌 타임원경기도 수원시 · 무순위 · 53세대 · 마감 주변 신축보다 18% 낮음 · 경쟁률 2.94:1
3,067만평당(전용)
›
힐스테이트 시흥더클래스경기도 시흥시 · 무순위 · 51세대 · 마감 주변 신축보다 32% 높음 · 경쟁률 1.29:1
3,211만평당(전용)
›
청계 노르웨이숲(10차)서울특별시 중구 · 무순위 · 19세대 · 마감 주변 신축보다 13% 낮음 · 경쟁률 16.63:1
6,232만평당(전용)
›
오정 해모로 스마트시티(조합원 취소분)경기도 부천시 · 무순위 · 10세대 · 마감 주변 신축보다 57% 높음 참고 · 경쟁률 2.1:1 · 2세대 미달
3,007만평당(전용)
›
루원시티 SK 리더스뷰인천광역시 서해구 · 불법행위 재공급 · 9세대 · 마감 주변 신축보다 33% 낮음 · 경쟁률 2,823:1
1,669만평당(전용)
›
힐스테이트 앞산 센트럴(6차)대구광역시 남구 · 무순위 · 7세대 · 마감 주변 신축보다 8% 낮음 · 경쟁률 3.43:1
2,039만평당(전용)
›
호반써밋 풍무Ⅱ김포 풍무역세권 · 무순위 · 8세대 · 마감 · 경쟁률 36:1
2,525만평당(전용)
›
백석시그니처자이 2단지충청남도 천안시 · 무순위 · 261세대 · 마감 주변 신축보다 11% 높음 · 경쟁률 255세대 미달
2,271만평당(전용)
›
백석시그니처자이 1단지충청남도 천안시 · 무순위 · 252세대 · 마감 주변 신축보다 15% 높음 · 경쟁률 232세대 미달
2,271만평당(전용)
›
동탄 파크릭스 A55BL(2차)경기도 화성시 · 무순위 · 2세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 502:1
2,333만평당(전용)
›
동대구역 더샵 센터시티대구광역시 동구 · 무순위 · 1세대 · 마감 주변 신축보다 14% 낮음 · 경쟁률 83:1
1,933만평당(전용)
›
순천금호어울림더파크2차전라남도 순천시 · 무순위 · 1세대 · 마감 주변 신축보다 21% 낮음 · 경쟁률 10:1
1,203만평당(전용)
›
평택 고덕 우미 린 프레스티지(Abc-36BL)경기도 평택시 · 무순위 · 192세대 · 마감 주변 신축과 비슷 · 경쟁률 68세대 미달
2,286만평당(전용)
›
호반써밋 첨단3지구(A7BL)광주연구개발특구 첨단3지구 · 무순위 · 154세대 · 마감 · 경쟁률 81세대 미달
2,114만평당(전용)
›
호반써밋 첨단3지구(A8BL)광주연구개발특구 첨단3지구 · 무순위 · 113세대 · 마감 · 경쟁률 102세대 미달
1,933만평당(전용)
›
알티에로 광안부산광역시 수영구 · 무순위 · 12세대 · 마감 주변 신축보다 121% 높음 · 경쟁률 7세대 미달
7,159만평당(전용)
›
포레나더샵 인천시청역(2차)인천광역시 남동구 · 무순위 · 10세대 · 마감 주변 신축보다 47% 높음 · 경쟁률 14.2:1
3,662만평당(전용)
›
힐스테이트 양산더스카이 1단지경상남도 양산시 · 무순위 · 239세대 · 마감 주변 신축보다 29% 높음 · 경쟁률 234세대 미달
2,060만평당(전용)
›
힐스테이트 양산더스카이 2단지경상남도 양산시 · 무순위 · 37세대 · 마감 주변 신축보다 21% 높음 · 경쟁률 34세대 미달
1,938만평당(전용)
›
아산배방(2-A13BL) 금강펜테리움 센트럴파크충청남도 아산시 · 무순위 · 1세대 · 마감 주변 신축보다 21% 낮음 · 경쟁률 158:1
1,837만평당(전용)
›
판교TH212경기도 성남시 · 무순위 · 1세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 244:1
4,185만평당(전용)
›
e편한세상 강동 프레스티지원서울특별시 강동구 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 18% 낮음 · 경쟁률 306:1
5,234만평당(전용)
›
상무 양우내안애 퍼스트힐(조합원 취소분)전남광주통합특별시 서구 · 무순위 · 10세대 · 마감 주변 신축보다 60% 높음 · 경쟁률 1.7:1
3,019만평당(전용)
›
아크로 리버스카이서울특별시 동작구 · 무순위 · 3세대 · 마감 주변 신축보다 52% 높음 · 경쟁률 100:1
11,566만평당(전용)
›
인천 영종하늘도시 A25블록 대성베르힐(4차)인천광역시 영종구 · 무순위 · 4세대 · 마감 주변 신축보다 9% 낮음 참고 · 경쟁률 19:1
1,630만평당(전용)
›
창원 롯데캐슬 하버팰리스경상남도 창원시 · 무순위 · 2세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 1,973:1
1,731만평당(전용)
›
영종하늘도시 한신더휴2차(3차)인천광역시 영종구 · 무순위 · 1세대 · 마감 주변 신축보다 19% 낮음 · 경쟁률 240:1
1,433만평당(전용)
›
김해 신문 센트럴 아이파크경상남도 김해시 · 무순위 · 865세대 · 마감 주변 신축보다 39% 높음 · 경쟁률 788세대 미달
2,152만평당(전용)
›
펜타힐즈 더블유 1단지경상북도 경산시 · 무순위 · 486세대 · 마감 주변 신축보다 38% 높음 · 경쟁률 371세대 미달
2,573만평당(전용)
›
동탄신도시 금강펜테리움 6차 센트럴파크(A59BL) (3차)경기도 화성시 · 무순위 · 3세대 · 마감 주변 신축보다 28% 낮음 · 경쟁률 2,000:1
1,834만평당(전용)
›
한화포레나 안산고잔2차경기도 안산시 · 무순위 · 2세대 · 마감 주변 신축보다 9% 낮음 · 경쟁률 234:1
2,916만평당(전용)
›
더샵 송도그란테르 G5-11블록인천광역시 연수구 · 무순위 · 45세대 · 마감 주변 신축보다 16% 높음 · 경쟁률 8.24:1
4,780만평당(전용)
›
더샵 송도그란테르 G5-4블록인천광역시 연수구 · 무순위 · 36세대 · 마감 주변 신축보다 21% 높음 · 경쟁률 10:1
4,966만평당(전용)
›
더샵 송도그란테르 G5-1블록인천광역시 연수구 · 무순위 · 35세대 · 마감 주변 신축보다 24% 높음 · 경쟁률 21.83:1
5,095만평당(전용)
›
더샵 송도그란테르 G5-3블록인천광역시 연수구 · 무순위 · 22세대 · 마감 주변 신축보다 23% 높음 · 경쟁률 13.59:1
5,066만평당(전용)
›
더샵 송도그란테르 G5-5블록인천광역시 연수구 · 무순위 · 12세대 · 마감 주변 신축보다 22% 높음 · 경쟁률 21.67:1
5,033만평당(전용)
›
e편한세상 동탄 파크아너스 A56블럭(2회차)경기도 화성시 · 무순위 · 4세대 · 마감 · 경쟁률 506:1
2,016만평당(전용)
›
천안 아이파크 시티 1단지(2회차)충청남도 천안시 · 무순위 · 86세대 · 마감 주변 신축보다 20% 높음 · 경쟁률 16세대 미달
2,140만평당(전용)
›
장위 푸르지오 마크원서울특별시 성북구 · 무순위 · 39세대 · 마감 주변 신축보다 26% 높음 · 경쟁률 42.23:1
6,086만평당(전용)
›
더 리치먼드 미아(2차)서울특별시 강북구 · 무순위 · 14세대 · 마감 주변 신축보다 7% 낮음 · 경쟁률 6.21:1
5,265만평당(전용)
›
용현자이 크레스트(2차)인천광역시 미추홀구 · 무순위 · 6세대 · 마감 · 경쟁률 358:1
1,756만평당(전용)
›
양평역 한라비발디 2단지경기도 양평군 · 무순위 · 1세대 · 마감 주변 신축보다 15% 낮음 · 경쟁률 401:1
1,641만평당(전용)
›
더샵 검단레이크파크(AB23BL)인천광역시 검단구 · 무순위 · 336세대 · 마감 주변 신축보다 38% 높음 · 경쟁률 2.65:1 · 97세대 미달
2,592만평당(전용)
›
더샵 검단레이크파크(AB22BL)인천광역시 검단구 · 무순위 · 116세대 · 마감 주변 신축보다 32% 높음 · 경쟁률 3.99:1
2,544만평당(전용)
›
드파인 아르티아서울특별시 동작구 · 무순위 · 15세대 · 마감 주변 신축보다 35% 높음 · 경쟁률 43.73:1
10,697만평당(전용)
›
청계 노르웨이숲(11차)서울특별시 중구 · 무순위 · 13세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 34.31:1
6,339만평당(전용)
›
오산세교2지구 A-13블록 호반써밋(2차)경기도 오산시 · 무순위 · 2세대 · 마감 주변 신축보다 33% 낮음 · 경쟁률 213:1
1,864만평당(전용)
›
송파 시그니처 롯데캐슬서울특별시 송파구 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 36% 낮음 · 경쟁률 90,443:1
3,660만평당(전용)
›
힐스테이트 초월역 2BL경기도 광주시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 12% 높음 · 경쟁률 3:1
2,132만평당(전용)
›
천왕역 모아엘가 트레뷰(11차)서울특별시 구로구 · 무순위 · 3세대 · 마감 주변 신축보다 17% 높음 · 경쟁률 49.33:1
4,239만평당(전용)
›
춘천 리버뷰 아이파크강원특별자치도 춘천시 · 무순위 · 180세대 · 마감 주변 신축보다 25% 높음 참고 · 경쟁률 124세대 미달
2,210만평당(전용)
›
트리븐 김해경상남도 김해시 · 무순위 · 1세대 · 마감 주변 신축보다 127% 높음 · 경쟁률 7:1
3,322만평당(전용)
›
구리역 롯데캐슬 시그니처경기도 구리시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 15% 낮음 · 경쟁률 1,420:1
3,519만평당(전용)
›
오산헤리티지자이 1단지경기도 오산시 · 무순위 · 256세대 · 마감 주변 신축보다 9% 높음 · 경쟁률 153세대 미달
3,046만평당(전용)
›
호반써밋 풍무Ⅲ김포 풍무역세권 · 무순위 · 4세대 · 마감 · 경쟁률 100:1
2,809만평당(전용)
›
창원 한신더휴 메가센텀경상남도 창원시 · 무순위 · 430세대 · 마감 주변 신축보다 30% 높음 · 경쟁률 172세대 미달
2,367만평당(전용)
›
장위 푸르지오 마크원(2차)서울특별시 성북구 · 무순위 · 4세대 · 마감 주변 신축보다 26% 높음 · 경쟁률 110:1
6,086만평당(전용)
›
대방역 여의도 더로드캐슬(5차)서울특별시 영등포구 · 무순위 · 3세대 · 마감 주변 신축보다 15% 낮음 · 경쟁률 161:1
6,443만평당(전용)
›
의왕역 SK VIEW경기도 의왕시 · 무순위 · 17세대 · 마감 주변 신축보다 40% 높음 · 경쟁률 40.88:1
4,267만평당(전용)
›
세종 한신더휴 리저브Ⅱ(행정중심복합도시 1-5생활권 H5블록) [한뜰마을4단지]세종특별자치시 다솜1로 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 47% 낮음 · 경쟁률 2,566:1
1,525만평당(전용)
›
제일풍경채 검단Ⅳ인천광역시 검단구 · 불법행위 재공급 · 1세대 · 마감 · 경쟁률 425:1
2,137만평당(전용)
›
에스아이팰리스 강동 센텀Ⅱ(4차)서울특별시 강동구 · 무순위 · 7세대 · 마감 주변 신축보다 47% 낮음 · 경쟁률 33.29:1
4,469만평당(전용)
›
포레나더샵 인천시청역(3차)인천광역시 남동구 · 무순위 · 5세대 · 마감 주변 신축보다 46% 높음 · 경쟁률 30.4:1
3,631만평당(전용)
›
남양주 진접 서한이다음(S1BL)경기도 남양주시 · 무순위 · 141세대 · 마감 주변 신축보다 35% 높음 참고 · 경쟁률 1.11:1 · 39세대 미달
2,476만평당(전용)
›
동대구역 더샵 센터시티(2차)대구광역시 동구 · 무순위 · 1세대 · 마감 주변 신축보다 14% 낮음 · 경쟁률 80:1
1,933만평당(전용)
›
한강 푸르지오 리버프론트경기도 김포시 · 무순위 · 832세대 · 마감 주변 신축보다 27% 높음 · 경쟁률 666세대 미달
3,016만평당(전용)
›
두산위브더제니스 대연부산광역시 남구 · 무순위 · 107세대 · 마감 주변 신축보다 52% 높음 · 경쟁률 64세대 미달
4,254만평당(전용)
›
청계 노르웨이숲(12차)서울특별시 중구 · 무순위 · 13세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 11.46:1
6,339만평당(전용)
›
드파인 아르티아(2차)서울특별시 동작구 · 무순위 · 7세대 · 마감 주변 신축보다 16% 높음 · 경쟁률 36.57:1
9,207만평당(전용)
›
역북 서희스타힐스 프라임시티(조합원 취소분)경기도 용인시 · 무순위 · 4세대 · 마감 주변 신축보다 7% 높음 · 경쟁률 11.25:1
2,548만평당(전용)
›
제일풍경채 검단Ⅳ인천광역시 검단구 · 무순위 · 1세대 · 마감 · 경쟁률 155:1
2,021만평당(전용)
›
더샵 트리센트부산광역시 남구 · 무순위 · 28세대 · 마감 주변 신축보다 24% 높음 · 경쟁률 3.54:1
3,322만평당(전용)
›
북오산자이 드포레경기도 오산시 · 무순위 · 2세대 · 마감 주변 신축보다 62% 높음 · 경쟁률 6:1
3,950만평당(전용)
›
더샵 송도마리나베이(조합원 자격상실세대 3회차)인천광역시 연수구 · 무순위 · 1세대 · 마감 주변 신축보다 17% 높음 · 경쟁률 173:1
3,050만평당(전용)
›
두산위브더제니스 부천경기도 부천시 · 무순위 · 229세대 · 마감 주변 신축보다 76% 높음 · 경쟁률 94세대 미달
4,826만평당(전용)
›
용인반도체클러스터 동일하이빌 파크밸리(D1-1블록)경기도 용인시 · 무순위 · 126세대 · 마감 · 경쟁률 38세대 미달
2,206만평당(전용)
›
아야진 라메르 데시앙강원특별자치도 고성군 · 무순위 · 3세대 · 마감 주변 신축보다 24% 높음 참고 · 경쟁률 3세대 미달
1,429만평당(전용)
›
더 리치먼드 미아(3차)서울특별시 강북구 · 무순위 · 14세대 · 마감 주변 신축보다 7% 낮음 · 경쟁률 11:1
5,265만평당(전용)
›
철산자이 더 헤리티지경기도 광명시 · 무순위 · 4세대 · 마감 주변 신축보다 19% 낮음 · 경쟁률 13,656:1
4,455만평당(전용)
›
철산자이 브리에르경기도 광명시 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 25% 낮음 · 경쟁률 3,504:1
4,417만평당(전용)
›
신천역 에피트(2차)경기도 시흥시 · 무순위 · 15세대 · 마감 주변 신축과 비슷 · 경쟁률 1.73:1 · 8세대 미달
2,519만평당(전용)
›
제일풍경채 첨단3지구(A6BL)광주연구개발특구 첨단3지구 · 무순위 · 187세대 · 마감 · 경쟁률 165세대 미달
2,015만평당(전용)
›
아크로 리버스카이(2차)서울특별시 동작구 · 무순위 · 3세대 · 마감 주변 신축보다 52% 높음 · 경쟁률 71:1
11,566만평당(전용)
›
과천 푸르지오 라비엔오경기도 과천시 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 48% 낮음 · 경쟁률 693:1
3,134만평당(전용)
›
더샵 청주그리니티충청북도 청주시 · 무순위 · 2세대 · 마감 주변 신축보다 12% 낮음 · 경쟁률 768:1
1,302만평당(전용)
›
더샵 청주그리니티충청북도 청주시 · 불법행위 재공급 · 2세대 · 마감 주변 신축보다 15% 낮음 · 경쟁률 146:1
1,248만평당(전용)
›
과천 푸르지오 벨라르테경기도 과천시 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 48% 낮음 · 경쟁률 3,079:1
3,148만평당(전용)
›
태화강 에피트울산광역시 울주군 · 불법행위 재공급 · 1세대 · 마감 주변 신축보다 13% 낮음 참고 · 경쟁률 1,067:1
2,136만평당(전용)
›
경쟁률이 가장 높았던 무순위·재공급
공급 세대보다 접수 건수가 압도적으로 많았던 곳입니다. 대부분 당초 분양가가 주변 시세보다 크게 낮았습니다.
1
송파 시그니처 롯데캐슬서울특별시 송파구 · 불법행위 재공급 · 공급 1세대 · 접수 90,443건주변 신축보다 36% 낮음
90,443:1
2
강동 헤리티지 자이서울특별시 강동구 · 불법행위 재공급 · 공급 2세대 · 접수 106,093건주변 신축보다 49% 낮음
53,046:1
3
강변역 센트럴 아이파크서울특별시 광진구 · 불법행위 재공급 · 공급 2세대 · 접수 77,328건주변 신축보다 31% 낮음
38,664:1
4
래미안 라그란데서울특별시 동대문구 · 불법행위 재공급 · 공급 2세대 · 접수 46,982건주변 신축보다 19% 낮음
23,491:1
5
DMC 가재울 아이파크서울특별시 서대문구 · 불법행위 재공급 · 공급 1세대 · 접수 19,674건주변 신축보다 18% 낮음
19,674:1
6
철산자이 더 헤리티지경기도 광명시 · 무순위 · 공급 4세대 · 접수 54,626건주변 신축보다 19% 낮음
13,656:1
7
용산 호반써밋 에이디션서울특별시 용산구 · 불법행위 재공급 · 공급 1세대 · 접수 12,299건주변 신축보다 45% 낮음 참고
12,299:1
8
레이카운티부산광역시 연제구 · 불법행위 재공급 · 공급 3세대 · 접수 33,535건주변 신축보다 12% 낮음
11,178:1
9
철산자이 브리에르경기도 광명시 · 불법행위 재공급 · 공급 2세대 · 접수 7,007건주변 신축보다 25% 낮음
3,504:1
10
의왕고천지구 대방 디에트르 센트럴(B1BL)(2차)경기도 의왕시 · 무순위 · 공급 1세대 · 접수 3,321건
3,321:1
무순위·재공급이란
- 무순위(잔여세대) — 정당 계약과 예비 당첨자 계약이 끝난 뒤에도 남은 세대를 다시 모집합니다.
청약통장이 필요 없는 경우가 많습니다.
- 불법행위 재공급 — 위장전입·부정 당첨 등으로 계약이 취소된 세대를 다시 공급합니다.
보통 한두 세대이고, 원래 공고의 분양가와 조건을 따릅니다.
- 자격 — 2025년 6월 10일부터 무순위 청약은 무주택 세대구성원만 신청할 수 있습니다.
거주지역 요건은 지자체가 단지마다 정합니다. 재공급은 원래 공고의 자격(특별공급 유형 등)을 따르는 경우가 많습니다.
- 분양가 — 대개 당초 분양가입니다. 그 사이 주변 시세가 오른 곳은 차이가 크게 납니다.
다만 전매 제한·실거주 의무·계약금 일정은 원래 공고 조건이 그대로 붙을 수 있습니다.
‘주변 신축 대비’는 이렇게 계산합니다
분양 공고와 같은 기준입니다. 주택형별 최고 분양가를 전용면적 평당가로 바꿔 세대수로 가중하고,
공고 위치 반경 2~5km 안 입주 10년 이내 아파트의 최근 12개월 실거래 중위 평당가와 비교합니다.
분양 공고 페이지에 자세한 기준이 있습니다.
이 페이지는 청약을 권하거나 말리지 않습니다. 자격·일정·분양가·전매 조건은 반드시
청약홈 공고 원문으로 확인하세요.
출처: 한국부동산원 청약홈 분양정보·청약접수 경쟁률, 국토교통부 실거래가.
자주 묻는 질문
무순위 청약(줍줍)은 누구나 할 수 있나요?
2025년 6월 10일부터는 무주택 세대구성원만 신청할 수 있습니다. 거주지역 요건은 지자체가 단지마다 정하므로 공고문을 확인해야 합니다. 청약통장은 필요 없는 경우가 많습니다.
무순위 분양가는 왜 주변 시세보다 낮은가요?
처음 분양할 때의 분양가(당초 분양가)로 다시 공급하기 때문입니다. 분양 뒤 주변 시세가 오른 지역에서는 차이가 커지고, 그래서 경쟁률이 수만 대 1까지 올라가기도 합니다.
불법행위 재공급은 무순위와 무엇이 다른가요?
부정 당첨·위장전입 등으로 계약이 취소된 세대를 다시 공급하는 것입니다. 원래 공고의 자격과 조건을 따르는 경우가 많아 특별공급 유형별로 나눠 뽑기도 합니다.
당첨되면 바로 팔 수 있나요?
원래 공고에 붙은 전매 제한·실거주 의무가 그대로 적용될 수 있습니다. 공고문의 전매·거주 조건과 계약금 일정을 꼭 확인하세요.
dmFyIFRIRU1FX0lDTz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSdkYXJrJz8nPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMTQuNUE4LjUgOC41IDAgMCAxIDkuNSA0YTguNSA4LjUgMCAxIDAgMTAuNSAxMC41eiIvPjwvc3ZnPic6dD09PSdsaWdodCc/JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDcuNWE0LjUgNC41IDAgMSAwIDAgOSA0LjUgNC41IDAgMCAwIDAtOXpNMTIgMnYyTTEyIDIwdjJNNC4yIDQuMmwxLjQgMS40TTE4LjQgMTguNGwxLjQgMS40TTIgMTJoMk0yMCAxMmgyTTQuMiAxOS44bDEuNC0xLjRNMTguNCA1LjZsMS40LTEuNCIvPjwvc3ZnPic6JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDNhOSA5IDAgMSAwIDAgMTggOSA5IDAgMCAwIDAtMTh6TTEyIDN2MThhOSA5IDAgMCAwIDAtMTh6Ii8+PC9zdmc+Jzt9OwoKdmFyICQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cGgtJytpKTt9Owp2YXIgdj1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlPygrZS52YWx1ZXx8MCk6MDt9Owp2YXIgcz1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlP2UudmFsdWU6Jyc7fTsKdmFyIGY9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+ybkCc7fTsKdmFyIGZkPWZ1bmN0aW9uKG4sZCl7cmV0dXJuIG4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOmR8fDF9KTt9Owp2YXIgY3V0MTA9ZnVuY3Rpb24oeCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCh4KS8xMCkqMTA7fTsKdmFyIHNldD1mdW5jdGlvbihpLHQpe3ZhciBlPSQoaSk7aWYoIWUpcmV0dXJuO2lmKGk9PT0nbWFpbicpe2NvdW50VXAoZSx0KTt9ZWxzZXtlLnRleHRDb250ZW50PXQ7fX07CgovKiDslYjsoITtlZwg7KCA7J6l7IaMIOygkeq3vCDigJQg7Iuc7YGs66a/IOuqqOuTnC/ssKjri6gg7ZmY6rK97JeQ7ISc64+EIOyjveyngCDslYrqsowgKi8KdmFyIHN0b3JlPXsKICBnZXQ6ZnVuY3Rpb24oayl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrKTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0sCiAgc2V0OmZ1bmN0aW9uKGssdmFsKXt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2YWwpO31jYXRjaChlKXt9fSwKICBkZWw6ZnVuY3Rpb24oayl7dHJ5e2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGspO31jYXRjaChlKXt9fQp9OwoKdmFyIHRvYXN0PWZ1bmN0aW9uKG1zZyl7CiAgdmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC10b2FzdCcpOwogIGlmKCF0KXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSd0cGgtdG9hc3QnO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7fQogIHQudGV4dENvbnRlbnQ9bXNnO3QuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIGNsZWFyVGltZW91dCh0Ll9oKTt0Ll9oPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTt9LDE5MDApOwp9OwoKLyog7YWM66eIIO2GoOq4gDog7Iuc7Iqk7YWcIOyEpOyglSDihpIg65287J207Yq4IOKGkiDri6Ttgawg7Iic7ZmYICovCmZ1bmN0aW9uIGluaXRUaGVtZShyb290KXsKICB2YXIgSz0ndHBoLXRoZW1lJywgY3VyPXN0b3JlLmdldChLKTsKICBpZihjdXIpIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxjdXIpOwogIHZhciBiPSQoJ3RoZW1lJyk7CiAgaWYoIWIpIHJldHVybjsKICB2YXIgbGFiZWw9ZnVuY3Rpb24oKXsKICAgIHZhciB0PXJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICBiLmlubmVySFRNTD1USEVNRV9JQ08odCkrJyA8c3Bhbj4nKyh0PT09J2RhcmsnPyfri6TtgawnOnQ9PT0nbGlnaHQnPyfrnbzsnbTtirgnOifsnpDrj5knKSsnPC9zcGFuPic7CiAgfTsKICBsYWJlbCgpOwogIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgdD1yb290LmdldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScpOwogICAgdmFyIG54PSF0PydsaWdodCc6dD09PSdsaWdodCc/J2RhcmsnOicnOwogICAgaWYobngpe3Jvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxueCk7c3RvcmUuc2V0KEssbngpO30KICAgIGVsc2V7cm9vdC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTtzdG9yZS5kZWwoSyk7fQogICAgbGFiZWwoKTsKICB9KTsKfQoKLyog7J6F66Cl6rCSIOKGlCBVUkwg7YyM652866+47YSwIOKGlCBsb2NhbFN0b3JhZ2UgKi8KZnVuY3Rpb24gaW5pdFN0YXRlKHNsdWcsIGlkcywgb25jaGFuZ2UpewogIHZhciBLRVk9J3RwaC1pbi0nK3NsdWcsIHE9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpLCB1c2VkPWZhbHNlOwogIGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpewogICAgdmFyIGU9JChpKTsgaWYoIWUpIHJldHVybjsKICAgIGlmKHEuaGFzKGkpKXsgZS52YWx1ZT1xLmdldChpKTsgdXNlZD10cnVlOyB9CiAgfSk7CiAgaWYoIXVzZWQpewogICAgdmFyIHJhdz1zdG9yZS5nZXQoS0VZKTsKICAgIGlmKHJhdyl7IHRyeXsgdmFyIG89SlNPTi5wYXJzZShyYXcpOwogICAgICBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgdmFyIGU9JChpKTsgaWYoZSYmb1tpXSE9PXVuZGVmaW5lZCYmb1tpXSE9PScnKSBlLnZhbHVlPW9baV07IH0pOwogICAgfWNhdGNoKGUpe30gfQogIH0KICB2YXIgc2F2ZT1mdW5jdGlvbigpewogICAgdmFyIG89e307IGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpeyB2YXIgZT0kKGkpOyBpZihlKSBvW2ldPWUudmFsdWU7IH0pOwogICAgc3RvcmUuc2V0KEtFWSwgSlNPTi5zdHJpbmdpZnkobykpOwogIH07CiAgdmFyIHNoYXJlPSQoJ3NoYXJlJyk7CiAgaWYoc2hhcmUpIHNoYXJlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHA9bmV3IFVSTFNlYXJjaFBhcmFtcygpOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIHAuc2V0KGksZS52YWx1ZSk7IH0pOwogICAgdmFyIHVybD1sb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWUrJz8nK3AudG9TdHJpbmcoKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+unge2BrOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpewogICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpLnRoZW4oZG9uZSxmdW5jdGlvbigpe3Byb21wdCgn7JWE656YIOyjvOyGjOulvCDrs7XsgqztlZjshLjsmpQnLHVybCk7fSk7CiAgICB9IGVsc2UgcHJvbXB0KCfslYTrnpgg7KO87IaM66W8IOuzteyCrO2VmOyEuOyalCcsdXJsKTsKICB9KTsKICB2YXIgY29weT0kKCdjb3B5Jyk7CiAgaWYoY29weSkgY29weS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciBsaW5lcz1bZG9jdW1lbnQudGl0bGUuc3BsaXQoJ3wnKVswXS50cmltKCldOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7CiAgICAgIHZhciBlPSQoaSk7IGlmKCFlKSByZXR1cm47CiAgICAgIHZhciBsYWI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGFiZWxbZm9yPXRwaC0nK2krJ10nKTsKICAgICAgdmFyIHZhbD1lLnRhZ05hbWU9PT0nU0VMRUNUJz9lLm9wdGlvbnNbZS5zZWxlY3RlZEluZGV4XS50ZXh0OigrZS52YWx1ZXx8MCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyk7CiAgICAgIGlmKGxhYikgbGluZXMucHVzaCgnwrcgJytsYWIudGV4dENvbnRlbnQudHJpbSgpKyc6ICcrdmFsKTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLXRvdGFsJykuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgICAgdmFyIGw9dC5xdWVyeVNlbGVjdG9yKCcubCcpLCB2YWw9dC5xdWVyeVNlbGVjdG9yKCcudicpOwogICAgICBpZihsJiZ2YWwpIGxpbmVzLnB1c2gobC50ZXh0Q29udGVudC50cmltKCkrJzogJyt2YWwudGV4dENvbnRlbnQudHJpbSgpKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1wYWdlIHRhYmxlJykuZm9yRWFjaChmdW5jdGlvbih0Yil7CiAgICAgIHRiLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaChmdW5jdGlvbih0cil7CiAgICAgICAgdmFyIHRkPXRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7CiAgICAgICAgaWYodGQubGVuZ3RoPT09MikgbGluZXMucHVzaCgnwrcgJyt0ZFswXS50ZXh0Q29udGVudC50cmltKCkrJzogJyt0ZFsxXS50ZXh0Q29udGVudC50cmltKCkpOwogICAgICB9KTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJywgbG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lKTsKICAgIHZhciB0eHQ9bGluZXMuam9pbignXG4nKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+qysOqzvOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihkb25lLGRvbmUpOwogICAgZWxzZSB7IHZhciB0YT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOyB0YS52YWx1ZT10eHQ7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGEpOwogICAgICAgICAgIHRhLnNlbGVjdCgpOyB0cnl7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTt9Y2F0Y2goZSl7fSB0YS5yZW1vdmUoKTsgZG9uZSgpOyB9CiAgfSk7CiAgdmFyIHJlc2V0PSQoJ3Jlc2V0Jyk7CiAgaWYocmVzZXQpIHJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgc3RvcmUuZGVsKEtFWSk7IGxvY2F0aW9uLmhyZWY9bG9jYXRpb24ucGF0aG5hbWU7CiAgfSk7CiAgcmV0dXJuIHNhdmU7Cn0KCi8qIOq4iOyVoSDsnoXroKUg67CRIOu5oOuluCDsobDsoJUg7LmpICovCmZ1bmN0aW9uIGluaXRDaGlwcyhvbmNoYW5nZSl7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1jaGlwJykuZm9yRWFjaChmdW5jdGlvbihjKXsKICAgIGMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBlPSQoYy5kYXRhc2V0LnQpOyBpZighZSkgcmV0dXJuOwogICAgICB2YXIgZD1jLmRhdGFzZXQuZDsKICAgICAgZS52YWx1ZSA9IGQ9PT0nMCcgPyAwIDogTWF0aC5tYXgoMCwoK2UudmFsdWV8fDApKygrZCkpOwogICAgICBvbmNoYW5nZSgpOwogICAgfSk7CiAgfSk7Cn0KCi8qIOyeheugpeqwkuydhCDsgqzrnozsnbQg7J2964qUIOusuOyepeycvOuhnCAoMywwMDAsMDAwIOKGkiAzMDDrp4zsm5ApICovCmZ1bmN0aW9uIGtvck1vbmV5KG4pewogIG49TWF0aC5yb3VuZChuKTsgaWYoIW4pIHJldHVybiAnMOybkCc7CiAgdmFyIGVvaz1NYXRoLmZsb29yKG4vMTAwMDAwMDAwKSwgbWFuPU1hdGguZmxvb3IoKG4lMTAwMDAwMDAwKS8xMDAwMCksIHdvbj1uJTEwMDAwLCBwPVtdOwogIGlmKGVvaykgcC5wdXNoKGVvaysn7Ja1Jyk7CiAgaWYobWFuKSBwLnB1c2gobWFuLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfrp4wnKTsKICBpZih3b24pIHAucHVzaCh3b24udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykpOwogIHJldHVybiBwLmpvaW4oJyAnKSsn7JuQJzsKfQpmdW5jdGlvbiBpbml0UmVhZChtYXApewogIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihpZCl7CiAgICB2YXIgZT0kKGlkKSwgb3V0PSQobWFwW2lkXSk7IGlmKCFlfHwhb3V0KSByZXR1cm47CiAgICB2YXIgdXBkPWZ1bmN0aW9uKCl7IG91dC50ZXh0Q29udGVudCA9ICgrZS52YWx1ZT4wKSA/IGtvck1vbmV5KCtlLnZhbHVlKSA6ICcnOyB9OwogICAgZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkKTsgdXBkKCk7CiAgfSk7Cn0KCgovKiDsiKvsnpAg7Lm07Jq07Yq47JeFIOKAlCDqsrDqs7zqsIAg67CU64CUIOuVjCDrtoDrk5zrn73qsowgKi8KZnVuY3Rpb24gY291bnRVcChlbCwgdGV4dCl7CiAgaWYoIWVsKSByZXR1cm47CiAgdmFyIHByZXY9ZWwuX3Jhd3x8JycsIGN1cj10ZXh0OwogIGVsLl9yYXc9Y3VyOwogIHZhciBwbj1wYXJzZUZsb2F0KFN0cmluZyhwcmV2KS5yZXBsYWNlKC9bXjAtOS4tXS9nLCcnKSk7CiAgdmFyIGNuPXBhcnNlRmxvYXQoU3RyaW5nKGN1cikucmVwbGFjZSgvW14wLTkuLV0vZywnJykpOwogIHZhciByZWR1Y2U9d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgaWYocmVkdWNlfHwhaXNGaW5pdGUocG4pfHwhaXNGaW5pdGUoY24pfHxwbj09PWNufHxNYXRoLmFicyhjbi1wbik8MSl7ZWwudGV4dENvbnRlbnQ9Y3VyO3JldHVybjt9CiAgdmFyIHByZT1jdXIuc2xpY2UoMCxjdXIuc2VhcmNoKC9bMC05LV0vKSk7CiAgdmFyIHBvc3Q9Y3VyLnNsaWNlKGN1ci5zZWFyY2goL1swLTldW14wLTldKiQvKSsxKS5yZXBsYWNlKC9eWzAtOV0vLCcnKTsKICB2YXIgc3VmZml4PWN1ci5yZXBsYWNlKC9eW14wLTktXSovLCcnKS5yZXBsYWNlKC9eWzAtOSwuXC1dKy8sJycpOwogIHZhciB0MD1udWxsLCBkdXI9MzgwOwogIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGVsLl9hZnx8MCk7CiAgZnVuY3Rpb24gc3RlcCh0KXsKICAgIGlmKCF0MCkgdDA9dDsKICAgIHZhciBrPU1hdGgubWluKDEsKHQtdDApL2R1ciksIGU9MS1NYXRoLnBvdygxLWssMyk7CiAgICB2YXIgdmFsPXBuKyhjbi1wbikqZTsKICAgIGVsLnRleHRDb250ZW50PXByZStNYXRoLnJvdW5kKHZhbCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrc3VmZml4OwogICAgaWYoazwxKSBlbC5fYWY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOyBlbHNlIGVsLnRleHRDb250ZW50PWN1cjsKICB9CiAgZWwuX2FmPXJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKfQoKLyog66qo67CU7J28IOqzoOyglSDqsrDqs7zrsJQgKyDrp6gg7JyE66GcICovCmZ1bmN0aW9uIGluaXRTdGlja3kocm9vdCwgbGFiZWwpewogIGlmKCFyb290KSByZXR1cm47CiAgdmFyIG1haW49JCgnbWFpbicpOyBpZighbWFpbikgcmV0dXJuOwogIHZhciBiYXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgYmFyLmNsYXNzTmFtZT0ndHBoLXN0aWNreSc7CiAgYmFyLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibCI+JytsYWJlbCsnPC9kaXY+PGRpdiBjbGFzcz0idiIgaWQ9InRwaC1zdGlja3l2Ij7igKY8L2Rpdj4nOwogIHJvb3QuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgdG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIHRvcC50eXBlPSdidXR0b24nOyB0b3AuY2xhc3NOYW1lPSd0cGgtdG9wJzsgdG9wLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsJ+unqCDsnITroZwnKTsKICB0b3AuaW5uZXJIVE1MPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDE5VjUiLz48cGF0aCBkPSJNNSAxMmw3LTcgNyA3Ii8+PC9zdmc+JzsKICB0b3AuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7d2luZG93LnNjcm9sbFRvKHt0b3A6MCxiZWhhdmlvcjonc21vb3RoJ30pO30pOwogIHJvb3QuYXBwZW5kQ2hpbGQodG9wKTsKICB2YXIgc3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RwaC1zdGlja3l2Jyk7CiAgdmFyIHN5bmM9ZnVuY3Rpb24oKXsKICAgIGlmKHN2JiZzdi50ZXh0Q29udGVudCE9PW1haW4udGV4dENvbnRlbnQpIHN2LnRleHRDb250ZW50PW1haW4udGV4dENvbnRlbnQ7CiAgICB2YXIgcj1tYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgYmFyLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgci5ib3R0b208NTYpOwogICAgdG9wLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgd2luZG93LnNjcm9sbFk+NTAwKTsKICB9OwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLHN5bmMse3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLHN5bmMpOwogIGlmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKSBuZXcgTXV0YXRpb25PYnNlcnZlcihzeW5jKS5vYnNlcnZlKG1haW4se2NoaWxkTGlzdDp0cnVlLGNoYXJhY3RlckRhdGE6dHJ1ZSxzdWJ0cmVlOnRydWV9KTsKICBzeW5jKCk7Cn0KCi8qIOKUgOKUgCDssKjtirgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIOyDieydgCBDU1Mg67OA7IiYIC0tczEvLS1zMi8tLXMzICjqsoDspp3rkJwg7Lm07YWM6rOg66asIO2MlOugiO2KuCkuCiAgIOqzhOyXtOydtCAy6rCcIOydtOyDgeydtOuptCDrspTroYDrpbwg7ZWt7IOBIOu2meydtOqzoCwg6rCS7J2AIO2RnOyXkOuPhCDqt7jrjIDroZwg7J6I64ukLiAqLwp2YXIgU1ZHTlM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKZnVuY3Rpb24gZWwodCxhKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHTlMsdCk7Zm9yKHZhciBrIGluIGEpZS5zZXRBdHRyaWJ1dGUoayxhW2tdKTtyZXR1cm4gZTt9CgpmdW5jdGlvbiB0aXAoYm94KXsKICB2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTsKICBpZighdCl7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0LmNsYXNzTmFtZT0ndHBoLXRpcCc7Ym94LmFwcGVuZENoaWxkKHQpO30KICByZXR1cm4gdDsKfQpmdW5jdGlvbiBzaG93VGlwKGJveCx4LHksaHRtbCl7CiAgdmFyIHQ9dGlwKGJveCk7IHQuaW5uZXJIVE1MPWh0bWw7IHQuc3R5bGUub3BhY2l0eT0nMSc7CiAgdmFyIHc9dC5vZmZzZXRXaWR0aCwgYnc9Ym94LmNsaWVudFdpZHRoOwogIHQuc3R5bGUubGVmdD1NYXRoLm1heCg0LE1hdGgubWluKGJ3LXctNCx4LXcvMikpKydweCc7CiAgdC5zdHlsZS50b3A9TWF0aC5tYXgoMix5LXQub2Zmc2V0SGVpZ2h0LTEwKSsncHgnOwp9CmZ1bmN0aW9uIGhpZGVUaXAoYm94KXt2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTtpZih0KXQuc3R5bGUub3BhY2l0eT0nMCc7fQoKLyog7IS466GcIOuIhOyggSDrp4nrjIAg4oCUIGNhdHM6W+udvOuyqF0sIHNlcmllczpbe25hbWUsY2xzLGRhdGE6W119XSAqLwpmdW5jdGlvbiBzdGFja0NoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIFc9NjYwLEg9MjM2LFBMPTgsUFI9OCxQVD0xNCxQQj0yNjsKICB2YXIgbj1jYXRzLmxlbmd0aDsgaWYoIW4pIHJldHVybjsKICB2YXIgdG90YWxzPWNhdHMubWFwKGZ1bmN0aW9uKF8saSl7cmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxzKXtyZXR1cm4gYSsocy5kYXRhW2ldfHwwKTt9LDApO30pOwogIHZhciBtYXg9TWF0aC5tYXguYXBwbHkobnVsbCx0b3RhbHMpfHwxOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBidz1NYXRoLm1heCg2LE1hdGgubWluKDQ2LGl3L24qMC42OCkpLCBzdGVwPWl3L247CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9MztnKyspewogICAgdmFyIGd5PVBUK2loKmcvMzsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogIH0KICBjYXRzLmZvckVhY2goZnVuY3Rpb24oYyxpKXsKICAgIHZhciBjeD1QTCtzdGVwKmkrc3RlcC8yLCB5PVBUK2loLCBhY2M9MDsKICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMsc2kpewogICAgICB2YXIgdmFsPXMuZGF0YVtpXXx8MDsgaWYodmFsPD0wKSByZXR1cm47CiAgICAgIHZhciBoPXZhbC9tYXgqaWg7IHktPWg7IGFjYys9dmFsOwogICAgICB2YXIgaXNUb3AgPSBzaT09PXNlcmllcy5sZW5ndGgtMSB8fCAhc2VyaWVzLnNsaWNlKHNpKzEpLnNvbWUoZnVuY3Rpb24oeil7cmV0dXJuICh6LmRhdGFbaV18fDApPjA7fSk7CiAgICAgIHZhciByPWVsKCdyZWN0Jyx7eDpjeC1idy8yLHk6eSx3aWR0aDpidyxoZWlnaHQ6TWF0aC5tYXgoMSxoKSwnY2xhc3MnOnMuY2xzLAogICAgICAgICAgICAgICAgICAgICAgIHJ4OmlzVG9wPzQ6MCxyeTppc1RvcD80OjB9KTsKICAgICAgc3ZnLmFwcGVuZENoaWxkKHIpOwogICAgfSk7CiAgICB2YXIgaGl0PWVsKCdyZWN0Jyx7eDpjeC1zdGVwLzIrMSx5OlBULHdpZHRoOnN0ZXAtMixoZWlnaHQ6aWgsJ2NsYXNzJzonaGl0J30pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICB2YXIgYnI9Ym94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICB2YXIgcm93cz1zZXJpZXMubWFwKGZ1bmN0aW9uKHMpewogICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICsgJ2JhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKTttYXJnaW4tcmlnaHQ6NnB4Ij48L3NwYW4+JytzLm5hbWUrJyAnK2ZtdChzLmRhdGFbaV18fDApOwogICAgICB9KS5qb2luKCc8YnI+Jyk7CiAgICAgIHNob3dUaXAoYm94LGV2LmNsaWVudFgtYnIubGVmdCxldi5jbGllbnRZLWJyLnRvcCwKICAgICAgICAgICAgICAnPGI+JytjKyc8L2I+PGJyPicrcm93cysnPGJyPu2VqeqzhCAnK2ZtdChhY2MpKTsKICAgIH0pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKCl7aGlkZVRpcChib3gpO30pOwogICAgc3ZnLmFwcGVuZENoaWxkKGhpdCk7CiAgICBpZihuPD0xNHx8aSVNYXRoLmNlaWwobi8xMik9PT0wKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6Y3gseTpILTgsJ2NsYXNzJzonbGInLCd0ZXh0LWFuY2hvcic6J21pZGRsZSd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgYm94LmFwcGVuZENoaWxkKHN2Zyk7CiAgYm94LmFwcGVuZENoaWxkKGxlZ2VuZChzZXJpZXMpKTsKfQoKLyog6rCA66GcIOuIhOyggSDrp4nrjIAo6rWs7ISxKSDigJQgc2Vnczpbe25hbWUsY2xzLHZhbHVlfV0gwrcg7KeB7KCRIOudvOuyqCAqLwpmdW5jdGlvbiBoU3RhY2soYm94SWQsIHNlZ3MsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIHRvdGFsPXNlZ3MucmVkdWNlKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGErTWF0aC5tYXgoMCxzLnZhbHVlKTt9LDApfHwxOwogIHZhciBXPTY2MCxIPTY0LFBMPTgsUFI9OCxCSD0zNCxUWT0xMjsKICB2YXIgc3ZnPWVsKCdzdmcnLHt2aWV3Qm94OicwIDAgJytXKycgJytILHJvbGU6J2ltZyd9KTsKICB2YXIgeD1QTCwgaXc9Vy1QTC1QUjsKICBzZWdzLmZvckVhY2goZnVuY3Rpb24ocyxpKXsKICAgIHZhciB3PU1hdGgubWF4KDAscy52YWx1ZSkvdG90YWwqaXc7IGlmKHc8PTApIHJldHVybjsKICAgIHZhciBmaXJzdD1pPT09MCwgbGFzdD1pPT09c2Vncy5sZW5ndGgtMTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgncmVjdCcse3g6eCx5OlRZLHdpZHRoOncsaGVpZ2h0OkJILCdjbGFzcyc6cy5jbHMsCiAgICAgIHJ4OihmaXJzdHx8bGFzdCk/NDowLHJ5OihmaXJzdHx8bGFzdCk/NDowfSkpOwogICAgdmFyIHBjdD1zLnZhbHVlL3RvdGFsKjEwMDsKICAgIGlmKHBjdD49OSkKICAgICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4Ongrdy8yLHk6VFkrQkgvMis0LCdjbGFzcyc6J3ZsJywKICAgICAgICAndGV4dC1hbmNob3InOidtaWRkbGUnLGZpbGw6JyNmZmYnfSkse3RleHRDb250ZW50OnBjdC50b0ZpeGVkKDApKyclJ30pKTsKICAgIHZhciBoaXQ9ZWwoJ3JlY3QnLHt4OngseTpUWSx3aWR0aDp3LGhlaWdodDpCSCwnY2xhc3MnOidoaXQnfSk7CiAgICAoZnVuY3Rpb24oc2VnLHB4LHB3KXsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgc2hvd1RpcChib3gsZXYuY2xpZW50WC1ici5sZWZ0LGV2LmNsaWVudFktYnIudG9wLAogICAgICAgICAgJzxiPicrc2VnLm5hbWUrJzwvYj48YnI+JytmbXQoc2VnLnZhbHVlKSsnIMK3ICcrKHNlZy52YWx1ZS90b3RhbCoxMDApLnRvRml4ZWQoMSkrJyUnKTsKICAgICAgfSk7CiAgICAgIGhpdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpe2hpZGVUaXAoYm94KTt9KTsKICAgIH0pKHMseCx3KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgeCs9dzsKICB9KTsKICBib3guYXBwZW5kQ2hpbGQoc3ZnKTsKICBib3guYXBwZW5kQ2hpbGQobGVnZW5kKHNlZ3MubWFwKGZ1bmN0aW9uKHMpe3JldHVybiB7bmFtZTpzLm5hbWUrJyAnK2ZtdChzLnZhbHVlKSxjbHM6cy5jbHN9O30pKSk7Cn0KCi8qIOyEoO2YlSDstpTsnbQg7LCo7Yq4IOKAlCBzZXJpZXM6W3tuYW1lLGNscyxkYXRhOltdfV0sIGNhdHM6W+udvOuyqF0gKi8KZnVuY3Rpb24gbGluZUNoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIG49Y2F0cy5sZW5ndGg7IGlmKG48MikgcmV0dXJuOwogIHZhciBXPTY2MCxIPTI0MCxQTD01NCxQUj0xMixQVD0xNCxQQj0yNjsKICB2YXIgYWxsPVtdOyBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihzKXthbGw9YWxsLmNvbmNhdChzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiB2IT1udWxsO30pKTt9KTsKICBpZighYWxsLmxlbmd0aCkgcmV0dXJuOwogIHZhciBteD1NYXRoLm1heC5hcHBseShudWxsLGFsbCksIG1uPU1hdGgubWluLmFwcGx5KG51bGwsYWxsKTsKICB2YXIgcGFkPShteC1tbikqMC4xNXx8bXgqMC4wMnx8MTsgbXgrPXBhZDsgbW49TWF0aC5tYXgoMCxtbi1wYWQpOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBYPWZ1bmN0aW9uKGkpe3JldHVybiBQTCtpdyoobj09PTE/MC41OmkvKG4tMSkpO307CiAgdmFyIFk9ZnVuY3Rpb24odil7cmV0dXJuIFBUK2loKigxLSh2LW1uKS8oKG14LW1uKXx8MSkpO307CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9NDtnKyspewogICAgdmFyIGd2PW1uKyhteC1tbikqZy80LCBneT1ZKGd2KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4OlBMLTgseTpneSs0LCdjbGFzcyc6J2xiJywndGV4dC1hbmNob3InOidlbmQnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dENvbnRlbnQ6TWF0aC5yb3VuZChndikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyl9KSk7CiAgfQogIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIGQ9JycsIHN0YXJ0ZWQ9ZmFsc2U7CiAgICBzLmRhdGEuZm9yRWFjaChmdW5jdGlvbih2LGkpewogICAgICBpZih2PT1udWxsKSByZXR1cm47CiAgICAgIGQrPShzdGFydGVkPydMJzonTScpK1goaSkudG9GaXhlZCgxKSsnICcrWSh2KS50b0ZpeGVkKDEpKycgJzsgc3RhcnRlZD10cnVlOwogICAgfSk7CiAgICBpZihkKSBzdmcuYXBwZW5kQ2hpbGQoZWwoJ3BhdGgnLHtkOmQsZmlsbDonbm9uZScsJ3N0cm9rZSc6J3ZhcigtLScrcy5jbHMrJyknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cm9rZS13aWR0aCc6Mi4yLCdzdHJva2UtbGluZWpvaW4nOidyb3VuZCcsJ3N0cm9rZS1saW5lY2FwJzoncm91bmQnfSkpOwogICAgdmFyIGxhc3Q9cy5kYXRhLmxlbmd0aC0xOwogICAgaWYocy5kYXRhW2xhc3RdIT1udWxsKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoZWwoJ2NpcmNsZScse2N4OlgobGFzdCksY3k6WShzLmRhdGFbbGFzdF0pLHI6NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOid2YXIoLS0nK3MuY2xzKycpJyxzdHJva2U6J3ZhcigtLXN1cmZhY2UpJywnc3Ryb2tlLXdpZHRoJzoyfSkpOwogIH0pOwogIGNhdHMuZm9yRWFjaChmdW5jdGlvbihjLGkpewogICAgaWYobj4xMCAmJiBpJU1hdGguY2VpbChuLzcpIT09MCAmJiBpIT09bi0xKSByZXR1cm47CiAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6WChpKSx5OkgtOCwnY2xhc3MnOidsYicsJ3RleHQtYW5jaG9yJzonbWlkZGxlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAoZnVuY3Rpb24oaWR4KXsKICAgICAgdmFyIGhpdD1lbCgncmVjdCcse3g6WChpZHgpLWl3LyhuLTEpLzIseTpQVCx3aWR0aDppdy8obi0xKXx8MjAsaGVpZ2h0OmloLCdjbGFzcyc6J2hpdCd9KTsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgdmFyIHJvd3M9c2VyaWVzLm1hcChmdW5jdGlvbihzKXsKICAgICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICAgKyAnYmFja2dyb3VuZDp2YXIoLS0nK3MuY2xzKycpO21hcmdpbi1yaWdodDo2cHgiPjwvc3Bhbj4nK3MubmFtZSsnICcKICAgICAgICAgICAgICAgKyAocy5kYXRhW2lkeF09PW51bGw/Jy0nOmZtdChzLmRhdGFbaWR4XSkpOwogICAgICAgIH0pLmpvaW4oJzxicj4nKTsKICAgICAgICBzaG93VGlwKGJveCxldi5jbGllbnRYLWJyLmxlZnQsZXYuY2xpZW50WS1ici50b3AsJzxiPicrY2F0c1tpZHhdKyc8L2I+PGJyPicrcm93cyk7CiAgICAgIH0pOwogICAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXtoaWRlVGlwKGJveCk7fSk7CiAgICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgfSkoaSk7CiAgfQogIGJveC5hcHBlbmRDaGlsZChzdmcpOwogIGJveC5hcHBlbmRDaGlsZChsZWdlbmQoc2VyaWVzKSk7Cn0KCmZ1bmN0aW9uIGxlZ2VuZChpdGVtcyl7CiAgdmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGQuY2xhc3NOYW1lPSd0cGgtbGVnZW5kJzsKICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIHNwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgIHNwLmlubmVySFRNTD0nPGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKSI+PC9pPicrcy5uYW1lOwogICAgZC5hcHBlbmRDaGlsZChzcCk7CiAgfSk7CiAgcmV0dXJuIGQ7Cn0KLyogMuywqCDrqZTribQ6IO2YhOyerCDtg63snbQg7Zy064yA7Y+wIO2ZlOuptCDrsJYo7Jik66W47Kq9KeyXkCDsnojsnLzrqbQg6rCA66Gc66GcIOuLueqyqCDrs7TsnbTqsowg7ZWc64ukKO2OmOydtOyngOuKlCDshLjroZzroZwg7JuA7KeB7J207KeAIOyViuuKlOuLpCkgKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC1zdWJuYXYgYVthcmlhLWN1cnJlbnRdJyk7IGlmKCFhKSByZXR1cm47CiAgdmFyIHc9YS5wYXJlbnROb2RlLCBhcj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB3cj13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogIGlmKGFyLnJpZ2h0PndyLnJpZ2h0LTh8fGFyLmxlZnQ8d3IubGVmdCkgdy5zY3JvbGxMZWZ0Kz1hci5sZWZ0LXdyLmxlZnQtKHcuY2xpZW50V2lkdGgtYS5vZmZzZXRXaWR0aCkvMjsKfSkoKTsKCi8qIOKYhSDrsKnrrLjsnbzsnYAgKirroZzsu6wg64Kg7KecKirroZwg7KCA7J6l7ZWc64ukLiB0b0lTT1N0cmluZygpIOydgCBVVEMg6528IOyekOyglSDsnbTtm4Qg7ZWY66OoIOuwgOumsOuLpCjsoITshLgg7KeA7YK07J20IOuVjOyZgCDqsJnsnYAg7ZWo7KCVKS4KICAg4piFIOyerOuwqeusuCDsnqXsuZgoMjAyNi0wOS0zMCk6IOyngOuCnCDrsKnrrLgg7J207ZuEIOyDiOuhnCDsmKzrnbzsmKgg6rKDIO2RnOyLnCArIOqzoOuluCDtlYTthLAg6riw7Ja1LgogICDruIzrnbzsmrDsoIDsl5Drp4wg7KCA7J6l7ZWc64ukKOuhnOq3uOyduMK37ISc67KEIOyXhuydjCkuIOyymOydjCDsmKgg7IKs656M7JeQ6rKQIOyVhOustCDtkZzsi5zrj4Qg7JeG64ukLiAqLwpmdW5jdGlvbiBzZWVuSW5pdChrZXksIHJvd1NlbCwgaWRzLCBydW4pewogIHZhciBLPSd0cGgtc2Vlbi0nK2tleSwgRj0ndHBoLWZpbHQtJytrZXksIGxhc3Q9c3RvcmUuZ2V0KEspLCB0b2RheT0oZnVuY3Rpb24oKXt2YXIgZD1uZXcgRGF0ZSgpO2Quc2V0TWludXRlcyhkLmdldE1pbnV0ZXMoKS1kLmdldFRpbWV6b25lT2Zmc2V0KCkpO3JldHVybiBkLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCk7fSkoKSwgbj0wOwogIHRyeXsgdmFyIGY9SlNPTi5wYXJzZShzdG9yZS5nZXQoRil8fCd7fScpOyBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgaWYoZltpXSE9bnVsbCAmJiAkKGkpKSAkKGkpLnZhbHVlPWZbaV07IH0pOyB9Y2F0Y2goZSl7fQogIGlmKGxhc3QpewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChyb3dTZWwpLmZvckVhY2goZnVuY3Rpb24ocil7CiAgICAgIGlmKChyLmRhdGFzZXQuZHR8fCcnKT5sYXN0KXsgbisrOyB2YXIgYj1yLnF1ZXJ5U2VsZWN0b3IoJy5ubSBiJyk7CiAgICAgICAgaWYoYiAmJiAhYi5xdWVyeVNlbGVjdG9yKCcudHBoLW5ldycpKSBiLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnIDxzcGFuIGNsYXNzPSJ0cGgtdGFnIHRwaC1uZXciPk5FVzwvc3Bhbj4nKTsgfQogICAgfSk7CiAgICB2YXIgYm94PSQoa2V5KyduZXcnKTsgaWYoYm94KXsgYm94LmlubmVySFRNTCA9IG4gPyAn7KeA64KcIOuwqeusuCgnK2xhc3QrJykg7J207ZuEIOyDiOuhnCA8Yj4nK24rJ+qxtDwvYj4g4oCUIE5FVyDtkZzsi5wnIDogJ+yngOuCnCDrsKnrrLgoJytsYXN0KycpIOydtO2bhCDsg4jroZwg7Jis65287JioIOqxtCDsl4bsirXri4jri6QnOyB9CiAgfQogIHN0b3JlLnNldChLLCB0b2RheSk7CiAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxmdW5jdGlvbigpewogICAgdmFyIG89e307IGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGopeyBpZigkKGopKSBvW2pdPSQoaikudmFsdWU7IH0pOyBzdG9yZS5zZXQoRiwgSlNPTi5zdHJpbmdpZnkobykpOyB9KTsgfSk7CiAgcnVuKCk7Cn0KOwpmdW5jdGlvbiBydW4oKXsKICB2YXIgc3Q9JCgncm1zdCcpLnZhbHVlLCBrZD0kKCdybWtkJykudmFsdWUsIGFyPSQoJ3JtYXInKS52YWx1ZSwgdnM9JCgncm12cycpLnZhbHVlLCBuPTA7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3RwaC1ybWxpc3QgLnRwaC1yb3cnKS5mb3JFYWNoKGZ1bmN0aW9uKHIpewogICAgdmFyIG9rPSghc3QgfHwgKHN0PT09J29wZW4nPyAoci5kYXRhc2V0LnN0PT09J+ygkeyImCDsmIjsoJUnfHxyLmRhdGFzZXQuc3Q9PT0n7KCR7IiYIOykkScpIDogci5kYXRhc2V0LnN0PT09c3QpKQogICAgICAgICAmJiAoIWtkIHx8IHIuZGF0YXNldC5rZD09PWtkKSAmJiAoIWFyIHx8IHIuZGF0YXNldC5hcj09PWFyKSAmJiAoIXZzIHx8IHIuZGF0YXNldC52cz09PXZzKTsKICAgIHIuc3R5bGUuZGlzcGxheT1vaz8nJzonbm9uZSc7IGlmKG9rKSBuKys7CiAgfSk7CiAgJCgncm1jbnQnKS50ZXh0Q29udGVudD1uKyfqsbQnOwp9Clsncm1zdCcsJ3Jta2QnLCdybWFyJywncm12cyddLmZvckVhY2goZnVuY3Rpb24oaSl7ICQoaSkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxydW4pOyB9KTsKc2VlbkluaXQoJ3JtJywgJyN0cGgtcm1saXN0IC50cGgtcm93JywgWydybXN0Jywncm1rZCcsJ3JtYXInLCdybXZzJ10sIHJ1bik7CmluaXRUaGVtZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHBoLXBhZ2UnKSk7Cg==