skip to Main Content
밴쿠버 지회 게시판

밴쿠버지회 | 대전 초보운전연수 비용 마스터 내돈내산 강추리뷰

Page info

author Sarah J. Brink date24-12-30 03:33 hit57 comment0

Article

친구와 드라이브를 즐기면서 운전을 다시 배우고 싶다는 욕구가 생겼습니다. 그러나 오랜만에 핸들을 잡아보니 불안감이 덮쳐왔고, 사고를 걱정해서 운전하기를 망설였습니다. 그때 친구가 장롱면허운전연수 도로연수를 추천하면서, 초보 운전자에게 좋은 교육이 될 것이라고 말했습니다.장롱면허운전연수 학원을 선택한 이유는 체계적인 교육과 학생의 개인 실력을 고려한 점이었습니다. 상담을 통해 자세한 정보를 얻고, 업체용 차량으로 수업을 듣는 것도 가능했습니다. 친절한 상담으로 모든 의문을 해결하고,


서구 #복수동 #도마1동 #도마2동 #정림동 #변동 #용문동 #탄방동 #괴정동 #가장동 #내동
유성구 #진잠동 #원신흥동 #온천1동 #온천2동 #노은1동 #노은2동 #신성동 #전민동 #구즉동 #관평동 #봉명동



시간과 장소를 조율하여 수업을 예약했습니다.장롱면허운전연수 도로연수의 강사님은 초보자의 불안을 덜어주기 위해 기초부터 가르쳐주었습니다. 강사님은 학생의 수준에 맞추어 적절한 연습 코스를 제공하면서, 학생의 성장을 지켜보았습니다. 주행 뿐만 아니라 신호등, 표지판 해석, 비보호 신호등 등 다양한 내용을 꼼꼼히 가르쳐주셨고, 운전에 대한 자신감을 키워주셨습니다.또한, 주변의 끼어들기와 주차 같은 어려운 상황에서도 강사님은 지시와 도움을 제공하여 학생이 안전하게 습관을 형성할


수 있도록 도왔습니다. 장롱면허운전연수는 학생들의 요구에 따라 수업 횟수와 내용을 조절할 수 있어, 필요한 부분을 추가로 학습할 수 있었습니다.장롱면허운전연수 도로연수 학원은 학생들에게 편리한 환경과 친절한 강사님들을 제공하여, 안전하고 실력 있는 운전자로 성장할 수 있는 환경을 제공합니다. 그래서 이 학원을 강력히 추천합니다. 운전을 배우고 싶다면 장롱면허운전연수 도로연수 학원을 고려해보세요.


<a href=" https://blog.naver.com/amar9075/223615465221 "> 대전방문운전연수 주행 꿀팁 가득한 3일 강습! </a><br>
<a href=" https://blog.naver.com/an-hj1/223557424134 "> 대전방문운전연수 가격 초보 내돈내산 후기 </a><br>
<a href=" https://blog.naver.com/anarche69/223674985841 "> 대전장롱면허운전연수 가격 직장인도 부담없이 </a><br>
<a href=" https://blog.naver.com/anes0024/223595075157 "> 대전중구운전연수 비용 가격 만족도 높았던 1:1 운전 수업 </a><br>
<a href=" https://blog.naver.com/anes0024/223603412853 "> 대전시운전연수 비용 가격 꼼꼼하게 지도 </a><br>
<a href=" https://blog.naver.com/anes0024/223664128061 "> 대전 괴정동 내동 개인 운전연수 비용 가격 장롱면허 탈출 수업 </a><br>
<a href=" https://blog.naver.com/aredal/223646601277 "> 대전운전연수 비용 친구에게 추천받았어요! </a><br>
<a href=" https://blog.naver.com/aredal/223650728883 "> 대전초보운전연수 여성 방문운전연수 내돈내산 비용 </a><br>
<a href=" https://blog.naver.com/beneficial1/223673736744 "> 대전장롱면허운전연수 비용 가격 10시간 내돈내산 후기 </a><br>
<a href=" https://blog.naver.com/beneficial1/223674477032 "> 대전운전연수 가격 달라진 라이프 스타일! </a><br>
<a href=" https://blog.naver.com/bominish_98/223673778180 "> 대전장롱면허운전연수 비용 가격 10시간 도전 내돈내산 후기 </a><br>
<a href=" https://blog.naver.com/bominish_98/223674763573 "> 대전 초보운전연수 비용 방문 10시간 솔직 후기 </a><br>
<a href=" https://blog.naver.com/bominish_98/223679218773 "> 대전장롱면허운전연수 비용 가격 새로운 일상 찐 내돈내산 후기 </a><br>
<a href=" https://blog.naver.com/bominish_98/223683998687 "> 대전 방문운전 연수 비용 3일이라서 딱 좋은 후기 </a><br>
<a href=" https://blog.naver.com/chick_queen/223610687503 "> 대전방문운전연수 가격 초보 탈출기 </a><br>
<a href=" https://blog.naver.com/daraigreen/223557351077 "> 대전중구운전연수 비용 자동차연수 가격 후기! </a><br>
<a href=" https://blog.naver.com/dkal880/223593811747 "> 대전방문운전연수 초보운전연수 가격 주행의 모든 것 </a><br>
<a href=" https://blog.naver.com/godmsgid/223635799870 "> 대전초보운전연수 운전의 감을 빨리 찾아주는 곳 </a><br>
<a href=" https://blog.naver.com/godmsgid/223638729500 "> 대전방문운전연수 가격 자차운전연수 세심하게 봐주셨어요. </a><br>
<a href=" https://blog.naver.com/godmsgid/223664001089 "> 대전 원신흥동 자차 운전연수 가격 자신감 비용 </a><br>
<a href=" https://blog.naver.com/godmsgid/223666594384 "> 대전 장롱면허운전연수 여성강사님이 계시는 곳 </a><br>
<a href=" https://blog.naver.com/godmsgid/223676237532 "> 대전대덕구운전연수 비용 가격 커리큘럼 체계적인 곳 </a><br>
<a href=" https://blog.naver.com/hanjahanmunworkshop/223628229210 "> 대전 은행동 운전연수 가격 10시간 알차게 배워 </a><br>
<a href=" https://blog.naver.com/hanjahanmunworkshop/223636009155 "> 대전동구운전연수 비용 친절한 강사님에게 배웠어요 </a><br>
<a href=" https://blog.naver.com/hanjahanmunworkshop/223664270277 "> 대전 봉명동 장롱면허 운전연수 가격 추천 비용 후기! </a><br>
<a href=" https://blog.naver.com/her3533/223682858570 "> 대전장롱면허운전연수 비용 밀착지도로 완성하는 운전 실력 </a><br>
<a href=" https://blog.naver.com/jeahee116/223561737789 "> 대전초보운전연수 비용 초보 10시간 가격 추천! </a><br>
<a href=" https://blog.naver.com/joony724/223676211880 "> 대전방문운전연수 추천 신중한 초이스! </a><br>
<a href=" https://blog.naver.com/momodraw/223621223751 "> 대전방문운전연수 운전이 재미있어지는 매직이라고 할까요! </a><br>
<a href=" https://blog.naver.com/mygale21/223607891772 "> 대전초보운전연수 가격 비용 제대로 쌓은 주행 실력 </a><br>
<a href=" https://blog.naver.com/nachu_0/223677283702 "> 대전장롱면허운전연수 가격 비용 내돈내산 탈출하는 지름길 후기 </a><br>
<a href=" https://blog.naver.com/nanglang85/223589730838 "> 대전운전연수 가격 비용 합리적인으로 부담없이 </a><br>
<a href=" https://blog.naver.com/nanii-/223582153670 "> 대전방문운전연수 가격 초보운전 찐 후기 </a><br>
<a href=" https://blog.naver.com/nanii-/223586991460 "> 대전방문운전연수 방문으로 피드백을 들어보고 싶다면 </a><br>
<a href=" https://blog.naver.com/ogh227e9/223640242808 "> 대전초보운전연수 능숙하게 운전할수있어요! </a><br>
<a href=" https://blog.naver.com/only121212/223680437356 "> 대전운전연수 비용 빠른 도로연수 가격 </a><br>
<a href=" https://blog.naver.com/only121212/223683966512 "> 대전장롱면허운전연수 두려움 극복하는 방법 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223589151786 "> 대전초보운전연수 가격 비용 빠르고 확실한 방법! </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223607697203 "> 대전방문운전연수 가격 내돈내산 탈출 후기 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223615977826 "> 대전동구운전연수 비용 가격 걱정없이 극복하기 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223620332745 "> 개인운전연수 비용 디테일에 강한 맞춤형 강의 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223622562311 "> 대전대덕구운전연수 가격 주말에도 방문 강습해주는 곳 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223624148057 "> 대전 방문운전연수 가격 쉽게 배울 수 있는 곳 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223626021166 "> 대전초보운전연수 가격 기초부터 점검해주시는 곳 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223627965011 "> 대전 중구 운전연수 가격 재미있게 진행되는 후기 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223629222827 "> 대전자차운전연수 가격 강사님께 듣는 1:1 밀착 지도 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223631860247 "> 대전운전연수 시내주행 무섭지않아 </a><br>
<a href=" https://blog.naver.com/silentforest_studio/223664993491 "> 대전 전민동 방문 운전연수 가격 초보자의 눈높이 비용 </a><br>
<a href=" https://blog.naver.com/soonbinsoomom/223664117568 "> 대전 온천동 신성동 여성 방문 운전연수 가격 기다려지는 비용 </a><br>
<a href=" https://blog.naver.com/sunhyun1009/223603414013 "> 대전방문운전연수 가격 알차게 배울 수 있었던 이유 </a><br>
<a href=" https://blog.naver.com/una20544/223612612686 "> 대전유성구운전연수 비용 - 멘탈 케어까지 확실! </a><br>
<a href=" https://blog.naver.com/una20544/223613730884 "> 대전운전연수 비용, 꼼꼼하게 배워보고 싶으시다면? </a><br>
<a href=" https://blog.naver.com/una20544/223616234711 "> 대전방문운전연수 훌륭한 피드백 덕분에 빠르게 </a><br>
<a href=" https://blog.naver.com/una20544/223619971138 "> 대전중구운전연수 가격 빠르고 쉽게 배우는 방법 </a><br>
<a href=" https://blog.naver.com/una20544/223622607757 "> 대전자차운전연수 가격 나만 알고싶은 찐후기 </a><br>
<a href=" https://blog.naver.com/una20544/223624006330 "> 대전방문운전연수 가격 비용 밀착해서 봐주시는 1:1 연수 </a><br>
<a href=" https://blog.naver.com/una20544/223625080516 "> 대전초보운전연수 가격 직장인들을 위한 방문연수 </a><br>
<a href=" https://blog.naver.com/una20544/223627297739 "> 대전 둔산동 운전연수 가격 주차까지 배울 수 있었어요 </a><br>
<a href=" https://blog.naver.com/una20544/223655609199 "> 대전대덕구운전연수 방문운전연수 내돈내산 가격 후기 </a><br>
<a href=" https://blog.naver.com/under__land/223576731075 "> 대전 방문운전연수 가격 초보운전에 대한 모든 것 </a><br>
<a href=" https://blog.naver.com/under__land/223665367453 "> 대전초보운전연수 방문운전연수 비용 솔직후기 </a><br>
<a href=" https://blog.naver.com/under__land/223666689213 "> 대전 장롱면허운전연수 비용 자신감 회복하는 지름길 </a><br>
<a href=" https://blog.naver.com/wkdskfk2594/223629274058 "> 대전방문운전연수 가격 운전대를 다시 잡게 됐어요 </a><br>
<a href=" https://blog.naver.com/zldjek1901/223613655992 "> 대전방문운전연수 친절하고 체계적인 수업으로 </a><br>
<a href=" https://m.blog.naver.com/1kni1alk3n/223464071371 "> 대전 장롱면허운전연수 & 방문운전연수 찐 후기 </a><br>
<a href=" https://m.blog.naver.com/anes0024/223466773105 "> 대전장롱면허운전연수 & 운전연수학원 ( ,코스, ) </a><br>
<a href=" https://m.blog.naver.com/anes0024/223468064172 "> 대전 장롱면허 운전 연수 & 방문운전연수 추천! </a><br>
<a href=" https://m.blog.naver.com/anes0024/223469228317 "> 대전 방문 운전연수 가격 & 초보 운전 연수 비용 후기 </a><br>
<a href=" https://m.blog.naver.com/anes0024/223552056901 "> 대전 동구운전연수 비용 전문적으로 접하는 곳 </a><br>
<a href=" https://m.blog.naver.com/choi___fox/223493664968 "> 대전장롱면허운전연수  내돈내산 비용 가격 </a><br>
<a href=" https://m.blog.naver.com/cubejeju/223534490471 "> 대전초보운전연수 방문운전연수 탈출 찐 후기 </a><br>
<a href=" https://m.blog.naver.com/cubejeju/223536354518 "> 대전도로연수 비용 가격 친절한 피드백 수업 </a><br>
<a href=" https://m.blog.naver.com/de9630/223505958151 "> 대전방문운전연수 가격 재미를 알게된곳 </a><br>
<a href=" https://m.blog.naver.com/dear_present120/223493691121 "> 대전장롱면허운전연수  비용 가격 추천 </a><br>
<a href=" https://m.blog.naver.com/flydong0413/223506052029 "> 대전 초보운전연수 가격 만족 비용 </a><br>
<a href=" https://m.blog.naver.com/flydong0413/223517502360 "> 대전 방문 운전연수 가격 혼자서 드라이브 어렵지 않아요! </a><br>
<a href=" https://m.blog.naver.com/gggg0422/223477307376 "> 대전운전연수 비용 가격 후기 </a><br>
<a href=" https://m.blog.naver.com/gggg0422/223556122493 "> 대전서구운전연수 비용 출근길이 편해진 후기 </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223439528488 "> 대전 유성구 운전연수 가격 10시간 마무리 팝콘드라이빙 수업 ( 코스,가격, ) </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223440739142 "> 장롱면허운전연수 가격 도로연수 코스 ( 대전,,비용 ) </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223441735618 "> 자차운전연수 후기 가격 비용 ( ,대전, ) </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223444479942 "> 대전 장롱면허 운전 연수 & 자동차 비용 ( ,코스, ) </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223447330338 "> 대전 신탄진운전연수 & 장롱면허 비용 ( ,노원,운전연습 ) </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223449017845 "> 대전동구운전연수 & 자동차운전연수 비용 ( ,,가격 ) </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223451657309 "> 단기간에 운전대를 다시 잡는 법 대전운전학원 운전연수 내돈내산 후기 </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223467965418 "> 대전방문운전연수가격  & 방문운전연수 비용 </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223470281151 "> 대전 초보 운전연수 가격 & 비용 후기 </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223488836577 "> 대전초보운전연수 비용 가격 후기 </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223492330987 "> 대전 유성구 운전연수 비용 가 </a><br>
<a href=" https://m.blog.naver.com/hago_jabi999/223500551610 "> 대전동구운전연수 가격 비용 찐 후기 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223439587142 "> 대전방문운전연수 가격 10시간 완벽 팝콘드라이빙 수업 ( 방문,가격, ) </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223443053532 "> 대전서구운전연수 비용 부담제로 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223446808196 "> 대전장롱면허운전연수 & 방문연수 ( ,학원,코스 ) </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223456483210 "> 대전중구운전연수 운전의 즐거움 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223466892454 "> 대전운전연수 비용 후기 ( 가격 ) </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223483888396 "> 대전운전연수 추천 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223492583863 "> 대전 도로연수 가격 비용 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223494909709 "> 대전초보운전연수  비용 가격 편리 추천 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223511804930 "> 대전도로연수 비용 가격 추천 후기 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223518866471 "> 대전운전연수 만족 베테랑 강사님께 배운후기 </a><br>
<a href=" https://m.blog.naver.com/hanjahanmunworkshop/223529791041 "> 대전운전연수 3일만에 초보운전 탈출 후기 </a><br>
<a href=" https://m.blog.naver.com/happyek1982/223476445621 "> 대전운전연수 비용 가격 찐후기 </a><br>
<a href=" https://m.blog.naver.com/happyek1982/223674610488 "> 대전대덕구 운전연수 가격 자신감이 생겼어요 </a><br>
<a href=" https://m.blog.naver.com/ironghx2/223540036683 "> 대전 초보운전연수 비용 초보 방문 운전 가격 </a><br>
<a href=" https://m.blog.naver.com/jjjsd78/223513748853 "> 대전운전연수 10시간 내돈내산 후기 </a><br>
<a href=" https://m.blog.naver.com/k2088910/223186146479 "> 대전운전연수 </a><br>
<a href=" https://m.blog.naver.com/kakkari/223505862982 "> 대전운전연수 비용 가격 필요성 추천! </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223442691976 "> 대전운전연수 비용 내돈내산! </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223449804909 "> 대전초보운전연수 비용 내돈내산 ( ,가격, ) </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223465585518 "> 대전동구운전연수 비용 만족 가격 후기 </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223472028721 "> 대전 장롱면허 운전연수  & 방문운전연수 찐후기 </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223504311385 "> 대전운전연수 비용 가격 추천 </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223512189234 "> 대전초보운전연수 가격 비용 꼭 도전 </a><br>
<a href=" https://m.blog.naver.com/kbnavi/223518566507 "> 대전 초보운전연수 가격 초보운전 탈출 솔직후기 </a><br>
<a href=" https://m.blog.naver.com/likerseld/223538863349 "> 대전 초보운전연수 방문 초보운전 비용 후기 </a><br>
<a href=" https://m.blog.naver.com/m.bbollllls/223470164615 "> 대전 장롱면허 운전연수 장롱 면허 비용 </a><br>
<a href=" https://m.blog.naver.com/m.bookdowell/223444486337 "> 대전 운전연수 가격 & 초보 장롱면허 비용 ( ,코스, ) </a><br>
<a href=" https://m.blog.naver.com/m.bookdowell/223446823876 "> 대전 초보운전연수 가격 & 자차운전연수 후기 ( ,,비용 ) </a><br>
<a href=" https://m.blog.naver.com/m.bookdowell/223448895949 "> 대전방문운전연수 & 방문으로 10시간 가격 ( ,,비용 ) </a><br>
<a href=" https://m.blog.naver.com/m.bookdowell/223467967557 "> 대전 장롱면허 운전연수 & 방문운전연수 비용 ( 가격 ) </a><br>
<a href=" https://m.blog.naver.com/m.bookdowell/223469287357 "> 대전초보운전연수 비용 & 내돈 ( 가격 ) </a><br>
<a href=" https://m.blog.naver.com/m.bookdowell/223493601589 "> 대전장롱면허운전연수  비용 가격 내돈내산 </a><br>
<a href=" https://m.blog.naver.com/mihye00/223510657209 "> 대전초보운전연수 도로연수 10시간 내돈내산 후기 </a><br>
<a href=" https://m.blog.naver.com/mihye00/223517437317 "> 대전 방문 운전연수 가격 확실하게 배울 수 있는 곳 </a><br>
<a href=" https://m.blog.naver.com/mihye00/223523282831 "> 대전초보운전연수 꼭 필요했던 맞춤형 연수 </a><br>
<a href=" https://m.blog.naver.com/minhcui4499/223493665292 "> 대전장롱면허운전연수  찐 가격 비용 추천 </a><br>
<a href=" https://m.blog.naver.com/silentforest_studio/223493518204 "> 대전장롱면허운전연수  가격 비용 찐 실력 </a><br>
<a href=" https://m.blog.naver.com/silentforest_studio/223543381389 "> 대전 방문운전연수 가격 초보탈출 찐 수업후기 </a><br>
<a href=" https://m.blog.naver.com/skymeaning/223513985110 "> 대전초보운전연수 10시간 찐 후기 </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223444456605 "> 대전 초보 장롱면허 운전연수 가격 ( 광주,전주,코스 ) </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223467992252 "> 대전 방문 운전연수 가격 찐 후기 </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223469236087 "> 대전 초보 운전 연수 가격 찐 비용 </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223493601248 "> [ 대전 장롱면허  운전연수 ] 비용 가격 </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223503660343 "> [대전장롱면허운전연수] 비용 가격 추천 후기 </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223517089543 "> 대전 방문운전연수 가격 편하게 배워봐요 </a><br>
<a href=" https://m.blog.naver.com/soonbinsoomom/223525393024 "> 대전초보운전연수 주차까지 마스터한 후기 </a><br>
<a href=" https://m.blog.naver.com/under__land/223579681280 "> 대전초보운전연수 10시간 초보자 찐 내돈내산 </a><br>
<a href=" https://m.blog.naver.com/vkfdnjf03/223548248928 "> 대전 초보운전연수 가격 방문 초보 탈출 완성! </a><br>
<a href=" https://m.blog.naver.com/whosetravel/223493596613 "> 대전장롱면허운전연수 후기 비용 가격 추천 </a><br>
<a href=" https://m.blog.naver.com/wordrobe/223493619253 "> 대전장롱면허운전연수  가격 비용 찐 </a><br>
<a href=" https://m.blog.naver.com/worldcurious/223444672022 "> 대전동구운전연수 두려움끝 </a><br>"

Comment List

No comments

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.8.5";const APP_ENV="production",TRACKING_DOMAIN="https://click-use1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",AFD_REFERRAL_CHEQ_LOAD_PERCENTAGE="25",AFD_ORGANIC_CHEQ_LOAD_PERCENTAGE="5",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1,n="")=>{const i=n||window.location.search,s=`${e}/${FIND_DOMAIN_URL}${i}`,a=e?"include":"same-origin",o=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(s,{method:"POST",headers:o,credentials:a}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 75vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n.hide-sales-banner > #sales-banner {\n display: none;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_TARGET="main",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.hideSalesBanner=()=>{this.domNode.classList.add("hide-sales-banner")},this.revealSalesBanner=()=>{this.domNode.classList.remove("hide-sales-banner")},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectMessage(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}injectMessage(e){const t=document.querySelector(MESSAGE_TARGET);t?t.innerHTML=e:this.domNode&&(this.domNode.innerHTML=e)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),e.bannerAdblockerOnly&&this.hideSalesBanner(),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),e.bannerAdblockerOnly||this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":case"disabled_tos":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"disabled_tos":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message";case"disabled_tos":return"tos_not_accepted"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings");n.bannerAdblockerOnly=null==i?void 0:i.banner_adblocker_only;const s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&!(null==i?void 0:i.banner_adblocker_only)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},CAFKey="caf",ClickKey="click",NoCacheKey="nc",SessionKey="session",TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,user_id:t.userId,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={[ClickKey]:"true",[SessionKey]:t.uuid,[NoCacheKey]:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{get providerCtor(){return this.constructor}constructor(e){this.state=new Map,this.injectedAt=new Map,this.timeoutAt=new Map,this.timeoutSeconds=5,this.handlePixelEvent=e=>{this.keys.forEach((t=>{switch(this.state.get(t)){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e,t)}}))},this.watch=e=>{switch(this.state.get(e)){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded(e)?this.state.set(e,State$1.Loaded):this.isTimedOut(e)?this.state.set(e,State$1.Failed):setTimeout((()=>this.watch(e)),50)}},this.config=e,this.keys.length>0?this.keys.forEach((e=>{this.state.set(e,State$1.Pending);const t=new Date;t.setSeconds(t.getSeconds()+this.timeoutAfter()),this.timeoutAt.set(e,t),this.injectPixel(e)})):this.state.set("",State$1.Failed)}get keys(){return this.config?Object.keys(this.config):[]}getPixelEvents(e){var t,n;return null===(n=null===(t=this.config)||void 0===t?void 0:t[e])||void 0===n?void 0:n.pixel_events}injectPixel(e){this.injectedAt.has(e)||(this.injectedAt.set(e,new Date),this.inject(e),this.watch(e))}inject(e){if(!this.providerCtor.scriptInjected){const e=document.createElement("script");e.text=this.getScript(),document.head.appendChild(e),this.providerCtor.scriptInjected=!0}this.init(e)}isTimedOut(e){return+new Date>=+(this.timeoutAt.get(e)||0)}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e,t){const n=this.getPixelEvents(t);if(Array.isArray(n))return n.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{getScript(){return"!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');"}init(e){window.fbq&&window.fbq("init",e)}onPixelEvent(e,t){const n=this.selectPixelEvents(e,t);n&&n.forEach((e=>{e&&(e.custom?window.fbq("trackSingleCustom",t,e.event):window.fbq("trackSingle",t,e.event))}))}isLoaded(e){return!!window.fbq&&window.fbq.getState&&window.fbq.getState(e)}}Facebook.scriptInjected=!1;class Outbrain extends Provider{getScript(){return`!function(_window, _document) { var OB_ADV_ID = ${JSON.stringify(this.keys)}; if (_window.obApi) { var toArray = function(object) { return Object.prototype.toString.call(object) === '[object Array]' ? object : [object]; }; _window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID)); return; } var api = _window.obApi = function() { api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments); }; api.version = '1.1'; api.loaded = true; api.marketerId = OB_ADV_ID; api.queue = []; var tag = _document.createElement('script'); tag.async = true; tag.src = '//amplify.outbrain.com/cp/obtp.js'; tag.type = 'text/javascript'; var script = _document.getElementsByTagName('script')[0]; script.parentNode.insertBefore(tag, script); }(window, document);`}init(e){}onPixelEvent(e,t){const n=this.selectPixelEvents(e,t);n&&n.forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(e){return!!window.obApi}}Outbrain.scriptInjected=!1;class Revcontent extends Provider{getScript(){return"var script=document.createElement('script');script.src='https://assets.revcontent.com/master/rev.js';document.head.appendChild(script);"}init(e){}onPixelEvent(e,t){const n=this.selectPixelEvents(e,t);n&&n.forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(e){return!!window.rev}}Revcontent.scriptInjected=!1;class Taboola extends Provider{getScript(){return`window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/${this.keys[0]}/tfa.js','tb_tfa_script');`}init(e){}onPixelEvent(e,t){const n=this.selectPixelEvents(e,t);n&&n.forEach((e=>{if(e){const n=parseInt(t,10);window._tfa.push({notify:"event",name:e.event,id:n})}}))}isLoaded(e){return Array.isArray(window._tfa)}}Taboola.scriptInjected=!1;class Tiktok extends Provider{getScript(){return'!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(t).track(e.event)}))}isLoaded(){return!!window.ttq}}Tiktok.scriptInjected=!1;class GoogleAds extends Provider{getScript(){return`var s=document.createElement('script');s.async=1;s.src='https://www.googletagmanager.com/gtag/js?id=${this.keys[0]}';document.head.appendChild(s);window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag('set','allow_ad_personalization_signals',false);gtag('js',new Date);`}init(e){window.gtag&&window.gtag("config",e)}onPixelEvent(e,t){const n=this.selectPixelEvents(e,t);n&&n.forEach((e=>{e&&window.gtag("event","conversion",{send_to:`${t}/${e.event}`})}))}isLoaded(e){return!!window.gtag}}GoogleAds.scriptInjected=!1;const ADS_PARAM$1=CAFKey,MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[],e.facebook&&Object.keys(e.facebook).forEach((t=>{this.providers.push(new Facebook({[t]:e.facebook[t]}))})),e.tiktok&&Object.keys(e.tiktok).forEach((t=>{this.providers.push(new Tiktok({[t]:e.tiktok[t]}))})),e.taboola&&Object.keys(e.taboola).forEach((t=>{this.providers.push(new Taboola({[t]:e.taboola[t]}))})),e.revcontent&&Object.keys(e.revcontent).forEach((t=>{this.providers.push(new Revcontent({[t]:e.revcontent[t]}))})),e.outbrain&&this.providers.push(new Outbrain(e.outbrain)),e.googleads&&Object.keys(e.googleads).forEach((t=>{this.providers.push(new GoogleAds({[t]:e.googleads[t]}))}))}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&"string"==typeof n&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&new URLSearchParams(window.location.search).has(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}listenForPixelEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}))}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM=CAFKey,ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class Cheq{constructor(e){let t;if(t="string"==typeof e?parseInt(e,10):e,t<0||t>100)throw new Error("Load percentage must be between 0 and 100");this.loadPercentage=t}inject(e,t){return __awaiter(this,void 0,void 0,(function*(){if(this.injected)return;100*Math.random()<=this.loadPercentage&&(this.injected=this.injectScriptTag(e,t))}))}injectScriptTag(e,t){const n=document.createElement("script");return n.type="text/javascript",n.async=!0,n.setAttribute("src","https://ob.forseasky.com/i/148870ae21863d775c347e8893c985af.js"),n.setAttribute("data-ch","cheq4ppc"),n.setAttribute("data-uvid",e),n.setAttribute("data-utm-campaign",t.toString()),n.className="ct_clicktrue_73521",document.head.appendChild(n),!0}}class App{main(){var e,t,n;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const i=Parking.build(this.findDomainResponse,this.google);Render.prerender(i);const s=(null===(n=this.findDomainResponse)||void 0===n?void 0:n.referral)?AFD_REFERRAL_CHEQ_LOAD_PERCENTAGE:AFD_ORGANIC_CHEQ_LOAD_PERCENTAGE;this.cheq=new Cheq(s),this.cheq.inject(this.parkResponse.uuid,this.findDomainResponse.userId),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let a=Failed.cannotPark(this.findDomainResponse);if(a)return void(yield this.transitionToFailed(a,i));yield this.google.injectAds();let o=Disabled.build(this.findDomainResponse,this.adblock.state);if(o)return void(yield this.transitionToDisabled(o,i));const r=this.adblock.hasAdblocker();r&&this.adblock.handleAdblocked();const d=Sales.build(this.findDomainResponse);if(d)return void(yield this.transitionToSales(d));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const c=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(c)yield this.transitionToRedirect(c);else{if(r)return o=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(o,i));a=Failed.noSponsors(this.google),a?yield this.transitionToFailed(a,i):yield this.transitionToParking(i)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),"adblocker"===e.reason&&t.bannerAdblockerOnly&&Render.revealSalesBanner(),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App})); Back To Top