{"id":7554,"date":"2026-08-08T15:08:28","date_gmt":"2026-08-08T15:08:28","guid":{"rendered":"https:\/\/h-in-q.com\/?page_id=7554"},"modified":"2026-08-08T15:14:00","modified_gmt":"2026-08-08T15:14:00","slug":"createur-de-guides-de-discussion","status":"publish","type":"page","link":"http:\/\/h-in-q.com\/fr\/discussion-guide-builder\/","title":{"rendered":"Discussion Guide Builder \u2014 Free Tool for Qualitative Research | H-in-Q"},"content":{"rendered":"<div class=\"hin-back-nav\" style=\"font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; padding: 14px 24px 0;\"><a style=\"color: #1d75bc; text-decoration: none; font-weight: 600; font-size: 14px;\" href=\"https:\/\/h-in-q.com\/free-tools\/\">\u2190 Back to Free Tools<\/a><\/div>\n<style>:root{     --blue-deep:#1B4F8A;     --blue-brand:#1C75BC;     --blue-light:#27AAE1;     --blue-pale:#EAF4FB;     --navy:#12283A;     --orange:#F7941D;     --gray:#8A94A0;     --paper:#F5F8FB;     --ink:#1A2733;     --line:#E1E8ED;     --green:#2E9E6B;     --sans:'Segoe UI','Helvetica Neue',Arial,sans-serif;     --mono:'SF Mono',Consolas,'Courier New',monospace;   }.hinq-dgb *{box-sizing:border-box;}.hinq-dgb{margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); line-height:1.55;}.hinq-dgb .wrap{max-width:820px; margin:0 auto; padding:36px 24px 90px;}.hinq-dgb .brand{display:flex; align-items:center; gap:10px; margin-bottom:26px;}.hinq-dgb .brand img{     height: 34px;     width: 34px;     display: block; }.hinq-dgb .brand span{font-weight:700; font-size:14px; letter-spacing:.02em; color:var(--blue-brand);}.hinq-dgb .eyebrow{font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--blue-brand); margin-bottom:10px; font-weight:700; display:flex; align-items:center; gap:10px;}.hinq-dgb .eyebrow::before{content:''; width:26px; height:3px; background:var(--orange); border-radius:2px;}.hinq-dgb h1{font-weight:800; font-size:34px; margin:0 0 8px; color:var(--navy); letter-spacing:-.01em;}.hinq-dgb .sub{color:var(--gray); font-size:15px; margin:0 0 30px; max-width:60ch;}.hinq-dgb \/* Stepper *\/   .stepper{display:flex; align-items:center; margin-bottom:26px;}.hinq-dgb .stepper .dot{width:30px; height:30px; border-radius:50%; background:#fff; border:2px solid var(--line); color:var(--gray); font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; flex:none; transition:.3s;}.hinq-dgb .stepper .dot.done{background:var(--blue-brand); border-color:var(--blue-brand); color:#fff;}.hinq-dgb .stepper .dot.current{border-color:var(--orange); color:var(--blue-brand); box-shadow:0 0 0 4px rgba(247,148,29,.18); animation:pulse 2.2s ease-in-out infinite;}.hinq-dgb .stepper .bar{height:3px; flex:1; background:var(--line); border-radius:2px; transition:.3s;}.hinq-dgb .stepper .bar.done{background:linear-gradient(90deg,var(--blue-brand),var(--blue-light));}.hinq-dgb .card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:28px 26px; margin-bottom:18px; box-shadow:0 2px 6px rgba(28,117,188,.06), 0 10px 28px rgba(28,117,188,.08); border-top:3px solid var(--blue-brand); animation:rise .35s ease both;}   @keyframes rise{from{opacity:0; transform:translateY(10px);}to{opacity:1; transform:none;}}   @media (prefers-reduced-motion:reduce){.hinq-dgb *{animation:none!important; transition:none!important;}}.hinq-dgb .card h2{font-weight:700; font-size:18px; margin:0 0 4px; color:var(--navy); display:flex; align-items:center; gap:10px;}.hinq-dgb .stepnum{width:26px; height:26px; border-radius:8px; background:var(--blue-brand); color:#fff; font-size:13px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; flex:none; box-shadow:0 2px 6px rgba(28,117,188,.35);}.hinq-dgb .card .hint{color:var(--gray); font-size:13px; margin:0 0 18px;}.hinq-dgb label{display:block; font-size:13px; font-weight:600; margin:16px 0 6px; color:var(--ink);}.hinq-dgb select, .hinq-dgb input[type=text], .hinq-dgb input[type=number], .hinq-dgb textarea{     width:100%; padding:10px 12px; border:1.5px solid var(--line); border-radius:8px;     font-family:var(--sans); font-size:14px; background:var(--paper); color:var(--ink);   }.hinq-dgb select:focus, .hinq-dgb input:focus, .hinq-dgb textarea:focus{outline:none; border-color:var(--blue-light); background:#fff; box-shadow:0 0 0 3px rgba(39,170,225,.15);}.hinq-dgb textarea{resize:vertical; min-height:64px;}.hinq-dgb .row{display:grid; grid-template-columns:1fr 1fr; gap:16px;}   @media (max-width:560px){.hinq-dgb .row{grid-template-columns:1fr;} }.hinq-dgb .chipset{display:flex; flex-wrap:wrap; gap:8px; margin-top:2px;}.hinq-dgb .chip{border:1.5px solid var(--line); background:var(--paper); border-radius:20px; padding:7px 14px; font-size:13px; cursor:pointer; user-select:none; font-weight:500; transition:.15s;}.hinq-dgb .chip:hover{border-color:var(--blue-light);}.hinq-dgb .chip.active{background:var(--blue-brand); border-color:var(--blue-brand); color:#fff; box-shadow:0 3px 8px rgba(28,117,188,.28);}.hinq-dgb .infonote{background:#FEF5EA; border-left:3px solid var(--orange); border-radius:8px; padding:12px 14px; font-size:13px; color:#6B4A22; margin:14px 0 0;}.hinq-dgb .nav{display:flex; justify-content:space-between; margin-top:22px; gap:10px;}.hinq-dgb button{font-family:var(--sans); font-size:14px; font-weight:700; border-radius:9px; padding:11px 22px; cursor:pointer; border:1.5px solid transparent; transition:.15s;}.hinq-dgb .btn-primary{background:linear-gradient(135deg,var(--blue-brand),var(--blue-light)); color:#fff; box-shadow:0 3px 10px rgba(28,117,188,.3);}.hinq-dgb .btn-primary:hover{transform:translateY(-1px); box-shadow:0 6px 16px rgba(28,117,188,.38);}.hinq-dgb .btn-primary:active{transform:none;}.hinq-dgb .btn-primary:disabled{opacity:.45; cursor:not-allowed;}.hinq-dgb .btn-ghost{background:transparent; color:var(--ink); border-color:var(--line);}.hinq-dgb .btn-ghost:hover{background:var(--blue-pale);}.hinq-dgb .btn-orange{background:var(--orange); color:#fff;}.hinq-dgb .btn-orange{box-shadow:0 3px 10px rgba(247,148,29,.3);}.hinq-dgb .btn-orange:hover{background:#e0821a; transform:translateY(-1px); box-shadow:0 6px 16px rgba(247,148,29,.38);}.hinq-dgb .btn-orange:active{transform:none;}.hinq-dgb .btn-sm{font-size:12.5px; padding:7px 14px; border-radius:7px;}.hinq-dgb \/* Theme editor *\/   .themeItem{display:flex; gap:8px; align-items:center; margin-top:10px;}.hinq-dgb .themeItem .num{width:24px; height:24px; border-radius:50%; background:var(--blue-pale); color:var(--blue-brand); font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center; flex:none;}.hinq-dgb .themeItem input{flex:1;}.hinq-dgb .themeItem .rm{width:32px; height:32px; padding:0; flex:none; border-radius:8px; background:transparent; border:1.5px solid var(--line); color:var(--gray); font-size:15px; line-height:1;}.hinq-dgb .themeItem .rm:hover{border-color:#E58A80; color:#C0392B; background:#FDF0EE;}.hinq-dgb .themeItem .mv{width:26px; height:32px; padding:0; flex:none; border-radius:8px; background:transparent; border:1.5px solid var(--line); color:var(--gray); font-size:12px; line-height:1;}.hinq-dgb .themeItem .mv:hover:not(:disabled){border-color:var(--blue-light); color:var(--blue-brand); background:var(--blue-pale);}.hinq-dgb .themeItem .mv:disabled{opacity:.35; cursor:not-allowed;}.hinq-dgb .themeTools{display:flex; gap:10px; margin-top:14px; flex-wrap:wrap;}.hinq-dgb .aiTag{display:inline-flex; align-items:center; gap:7px; background:var(--blue-pale); color:var(--blue-brand); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; border-radius:20px; padding:4px 12px; margin-left:8px;}.hinq-dgb .aiDot{width:8px; height:8px; border-radius:50%; background:var(--orange); animation:pulse 1.6s ease-in-out infinite;}   @keyframes pulse{0%,100%{transform:scale(1); opacity:1;}50%{transform:scale(1.35); opacity:.55;}}.hinq-dgb \/* Loading overlay *\/   .loading{display:none; text-align:center; padding:56px 20px; background:#fff; border:1px solid var(--line); border-radius:14px; margin-bottom:18px;}.hinq-dgb .loading.show{display:block; animation:rise .3s ease both;}.hinq-dgb .loading{box-shadow:0 10px 28px rgba(28,117,188,.08); border-radius:16px;}.hinq-dgb .spinner{width:40px; height:40px; border:3.5px solid var(--line); border-top-color:var(--orange); border-right-color:var(--blue-brand); border-radius:50%; margin:0 auto 18px; animation:spin .8s linear infinite;}   @keyframes spin{to{transform:rotate(360deg);}}.hinq-dgb .loading .ltitle{font-weight:700; font-size:16px; color:var(--navy); margin-bottom:6px;}.hinq-dgb .loading .lsub{color:var(--gray); font-size:13px;}.hinq-dgb .error{display:none; background:#FDECEA; border:1px solid #F5B5AC; color:#A33; border-radius:10px; padding:14px 16px; font-size:13px; margin-bottom:18px;}.hinq-dgb .error.show{display:block;}.hinq-dgb \/* Output *\/   .output{display:none;}.hinq-dgb .output.show{display:block;}.hinq-dgb .resultHead{display:flex; align-items:center; justify-content:space-between; margin:6px 0 10px; flex-wrap:wrap; gap:10px;}.hinq-dgb .resultHead h2{font-size:20px; font-weight:800; color:var(--navy); margin:0; display:flex; align-items:center; gap:10px;}.hinq-dgb .badge-ok{background:#FEF0DE; color:#C06A0A; font-size:11px; font-weight:700; border-radius:20px; padding:4px 12px; letter-spacing:.04em; text-transform:uppercase;}.hinq-dgb .resultBox{background:#fff; border:1px solid var(--line); border-radius:16px; margin-bottom:22px; overflow:hidden; box-shadow:0 2px 6px rgba(28,117,188,.06), 0 12px 32px rgba(28,117,188,.10); animation:rise .4s ease both;}.hinq-dgb .resultBox .boxbar{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:14px 20px; background:var(--blue-pale); border-bottom:1px solid var(--line); flex-wrap:wrap;}.hinq-dgb .resultBox .boxbar .t{font-weight:700; font-size:14px; color:var(--blue-deep); letter-spacing:.02em;}.hinq-dgb .boxbtns{display:flex; gap:8px;}.hinq-dgb .guide{padding:26px 26px 30px; font-size:14.5px;}.hinq-dgb .guide .meta{color:var(--gray); font-size:12px; margin-bottom:4px;}.hinq-dgb .guide h3{font-weight:700; font-size:17px; margin:24px 0 8px; color:var(--blue-brand); border-bottom:2px solid var(--line); padding-bottom:6px;}.hinq-dgb .guide h3:first-of-type{margin-top:12px;}.hinq-dgb .guide ul{margin:6px 0 0; padding-left:20px;}.hinq-dgb .guide li{margin-bottom:6px;}.hinq-dgb .guide li.probe{color:#4A6072; list-style:circle;}.hinq-dgb .guide li.mod{color:var(--gray); font-style:italic; list-style:square;}.hinq-dgb .timeblock{display:inline-block; font-family:var(--mono); font-size:11px; color:#C06A0A; background:#FEF0DE; border-radius:5px; padding:2px 8px; margin-right:8px; font-weight:600;}.hinq-dgb .promptbody{background:var(--navy); color:var(--blue-pale); padding:22px 24px; font-family:var(--mono); font-size:12.5px; white-space:pre-wrap; line-height:1.6; max-height:420px; overflow:auto;}.hinq-dgb .footnote{color:var(--gray); font-size:12px; margin-top:4px;}.hinq-dgb .toolbar{display:flex; gap:10px; margin-top:20px;} <\/style>\n<div class=\"hinq-dgb\">\n<div class=\"wrap\">\n<div class=\"brand\"><img decoding=\"async\" src=\"https:\/\/h-in-q.com\/wp-content\/uploads\/2024\/05\/cropped-H-in-Q-Logo-300x300-1.png\" alt=\"H-in-Q\" \/>H-in-Q<\/div>\n<div class=\"eyebrow\">Free Tools \u00b7 Qualitative Research<\/div>\n<h1>Discussion Guide Builder<\/h1>\n<p class=\"sub\">Answer a few questions about your qualitative study. Our AI model will suggest the right themes to explore, then draft a structured, ready-to-use discussion guide \u2014 plus a reusable prompt to iterate on it anywhere.<\/p>\n<div id=\"stepper\" class=\"stepper\"><\/div>\n<div class=\"card step\" data-step=\"0\">\n<h2><span class=\"stepnum\">1<\/span>Study design<\/h2>\n<p class=\"hint\">The format shapes the guide&#8217;s structure \u2014 pacing, group dynamics, and level of guidance.<\/p>\n<p><label>Method<\/label><\/p>\n<div id=\"methode\" class=\"chipset\">\n<div class=\"chip active\" data-v=\"focus\">Focus group<\/div>\n<div class=\"chip\" data-v=\"entretien\">Individual interview<\/div>\n<div class=\"chip\" data-v=\"mixte\">Dyad \/ triad interview<\/div>\n<\/div>\n<div class=\"row\">\n<div>\n<p><label>Number of research units<\/label> <input id=\"nb_unites\" min=\"1\" step=\"1\" type=\"number\" placeholder=\"e.g. 10\" \/><\/p>\n<p class=\"hint\" style=\"margin: 4px 0 0;\">Total count (e.g. 10 interviews, 4 groups). For &#8220;4 groups of 8&#8221;, enter 4 \u2014 group size can go in the profile notes.<\/p>\n<\/div>\n<div><label>Planned duration per session<\/label> <input id=\"duree\" type=\"text\" placeholder=\"e.g. 90 min\" \/><\/div>\n<\/div>\n<p><label>Mode of administration<\/label><\/p>\n<div id=\"mode\" class=\"chipset\">\n<div class=\"chip active\" data-v=\"in-person\">In person<\/div>\n<div class=\"chip\" data-v=\"video\">Video call<\/div>\n<div class=\"chip\" data-v=\"phone\">Phone<\/div>\n<\/div>\n<\/div>\n<div class=\"card step\" style=\"display: none;\" data-step=\"1\">\n<h2><span class=\"stepnum\">2<\/span>Target audience<\/h2>\n<p class=\"hint\">Describe each <em>distinct<\/em> target profile once \u2014 not one box per research unit. E.g. 10 interviews split across 2 profiles (men \/ women) means 2 boxes, each with its share of units.<\/p>\n<p><label>How many distinct target profiles?<\/label> <input id=\"nb_profils_input\" min=\"1\" step=\"1\" type=\"number\" value=\"1\" \/><\/p>\n<p id=\"profilsHint\" class=\"hint\" style=\"margin: 4px 0 0;\">Must be between 1 and your number of research units.<\/p>\n<div id=\"profilsContainer\" style=\"margin-top: 14px;\"><\/div>\n<p><label>Topic sensitivity<\/label><\/p>\n<div id=\"sensibilite\" class=\"chipset\">\n<div class=\"chip active\" data-v=\"standard\">Standard<\/div>\n<div class=\"chip\" data-v=\"intime\">Personal \/ intimate<\/div>\n<div class=\"chip\" data-v=\"professionnel\">Professional \/ hierarchical context<\/div>\n<\/div>\n<p><label>Expected familiarity with the topic<\/label><\/p>\n<div id=\"familiarite\" class=\"chipset\">\n<div class=\"chip active\" data-v=\"novice\">Novice<\/div>\n<div class=\"chip\" data-v=\"utilisateur\">Regular user<\/div>\n<div class=\"chip\" data-v=\"expert\">Expert \/ decision-maker<\/div>\n<\/div>\n<\/div>\n<div class=\"card step\" style=\"display: none;\" data-step=\"2\">\n<h2><span class=\"stepnum\">3<\/span>Research objectives<\/h2>\n<p class=\"hint\">2-3 priority objectives \u2014 beyond that, the guide risks turning into a disguised survey.<\/p>\n<p><label>Primary objective<\/label> <input id=\"obj1\" type=\"text\" placeholder=\"e.g. Understand purchase barriers\" \/> <label>Secondary objective (optional)<\/label> <input id=\"obj2\" type=\"text\" placeholder=\"e.g. Test reactions to 2 packaging concepts\" \/> <label>Tertiary objective (optional)<\/label> <input id=\"obj3\" type=\"text\" placeholder=\"e.g. Explore competitor usage\" \/><\/p>\n<\/div>\n<div class=\"card step\" style=\"display: none;\" data-step=\"3\">\n<h2><span class=\"stepnum\">4<\/span>Content to cover <span class=\"aiTag\">AI-suggested<\/span><\/h2>\n<p class=\"hint\">Based on everything you filled in, our AI model suggests the most relevant themes for this study. Edit any of them, remove the ones you don&#8217;t need, or add your own \u2014 one theme per line.<\/p>\n<div id=\"themesList\"><\/div>\n<div class=\"themeTools\"><button class=\"btn-ghost btn-sm\" type=\"button\">\uff0b Add another theme<\/button> <button class=\"btn-ghost btn-sm\" type=\"button\">\u21bb Suggest again<\/button><\/div>\n<p><label style=\"margin-top: 22px;\">Stimulus to test (concept, prototype, ad\u2026) \u2014 optional<\/label> <input id=\"stimulus\" type=\"text\" placeholder=\"e.g. 2 packaging boards, 1 ad video\" \/><\/p>\n<div class=\"infonote\">Themes are covered in the order shown. Use the \u25b2\u25bc arrows to reorder them \u2014 a natural conversation flows from broad context first to specific evaluation last.<\/div>\n<\/div>\n<div id=\"navBar\" class=\"nav\"><button id=\"btnBack\" class=\"btn-ghost\" style=\"visibility: hidden;\">\u2190 Back<\/button> <button id=\"btnNext\" class=\"btn-primary\">Next \u2192<\/button><\/div>\n<div id=\"loading\" class=\"loading\">\n<div class=\"spinner\"><\/div>\n<div id=\"loadTitle\" class=\"ltitle\">Working on it\u2026<\/div>\n<div id=\"loadSub\" class=\"lsub\">This usually takes a few seconds. Please keep this page open.<\/div>\n<\/div>\n<div id=\"errorBox\" class=\"error\"><\/div>\n<div id=\"output\" class=\"output\">\n<div class=\"resultHead\">\n<h2>Your discussion guide is ready <span class=\"badge-ok\">Generated<\/span><\/h2>\n<\/div>\n<div class=\"resultBox\">\n<div class=\"boxbar\"><span class=\"t\"><span style=\"color: var(--orange);\">\u25a0<\/span> Discussion guide<\/span> <span class=\"boxbtns\"> <button class=\"btn-ghost btn-sm\">Copy<\/button> <button class=\"btn-orange btn-sm\">Export to Word<\/button> <\/span><\/div>\n<div id=\"guideContent\" class=\"guide\"><\/div>\n<\/div>\n<div class=\"resultBox\">\n<div class=\"boxbar\"><span class=\"t\"><span style=\"color: var(--orange);\">\u25a0<\/span> Reusable prompt \u2014 regenerate or refine this guide with any AI assistant<\/span> <span class=\"boxbtns\"> <button class=\"btn-ghost btn-sm\">Copy<\/button> <button class=\"btn-orange btn-sm\">Export to Word<\/button> <\/span><\/div>\n<div id=\"promptText\" class=\"promptbody\"><\/div>\n<\/div>\n<p class=\"footnote\">This guide is an AI-generated starting point, not a final deliverable \u2014 review it with your field team before use.<\/p>\n<div class=\"toolbar\"><button class=\"btn-ghost\">\u21ba Start over<\/button><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><script>eval(decodeURIComponent(escape(window.atob(\"Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDT05GSUcg4oCUIHJlcGxhY2Ugd2l0aCB5b3VyIEFXUyBMYW1iZGEgRnVuY3Rpb24gVVJMCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpjb25zdCBBUElfRU5EUE9JTlQgPSAiaHR0cHM6Ly9hZWpleWpuZndrLmV4ZWN1dGUtYXBpLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2J1enpwdWxzZS9hdHRpamFyaS1jb252IjsKCmxldCBzdGVwID0gMDsKY29uc3QgdG90YWxTdGVwcyA9IDQ7CmNvbnN0IHN0YXRlID0geyBtZXRob2RlOidmb2N1cycsIG1vZGU6J2luLXBlcnNvbicsIHNlbnNpYmlsaXRlOidzdGFuZGFyZCcsIGZhbWlsaWFyaXRlOidub3ZpY2UnIH07CmxldCB0aGVtZXNGZXRjaGVkRm9yID0gbnVsbDsgICAvLyBzaWduYXR1cmUgb2YgYnJpZWYgd2hlbiB0aGVtZXMgd2VyZSBsYXN0IHN1Z2dlc3RlZApsZXQgbGFzdFJlc3VsdCA9IG51bGw7CgovKiAtLS0tLS0tLS0tIFN0ZXBwZXIgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXJTdGVwcGVyKCl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcHBlcicpOwogIGxldCBodG1sID0gJyc7CiAgZm9yKGxldCBpPTA7aTx0b3RhbFN0ZXBzO2krKyl7CiAgICBodG1sICs9IGA8ZGl2IGNsYXNzPSJkb3QgJHtpPHN0ZXA\/J2RvbmUnOihpPT09c3RlcD8nY3VycmVudCc6JycpfSI+JHtpPHN0ZXA\/J+Kckyc6aSsxfTwvZGl2PmA7CiAgICBpZihpPHRvdGFsU3RlcHMtMSkgaHRtbCArPSBgPGRpdiBjbGFzcz0iYmFyICR7aTxzdGVwPydkb25lJzonJ30iPjwvZGl2PmA7CiAgfQogIGVsLmlubmVySFRNTCA9IGh0bWw7Cn0KCi8qIC0tLS0tLS0tLS0gQ2hpcHMgLS0tLS0tLS0tLSAqLwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2hpcHNldCcpLmZvckVhY2goc2V0PT57CiAgc2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZT0+ewogICAgY29uc3QgY2hpcCA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5jaGlwJyk7CiAgICBpZighY2hpcCkgcmV0dXJuOwogICAgWy4uLnNldC5jaGlsZHJlbl0uZm9yRWFjaChjPT5jLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICAgIGNoaXAuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICBzdGF0ZVtzZXQuaWRdID0gY2hpcC5kYXRhc2V0LnY7CiAgfSk7Cn0pOwoKLyogLS0tLS0tLS0tLSBQcm9maWxlcyAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHZhbChpZCl7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWUudHJpbSgpOyB9CgpmdW5jdGlvbiBvblVuaXRzQ2hhbmdlKCl7CiAgY29uc3QgdW5pdHMgPSBwYXJzZUludCh2YWwoJ25iX3VuaXRlcycpKSB8fCBudWxsOwogIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25iX3Byb2ZpbHNfaW5wdXQnKTsKICBjb25zdCBoaW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2ZpbHNIaW50Jyk7CiAgaWYodW5pdHMpewogICAgaW5wdXQubWF4ID0gdW5pdHM7CiAgICBpZihwYXJzZUludChpbnB1dC52YWx1ZSkgPiB1bml0cyl7IGlucHV0LnZhbHVlID0gdW5pdHM7IH0KICAgIGhpbnQudGV4dENvbnRlbnQgPSBgTXVzdCBiZSBiZXR3ZWVuIDEgYW5kICR7dW5pdHN9ICh5b3VyIG51bWJlciBvZiByZXNlYXJjaCB1bml0cykuYDsKICB9IGVsc2UgewogICAgaW5wdXQucmVtb3ZlQXR0cmlidXRlKCdtYXgnKTsKICAgIGhpbnQudGV4dENvbnRlbnQgPSAnTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIHlvdXIgbnVtYmVyIG9mIHJlc2VhcmNoIHVuaXRzLic7CiAgfQogIG9uUHJvZmlsc0NvdW50Q2hhbmdlKCk7Cn0KCmZ1bmN0aW9uIG9uUHJvZmlsc0NvdW50Q2hhbmdlKCl7CiAgY29uc3QgdW5pdHMgPSBwYXJzZUludCh2YWwoJ25iX3VuaXRlcycpKSB8fCBudWxsOwogIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25iX3Byb2ZpbHNfaW5wdXQnKTsKICBsZXQgbiA9IHBhcnNlSW50KGlucHV0LnZhbHVlKSB8fCAxOwogIGlmKG4gPCAxKSBuID0gMTsKICBpZih1bml0cyAmJiBuID4gdW5pdHMpIG4gPSB1bml0czsKICBpbnB1dC52YWx1ZSA9IG47CiAgcmVuZGVyUHJvZmlsQm94ZXMobik7Cn0KCmZ1bmN0aW9uIHJlbmRlclByb2ZpbEJveGVzKG4pewogIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9maWxzQ29udGFpbmVyJyk7CiAgY29uc3QgcHJldlZhbHVlcyA9IFsuLi5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnByb2ZpbC1kZXNjJyldLm1hcCh0PT50LnZhbHVlKTsKICBjb25zdCBwcmV2U2hhcmVzID0gWy4uLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcucHJvZmlsLXNoYXJlJyldLm1hcCh0PT50LnZhbHVlKTsKICBjb25zdCBzaG93U2hhcmUgPSBuID4gMTsKICBsZXQgaHRtbCA9ICcnOwogIGZvcihsZXQgaT0wO2k8bjtpKyspewogICAgaHRtbCArPSBgPGRpdiBzdHlsZT0iYm9yZGVyOjFweCBkYXNoZWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzoxNHB4IDE0cHggNnB4OyBtYXJnaW4tdG9wOiR7aT09PTA\/JzAnOicxMnB4J307Ij5gOwogICAgaHRtbCArPSBgPGxhYmVsIHN0eWxlPSJtYXJnaW4tdG9wOjA7Ij5Qcm9maWxlICR7aSsxfSR7bj4xPycg4oCUIGxhYmVsIChlLmcuICJNZW4sIDI1LTQwIiknOicnfTwvbGFiZWw+YDsKICAgIGh0bWwgKz0gYDx0ZXh0YXJlYSBjbGFzcz0icHJvZmlsLWRlc2MiIHBsYWNlaG9sZGVyPSJXaG8gdGhleSBhcmUsIGtleSBjcml0ZXJpYSwgcmVjcnVpdG1lbnQgbm90ZXPigKYiPiR7cHJldlZhbHVlc1tpXXx8Jyd9PC90ZXh0YXJlYT5gOwogICAgaWYoc2hvd1NoYXJlKXsKICAgICAgaHRtbCArPSBgPGxhYmVsPlNoYXJlIG9mIHJlc2VhcmNoIHVuaXRzIGZvciB0aGlzIHByb2ZpbGU8L2xhYmVsPmA7CiAgICAgIGh0bWwgKz0gYDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0icHJvZmlsLXNoYXJlIiBwbGFjZWhvbGRlcj0iZS5nLiA1IG9mIDEwIGludGVydmlld3MgLyAyIG9mIDQgZ3JvdXBzIiB2YWx1ZT0iJHtwcmV2U2hhcmVzW2ldfHwnJ30iPmA7CiAgICB9CiAgICBodG1sICs9IGA8L2Rpdj5gOwogIH0KICBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbDsKfQpyZW5kZXJQcm9maWxCb3hlcygxKTsKCi8qIC0tLS0tLS0tLS0gVGhlbWUgZWRpdG9yIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gYWRkVGhlbWVSb3codmFsdWUpewogIGNvbnN0IGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlbWVzTGlzdCcpOwogIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHJvdy5jbGFzc05hbWUgPSAndGhlbWVJdGVtJzsKICByb3cuaW5uZXJIVE1MID0gYDxzcGFuIGNsYXNzPSJudW0iPjwvc3Bhbj4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0idGhlbWVJbnB1dCIgcGxhY2Vob2xkZXI9IlRoZW1lIG5hbWXigKYiPgogICAgPGJ1dHRvbiBjbGFzcz0ibXYgdXAiIHR5cGU9ImJ1dHRvbiIgdGl0bGU9Ik1vdmUgdXAiPuKWsjwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0ibXYgZG93biIgdHlwZT0iYnV0dG9uIiB0aXRsZT0iTW92ZSBkb3duIj7ilrw8L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9InJtIiB0eXBlPSJidXR0b24iIHRpdGxlPSJSZW1vdmUgdGhpcyB0aGVtZSI+4pyVPC9idXR0b24+YDsKICByb3cucXVlcnlTZWxlY3RvcignLnRoZW1lSW5wdXQnKS52YWx1ZSA9IHZhbHVlIHx8ICcnOwogIHJvdy5xdWVyeVNlbGVjdG9yKCcucm0nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpPT57IHJvdy5yZW1vdmUoKTsgcmVudW1iZXJUaGVtZXMoKTsgfSk7CiAgcm93LnF1ZXJ5U2VsZWN0b3IoJy51cCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PnsKICAgIGNvbnN0IHByZXYgPSByb3cucHJldmlvdXNFbGVtZW50U2libGluZzsKICAgIGlmKHByZXYpeyBsaXN0Lmluc2VydEJlZm9yZShyb3csIHByZXYpOyByZW51bWJlclRoZW1lcygpOyB9CiAgfSk7CiAgcm93LnF1ZXJ5U2VsZWN0b3IoJy5kb3duJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKT0+ewogICAgY29uc3QgbmV4dCA9IHJvdy5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICBpZihuZXh0KXsgbGlzdC5pbnNlcnRCZWZvcmUobmV4dCwgcm93KTsgcmVudW1iZXJUaGVtZXMoKTsgfQogIH0pOwogIGxpc3QuYXBwZW5kQ2hpbGQocm93KTsKICByZW51bWJlclRoZW1lcygpOwogIGlmKCF2YWx1ZSkgcm93LnF1ZXJ5U2VsZWN0b3IoJy50aGVtZUlucHV0JykuZm9jdXMoKTsKfQpmdW5jdGlvbiByZW51bWJlclRoZW1lcygpewogIGNvbnN0IHJvd3MgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3RoZW1lc0xpc3QgLnRoZW1lSXRlbScpXTsKICByb3dzLmZvckVhY2goKHIsaSk9PnsKICAgIHIucXVlcnlTZWxlY3RvcignLm51bScpLnRleHRDb250ZW50ID0gaSsxOwogICAgci5xdWVyeVNlbGVjdG9yKCcudXAnKS5kaXNhYmxlZCA9IChpPT09MCk7CiAgICByLnF1ZXJ5U2VsZWN0b3IoJy5kb3duJykuZGlzYWJsZWQgPSAoaT09PXJvd3MubGVuZ3RoLTEpOwogIH0pOwp9CmZ1bmN0aW9uIGdldFRoZW1lcygpewogIHJldHVybiBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3RoZW1lc0xpc3QgLnRoZW1lSW5wdXQnKV0ubWFwKGk9PmkudmFsdWUudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7Cn0KZnVuY3Rpb24gc2V0VGhlbWVzKGFycil7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZW1lc0xpc3QnKS5pbm5lckhUTUwgPSAnJzsKICBhcnIuZm9yRWFjaCh0PT5hZGRUaGVtZVJvdyh0KSk7Cn0KCi8qIC0tLS0tLS0tLS0gQnJpZWYgY29sbGVjdGlvbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGNvbGxlY3RCcmllZigpewogIGNvbnN0IG1ldGhvZGVMYWJlbCA9IHtmb2N1czonRm9jdXMgZ3JvdXAnLCBlbnRyZXRpZW46J0luZGl2aWR1YWwgaW50ZXJ2aWV3JywgbWl4dGU6J0R5YWQvdHJpYWQgaW50ZXJ2aWV3J31bc3RhdGUubWV0aG9kZV07CiAgY29uc3QgbW9kZUxhYmVsID0geydpbi1wZXJzb24nOidpbiBwZXJzb24nLCAndmlkZW8nOid2aWRlbyBjYWxsJywgJ3Bob25lJzoncGhvbmUnfVtzdGF0ZS5tb2RlXTsKICBjb25zdCBwcm9maWxzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNwcm9maWxzQ29udGFpbmVyID4gZGl2JyldLm1hcChib3g9PnsKICAgIGNvbnN0IGRlc2MgPSBib3gucXVlcnlTZWxlY3RvcignLnByb2ZpbC1kZXNjJykudmFsdWUudHJpbSgpOwogICAgY29uc3Qgc2hhcmUgPSBib3gucXVlcnlTZWxlY3RvcignLnByb2ZpbC1zaGFyZScpOwogICAgcmV0dXJuIHsgZGVzYzogZGVzYyB8fCAncHJvZmlsZSBub3Qgc3BlY2lmaWVkJywgc2hhcmU6IHNoYXJlID8gc2hhcmUudmFsdWUudHJpbSgpIDogJycgfTsKICB9KTsKICBjb25zdCBwcm9maWxzVGV4dCA9IHByb2ZpbHMubWFwKChwLGkpPT4gcHJvZmlscy5sZW5ndGg+MQogICAgPyBgUHJvZmlsZSAke2krMX06ICR7cC5kZXNjfSR7cC5zaGFyZT9gICgke3Auc2hhcmV9KWA6Jyd9YAogICAgOiBwLmRlc2MpLmpvaW4oJyB8ICcpOwogIHJldHVybiB7CiAgICBtZXRob2Q6IG1ldGhvZGVMYWJlbCwKICAgIHVuaXRzOiB2YWwoJ25iX3VuaXRlcycpLAogICAgZHVyYXRpb246IHZhbCgnZHVyZWUnKSwKICAgIG1vZGU6IG1vZGVMYWJlbCwKICAgIHByb2ZpbGVzOiBwcm9maWxzVGV4dCwKICAgIHNlbnNpdGl2aXR5OiB7c3RhbmRhcmQ6J3N0YW5kYXJkJywgaW50aW1lOidwZXJzb25hbC9pbnRpbWF0ZScsIHByb2Zlc3Npb25uZWw6J3Byb2Zlc3Npb25hbCBjb250ZXh0J31bc3RhdGUuc2Vuc2liaWxpdGVdLAogICAgZmFtaWxpYXJpdHk6IHtub3ZpY2U6J25vdmljZScsIHV0aWxpc2F0ZXVyOidyZWd1bGFyIHVzZXInLCBleHBlcnQ6J2V4cGVydC9kZWNpc2lvbi1tYWtlcid9W3N0YXRlLmZhbWlsaWFyaXRlXSwKICAgIG9iamVjdGl2ZXM6IFt2YWwoJ29iajEnKSwgdmFsKCdvYmoyJyksIHZhbCgnb2JqMycpXS5maWx0ZXIoQm9vbGVhbiksCiAgICB0aGVtZXM6IGdldFRoZW1lcygpLAogICAgc3RpbXVsdXM6IHZhbCgnc3RpbXVsdXMnKQogIH07Cn0KZnVuY3Rpb24gYnJpZWZTaWduYXR1cmUoKXsKICBjb25zdCBiID0gY29sbGVjdEJyaWVmKCk7CiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFtiLm1ldGhvZCxiLnVuaXRzLGIuZHVyYXRpb24sYi5tb2RlLGIucHJvZmlsZXMsYi5zZW5zaXRpdml0eSxiLmZhbWlsaWFyaXR5LGIub2JqZWN0aXZlc10pOwp9CgovKiAtLS0tLS0tLS0tIExvYWRpbmcgLyBlcnJvciBoZWxwZXJzIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gc2hvd0xvYWRpbmcodGl0bGUsIHN1Yil7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWRUaXRsZScpLnRleHRDb250ZW50ID0gdGl0bGU7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWRTdWInKS50ZXh0Q29udGVudCA9IHN1YjsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9hZGluZycpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3JCb3gnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7Cn0KZnVuY3Rpb24gaGlkZUxvYWRpbmcoKXsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWRpbmcnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7IH0KZnVuY3Rpb24gc2hvd0Vycm9yKG1zZyl7CiAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yQm94Jyk7CiAgYm94LnRleHRDb250ZW50ID0gbXNnOwogIGJveC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7Cn0KZnVuY3Rpb24gc2V0Rm9ybVZpc2libGUodil7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNhcmQuc3RlcCcpLmZvckVhY2goYz0+IGMuc3R5bGUuZGlzcGxheSA9IHYgPyAnJyA6ICdub25lJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdkJhcicpLnN0eWxlLmRpc3BsYXkgPSB2ID8gJ2ZsZXgnIDogJ25vbmUnOwogIGlmKHYpIHNob3dTdGVwKHN0ZXApOwp9CgovKiAtLS0tLS0tLS0tIEFQSSBjYWxsIC0tLS0tLS0tLS0gKi8KYXN5bmMgZnVuY3Rpb24gY2FsbEFwaShhY3Rpb24pewogIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKEFQSV9FTkRQT0lOVCwgewogICAgbWV0aG9kOidQT1NUJywKICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJ30sCiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbiwgYnJpZWY6IGNvbGxlY3RCcmllZigpIH0pCiAgfSk7CiAgaWYoIXJlcy5vayl7CiAgICBsZXQgbXNnID0gJ1RoZSBzZXJ2aWNlIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlLic7CiAgICB0cnl7IG1zZyA9IChhd2FpdCByZXMuanNvbigpKS5lcnJvciB8fCBtc2c7IH1jYXRjaChlKXt9CiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKICB9CiAgcmV0dXJuIHJlcy5qc29uKCk7Cn0KCi8qIC0tLS0tLS0tLS0gU3RlcCA0OiB0aGVtZSBzdWdnZXN0aW9uIC0tLS0tLS0tLS0gKi8KYXN5bmMgZnVuY3Rpb24gZmV0Y2hUaGVtZXMoZm9yY2UpewogIGNvbnN0IHNpZyA9IGJyaWVmU2lnbmF0dXJlKCk7CiAgaWYoIWZvcmNlICYmIHRoZW1lc0ZldGNoZWRGb3IgPT09IHNpZyAmJiBnZXRUaGVtZXMoKS5sZW5ndGgpIHJldHVybjsgLy8gYWxyZWFkeSBzdWdnZXN0ZWQgZm9yIHRoaXMgYnJpZWYKICBzZXRGb3JtVmlzaWJsZShmYWxzZSk7CiAgc2hvd0xvYWRpbmcoJ0FuYWx5emluZyB5b3VyIHN0dWR5IGJyaWVm4oCmJywgJ091ciBBSSBtb2RlbCBpcyBpZGVudGlmeWluZyB0aGUgbW9zdCByZWxldmFudCB0aGVtZXMgdG8gZXhwbG9yZS4gVGhpcyB0YWtlcyBqdXN0IGEgZmV3IHNlY29uZHMuJyk7CiAgdHJ5ewogICAgY29uc3QgZGF0YSA9IGF3YWl0IGNhbGxBcGkoJ3N1Z2dlc3RfdGhlbWVzJyk7CiAgICBzZXRUaGVtZXMoZGF0YS50aGVtZXMgfHwgW10pOwogICAgdGhlbWVzRmV0Y2hlZEZvciA9IHNpZzsKICAgIGhpZGVMb2FkaW5nKCk7CiAgICBzZXRGb3JtVmlzaWJsZSh0cnVlKTsKICB9Y2F0Y2goZXJyKXsKICAgIGhpZGVMb2FkaW5nKCk7CiAgICBzZXRGb3JtVmlzaWJsZSh0cnVlKTsKICAgIHNob3dFcnJvcignV2UgY291bGRuXHUyMDE5dCBmZXRjaCB0aGVtZSBzdWdnZXN0aW9ucyByaWdodCBub3cgKCcgKyBlcnIubWVzc2FnZSArICcpLiBZb3UgY2FuIHN0aWxsIGFkZCB5b3VyIHRoZW1lcyBtYW51YWxseSBiZWxvdywgb3IgdHJ5ICJTdWdnZXN0IGFnYWluIi4nKTsKICAgIGlmKCFnZXRUaGVtZXMoKS5sZW5ndGgpIGFkZFRoZW1lUm93KCcnKTsKICB9Cn0KCi8qIC0tLS0tLS0tLS0gTmF2aWdhdGlvbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHNob3dTdGVwKG4pewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdGVwJykuZm9yRWFjaChzPT4gcy5zdHlsZS5kaXNwbGF5ID0gKCtzLmRhdGFzZXQuc3RlcD09PW4\/J2Jsb2NrJzonbm9uZScpKTsKICByZW5kZXJTdGVwcGVyKCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkJhY2snKS5zdHlsZS52aXNpYmlsaXR5ID0gbj09PTAgPyAnaGlkZGVuJzondmlzaWJsZSc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bk5leHQnKS50ZXh0Q29udGVudCA9IG49PT10b3RhbFN0ZXBzLTEgPyAnR2VuZXJhdGUgbXkgZGlzY3Vzc2lvbiBndWlkZSDihpInIDogJ05leHQg4oaSJzsKICB3aW5kb3cuc2Nyb2xsVG8oe3RvcDowLCBiZWhhdmlvcjonc21vb3RoJ30pOwp9Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuTmV4dCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCk9PnsKICBpZihzdGVwIDwgdG90YWxTdGVwcy0xKXsKICAgIHN0ZXArKzsKICAgIHNob3dTdGVwKHN0ZXApOwogICAgaWYoc3RlcCA9PT0gMyl7IGF3YWl0IGZldGNoVGhlbWVzKGZhbHNlKTsgfQogIH0gZWxzZSB7CiAgICBnZW5lcmF0ZSgpOwogIH0KfSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5CYWNrJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKT0+ewogIGlmKHN0ZXA+MCl7IHN0ZXAtLTsgc2hvd1N0ZXAoc3RlcCk7IH0KfSk7CgpmdW5jdGlvbiByZXN0YXJ0KCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dHB1dCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3JCb3gnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7CiAgc3RlcD0wOyBzZXRGb3JtVmlzaWJsZSh0cnVlKTsKICB3aW5kb3cuc2Nyb2xsVG8oe3RvcDowLCBiZWhhdmlvcjonc21vb3RoJ30pOwp9CgovKiAtLS0tLS0tLS0tIEZpbmFsIGdlbmVyYXRpb24gLS0tLS0tLS0tLSAqLwphc3luYyBmdW5jdGlvbiBnZW5lcmF0ZSgpewogIGlmKCFnZXRUaGVtZXMoKS5sZW5ndGgpewogICAgc2hvd0Vycm9yKCdQbGVhc2Uga2VlcCBhdCBsZWFzdCBvbmUgdGhlbWUgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGd1aWRlLicpOwogICAgcmV0dXJuOwogIH0KICBzZXRGb3JtVmlzaWJsZShmYWxzZSk7CiAgc2hvd0xvYWRpbmcoJ0RyYWZ0aW5nIHlvdXIgZGlzY3Vzc2lvbiBndWlkZeKApicsICdPdXIgQUkgbW9kZWwgaXMgYnVpbGRpbmcgdGhlIGZ1bGwgZ3VpZGUgYW5kIHlvdXIgcmV1c2FibGUgcHJvbXB0LiBUaGlzIGNhbiB0YWtlIHVwIHRvIGEgbWludXRlIOKAlCBwbGVhc2Uga2VlcCB0aGlzIHBhZ2Ugb3Blbi4nKTsKICB0cnl7CiAgICBjb25zdCBkYXRhID0gYXdhaXQgY2FsbEFwaSgnZ2VuZXJhdGVfZ3VpZGUnKTsKICAgIGxhc3RSZXN1bHQgPSBkYXRhOwogICAgcmVuZGVyR3VpZGUoZGF0YS5ndWlkZSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvbXB0VGV4dCcpLnRleHRDb250ZW50ID0gZGF0YS5wcm9tcHQgfHwgJyc7CiAgICBoaWRlTG9hZGluZygpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dHB1dCcpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7dG9wOjAsIGJlaGF2aW9yOidzbW9vdGgnfSk7CiAgfWNhdGNoKGVycil7CiAgICBoaWRlTG9hZGluZygpOwogICAgc2V0Rm9ybVZpc2libGUodHJ1ZSk7CiAgICBzaG93RXJyb3IoJ1NvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIGdlbmVyYXRpbmcgeW91ciBndWlkZSAoJyArIGVyci5tZXNzYWdlICsgJykuIFBsZWFzZSB0cnkgYWdhaW4uJyk7CiAgfQp9CgpmdW5jdGlvbiByZW5kZXJHdWlkZShndWlkZSl7CiAgY29uc3QgYiA9IGNvbGxlY3RCcmllZigpOwogIGxldCBodG1sID0gYDxkaXYgY2xhc3M9Im1ldGEiPiR7Yi5tZXRob2R9IMK3ICR7Yi51bml0c3x8J+KAlCd9IHVuaXQocykgwrcgJHtiLmR1cmF0aW9ufHwn4oCUJ30gwrcgJHtiLm1vZGV9PC9kaXY+YDsKICBpZihndWlkZS50aXRsZSkgaHRtbCArPSBgPGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTlweDsgY29sb3I6dmFyKC0tbmF2eSk7IG1hcmdpbi10b3A6NnB4OyI+JHtlc2MoZ3VpZGUudGl0bGUpfTwvZGl2PmA7CiAgKGd1aWRlLnNlY3Rpb25zIHx8IFtdKS5mb3JFYWNoKHNlYz0+ewogICAgaHRtbCArPSBgPGgzPjxzcGFuIGNsYXNzPSJ0aW1lYmxvY2siPiR7c2VjLm1pbnV0ZXN8fCfigJMnfSBtaW48L3NwYW4+JHtlc2Moc2VjLnRpdGxlKX08L2gzPjx1bD5gOwogICAgKHNlYy5pdGVtc3x8W10pLmZvckVhY2goaXQ9PnsKICAgICAgY29uc3QgY2xzID0gL15wcm9iZVxzKjovaS50ZXN0KGl0KSA\/ICcgY2xhc3M9InByb2JlIicgOiAoL15tb2RlcmF0b3Jccyo6L2kudGVzdChpdCkgPyAnIGNsYXNzPSJtb2QiJyA6ICcnKTsKICAgICAgaHRtbCArPSBgPGxpJHtjbHN9PiR7ZXNjKGl0KX08L2xpPmA7CiAgICB9KTsKICAgIGh0bWwgKz0gYDwvdWw+YDsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3VpZGVDb250ZW50JykuaW5uZXJIVE1MID0gaHRtbDsKfQpmdW5jdGlvbiBlc2Mocyl7IHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJlcGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLz4vZywnJmd0OycpOyB9CgovKiAtLS0tLS0tLS0tIENvcHkgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBmbGFzaChidG4peyBjb25zdCBvPWJ0bi50ZXh0Q29udGVudDsgYnRuLnRleHRDb250ZW50PSdDb3BpZWQg4pyTJzsgc2V0VGltZW91dCgoKT0+YnRuLnRleHRDb250ZW50PW8sMTUwMCk7IH0KZnVuY3Rpb24gZ3VpZGVQbGFpblRleHQoKXsKICBpZighbGFzdFJlc3VsdCkgcmV0dXJuICcnOwogIGNvbnN0IGcgPSBsYXN0UmVzdWx0Lmd1aWRlOwogIGxldCBvdXQgPSAoZy50aXRsZXx8J0Rpc2N1c3Npb24gR3VpZGUnKSArICdcblxuJzsKICAoZy5zZWN0aW9uc3x8W10pLmZvckVhY2gocz0+ewogICAgb3V0ICs9IGAke3MudGl0bGV9ICgke3MubWludXRlc3x8J+KAkyd9IG1pbilcbmA7CiAgICAocy5pdGVtc3x8W10pLmZvckVhY2goaT0+IG91dCArPSBgICDigKIgJHtpfVxuYCk7CiAgICBvdXQgKz0gJ1xuJzsKICB9KTsKICByZXR1cm4gb3V0LnRyaW0oKTsKfQpmdW5jdGlvbiBjb3B5R3VpZGUoYnRuKXsgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZ3VpZGVQbGFpblRleHQoKSk7IGZsYXNoKGJ0bik7IH0KZnVuY3Rpb24gY29weVByb21wdChidG4peyBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvbXB0VGV4dCcpLnRleHRDb250ZW50KTsgZmxhc2goYnRuKTsgfQoKLyogLS0tLS0tLS0tLSBXb3JkIGV4cG9ydCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGV4cG9ydFdvcmQod2hpY2gpewogIGlmKCFsYXN0UmVzdWx0KSByZXR1cm47CiAgbGV0IHRpdGxlLCBib2R5SHRtbDsKICBpZih3aGljaCA9PT0gJ2d1aWRlJyl7CiAgICB0aXRsZSA9IGxhc3RSZXN1bHQuZ3VpZGUudGl0bGUgfHwgJ0Rpc2N1c3Npb24gR3VpZGUnOwogICAgYm9keUh0bWwgPSBgPGgxIHN0eWxlPSJjb2xvcjojMUM3NUJDOyI+JHtlc2ModGl0bGUpfTwvaDE+YDsKICAgIChsYXN0UmVzdWx0Lmd1aWRlLnNlY3Rpb25zfHxbXSkuZm9yRWFjaChzPT57CiAgICAgIGJvZHlIdG1sICs9IGA8aDIgc3R5bGU9ImNvbG9yOiMxQjRGOEE7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7Ij4ke2VzYyhzLnRpdGxlKX0gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyBjb2xvcjojNzc3OyI+KCR7cy5taW51dGVzfHwn4oCTJ30gbWluKTwvc3Bhbj48L2gyPjx1bD5gOwogICAgICAocy5pdGVtc3x8W10pLmZvckVhY2goaT0+IGJvZHlIdG1sICs9IGA8bGk+JHtlc2MoaSl9PC9saT5gKTsKICAgICAgYm9keUh0bWwgKz0gYDwvdWw+YDsKICAgIH0pOwogIH0gZWxzZSB7CiAgICB0aXRsZSA9ICdEaXNjdXNzaW9uIEd1aWRlIOKAlCBSZXVzYWJsZSBQcm9tcHQnOwogICAgYm9keUh0bWwgPSBgPGgxIHN0eWxlPSJjb2xvcjojMUM3NUJDOyI+JHtlc2ModGl0bGUpfTwvaDE+PHByZSBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXMsbW9ub3NwYWNlOyBmb250LXNpemU6MTFwdDsgd2hpdGUtc3BhY2U6cHJlLXdyYXA7Ij4ke2VzYyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvbXB0VGV4dCcpLnRleHRDb250ZW50KX08L3ByZT5gOwogIH0KICBjb25zdCBkb2MgPSBgPGh0bWwgeG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCI+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPjx0aXRsZT4ke2VzYyh0aXRsZSl9PC90aXRsZT48L2hlYWQ+PGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsc2Fucy1zZXJpZjsiPiR7Ym9keUh0bWx9PHAgc3R5bGU9ImNvbG9yOiM5OTk7IGZvbnQtc2l6ZTo5cHQ7Ij5HZW5lcmF0ZWQgd2l0aCBILWluLVEgwrcgRGlzY3Vzc2lvbiBHdWlkZSBCdWlsZGVyPC9wPjwvYm9keT48L2h0bWw+YDsKICBjb25zdCBibG9iID0gbmV3IEJsb2IoWydcdWZlZmYnLCBkb2NdLCB7dHlwZTonYXBwbGljYXRpb24vbXN3b3JkJ30pOwogIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICBhLmRvd25sb2FkID0gKHdoaWNoPT09J2d1aWRlJyA\/ICdkaXNjdXNzaW9uLWd1aWRlJyA6ICdkaXNjdXNzaW9uLWd1aWRlLXByb21wdCcpICsgJy5kb2MnOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7IGEuY2xpY2soKTsKICBzZXRUaW1lb3V0KCgpPT57IFVSTC5yZXZva2VPYmplY3RVUkwoYS5ocmVmKTsgYS5yZW1vdmUoKTsgfSwgNTAwKTsKfQoKc2hvd1N0ZXAoMCk7Cg==\"))));<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2190 Back to Free Tools H-in-Q Free Tools \u00b7 Qualitative Research Discussion Guide Builder Answer a few questions about your qualitative study. Our AI model will suggest the right themes to explore, then draft a structured, ready-to-use discussion guide \u2014 plus a reusable prompt to iterate on it anywhere. 1Study design The format shapes the&#8230;<\/p>","protected":false},"author":10,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7554","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/pages\/7554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/comments?post=7554"}],"version-history":[{"count":2,"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/pages\/7554\/revisions"}],"predecessor-version":[{"id":7557,"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/pages\/7554\/revisions\/7557"}],"wp:attachment":[{"href":"http:\/\/h-in-q.com\/fr\/wp-json\/wp\/v2\/media?parent=7554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}