Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <pre>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/AFCRHS.ts

"use strict";(()=>{(function(){if(mw.config.get("wgPageName")!=="Wikipedia:Articles_for_creation/Redirects"&&mw.config.get("wgPageName")!=="Wikipedia:Articles_for_creation/Categories")return;let w=mw.config.get("wgPageName").replaceAll("_"," "),k=[],v=[],N=" ([[User:Eejit43/scripts/AFCRHS|AFCRHS 2]])",x=0,I=0,V=[],T=[],j={exists:"The title you suggested already exists on Wikipedia",blank:"We cannot accept empty submissions","no-target":" A redirect cannot be created unless the target is an existing article. Either you have not specified the target, or the target does not exist",unlikely:"The title you suggested seems unlikely. Could you provide a source showing that it is a commonly used alternate name?","not-redirect":"This request is not a redirect request",custom:""},M={exists:"The category you suggested already exists on Wikipedia",blank:"We cannot accept empty submissions",unlikely:"It seems unlikely that there are enough pages to support this category","not-category":"This request is not a category request",custom:""},L=new Set(["extendedconfirmed","sysop"]);async function D(){if(!mw.config.get("wgUserGroups")?.some(a=>L.has(a))){let a=document.createElement("span"),l=document.createElement("a");l.href=mw.util.getUrl("Wikipedia:Extended confirmed"),l.target="_blank",l.textContent="extended confirmed";let u=document.createElement("a");u.href=mw.util.getUrl("User:Eejit43/scripts/AFCRHS"),u.target="_blank",u.textContent="script documentation",a.append("Error: AFCRHS requires ",l," permissions to use. For more information see the ",u,"."),mw.notification.notify(a,{type:"error",autoHideSeconds:"long"});return}let e=await q(w);e=O(e);let t=/==.*?==/;e=e.slice(Math.max(0,e.search(t))),v=e.match(/^==.*?==$((\r?\n?)(?!==[^=]).*)*/gim);for(let[a,l]of v.entries())if(!/({{\s*afc(?!\s+comment)|this is an archived discussion)/i.test(l)){let s=l.match(t)[0];if(s.search(/redirect request/i)!==-1){let r=/\[\[(\s*[^=]*?)*?]]/g,n=s.match(r);if(!n)continue;for(let _=0;_<n.length;_++)n[_]=n[_].replaceAll(/[[\]]/g,""),n[_].charAt(0)===":"&&(n[_]=n[_].slice(1));/target of redirect:\s*\[\[([^[\]]*)]]/i.test(l);let d=$.trim(RegExp.$1),h=/reason:[\t ]*?(.+)/i.exec(l),H=h&&h[1].trim()?h[1]:null,g=/source.*?:[\t ]*?(.+)/i.exec(l),f=g&&g[1].trim()?g[1]:null,A={type:"redirect",from:[],section:a,to:d,title:d,reason:H,source:f};for(let _ of n){let P={type:"redirect",to:d,id:x,title:_,action:""};A.from.push(P),V.push(P),x++}k.push(A)}else if(s.search(/category request/i)!==-1){let r=/\[\[[^[\]]+]]/.exec(s);if(!r)continue;r=r[0],r=r.replaceAll(/[[\]]/g,""),r=r.replaceAll(/category\s*:\s*/gi,"Category:"),r.charAt(0)===":"&&(r=r.slice(1));let n=l.slice(s.length),p=n.indexOf("Parent category/categories");p>=0&&(n=n.slice(Math.max(0,p)));let d=[],b=null,h=/\[\[\s*:\s*(category:[^[\]]*)]]/gi;do b=h.exec(n),b&&d.push(b[1]);while(b);let H={type:"category",title:r,section:a,id:x,action:"",parents:d.join(",")};x++,k.push(H),V.push(H)}}let o=$("<h3>Reviewing AfC redirect requests</h3>");W(o);let m=o.parent(),c=1,i=[{label:"Accept",value:"accept"},{label:"Decline",value:"decline"},{label:"Comment",value:"comment"},{label:"None",selected:!0,value:"none"}];for(let a of k){let l;l=a.to===void 0?"":a.to.replaceAll(/\s/g,"");let u=$("<ul>"),s=$("<li>");if(a.type==="redirect"){if(s.append("Redirect(s) to "),l){if(!a.to)for(let n=a.from.length-1;n>=0;n--)T.push({id:a.from[n].id,reason:"not-redirect"})}else for(let n=a.from.length-1;n>=0;n--)T.push({id:a.from[n].id,reason:"no-target"});a===""||a===" "?(s.append("Empty submission #"+c),c++):l.length>0?s.append($("<a>").attr("href",mw.config.get("wgArticlePath").replace("$1",encodeURIComponent(a.to))).attr("target","_blank").text(a.to)):s.append("<b>no target given</b>: ");let r=$("<ul>").appendTo(s);for(let n=0;n<a.from.length;n++){let p=a.from[n],d=p.title;d.replaceAll(/\s*/gi,"").length===0&&(d="<b>no title specified</b>, check the request details");let b=$("<ul>");a.reason&&b.append("<li>Reason: "+a.reason+"</li>"),a.source&&b.append("<li>Source: "+a.source+"</li>");let h='http://www.google.com/search?q="'+encodeURIComponent(d)+'"+-wikipedia.org';r.append($("<li>").append("From: "+d+" (<small><a href='"+h+`'" target="_blank">Google</a> <b>&middot;</b> <a href="http://wiki.nitrosworld.org/wiki/Special:WhatLinksHere/`+encodeURIComponent(d)+'" target="_blank">what links here</a>)</small><br/>').append(b).append($("<label>").attr("for","afcHelper_redirect_action_"+p.id).text("Action: ")).append(S("afcHelper_redirect_action_"+p.id,i,E(p.id))).append($("<div>").attr("id","afcHelper_redirect_extra_"+p.id)))}}else{let r=a.id;s.append("Category submission: ").append($("<a>").attr("href","/wiki/"+a.title).attr("title",a.title).text(a.title)).append("<br />").append($("<label>").attr("for","afcHelper_redirect_action_"+r).text("Action: ")).append(S("afcHelper_redirect_action_"+r,i,E(r))).append($("<div>").attr("id","afcHelper_redirect_extra_"+r))}u.append(s),m.append(u)}m.append($("<button>").attr("id","afcHelper_redirect_done_button").attr("name","afcHelper_redirect_done_button").text("Done").click(z));for(let a of T)$("#afcHelper_redirect_action_"+a.id).attr("value","decline"),F(a.id),$("#afcHelper_redirect_decline_"+a.id).attr("value",a.reason)}function E(e){return function(){F(e)}}function F(e){let t=$("#afcHelper_redirect_extra_"+e),o=$("#afcHelper_redirect_action_"+e).val();switch(t.html(""),o){case"accept":{V[e].type==="redirect"?(t.append('<label for="afcHelper_redirect_from_'+e+'">From: </label>'),t.append($("<input>").attr("type","text").attr("name","afcHelper_redirect_from_"+e).attr("id","afcHelper_redirect_from_"+e).attr("value",V[e].title)),t.html(t.html()+'&nbsp;<br /><label for="afcHelper_redirect_to_'+e+'">To: </label><input type="text" name="afcHelper_redirect_to_'+e+'" id="afcHelper_redirect_to_'+e+'" value="'+V[e].to+'" />'),t.html(t.html()+'<br /><label for="afcHelper_redirect_append_'+e+'">Template to append: (<a href="http://wiki.nitrosworld.org/wiki/Wikipedia:TMR" target="_blank">Help</a>)</label>'),t.html(t.html()+U("afcHelper_redirect_append_"+e,[{label:"None",selected:!0,value:"none"},{labelAndValue:"Frequently used",disabled:!0},{labelAndValue:"R from alternative language"},{labelAndValue:"R from alternative name"},{labelAndValue:"R from modification"},{labelAndValue:"R to section"},{labelAndValue:"R from diacritic"},{labelAndValue:"R to diacritic"},{labelAndValue:"From \u2013 abbreviation, capitalisation, and grammar",disabled:!0},{labelAndValue:"R from acronym"},{labelAndValue:"R from initialism"},{labelAndValue:"R from CamelCase"},{labelAndValue:"R from miscapitalisation"},{labelAndValue:"R from other capitalisation"},{labelAndValue:"R from modification"},{labelAndValue:"R from plural"},{label:"From parts of speach",value:"From parts of speach",disabled:!0},{labelAndValue:"R from adjective"},{labelAndValue:"R from adverb"},{labelAndValue:"R from common noun"},{labelAndValue:"R from gerund"},{labelAndValue:"R from proper noun"},{labelAndValue:"R from verb"},{labelAndValue:"From \u2013 spelling",disabled:!0},{labelAndValue:"R from alternative spelling"},{labelAndValue:"R from misspelling"},{labelAndValue:"R from American English"},{labelAndValue:"R from British English"},{labelAndValue:"R from ASCII-only"},{labelAndValue:"R from diacritic"},{labelAndValue:"R from ligature"},{labelAndValue:"R from stylization"},{labelAndValue:"R from alternative transliteration"},{labelAndValue:"R from Wade\u2013Giles romanization"},{labelAndValue:"From alternative names, general",disabled:!0},{labelAndValue:"R from alternative language"},{labelAndValue:"R from alternative name"},{labelAndValue:"R from former name"},{labelAndValue:"R from historic name"},{labelAndValue:"R from incomplete name"},{labelAndValue:"R from incorrect name"},{labelAndValue:"R from letter\u2013word combination"},{labelAndValue:"R from long name"},{labelAndValue:"R from portmanteau"},{labelAndValue:"R from predecessor company name"},{labelAndValue:"R from short name"},{labelAndValue:"R from sort name"},{labelAndValue:"R from less specific name"},{labelAndValue:"R from more specific name"},{labelAndValue:"R from antonym"},{labelAndValue:"R from eponym"},{labelAndValue:"R from synonym"},{labelAndValue:"R from Roman numerals"},{labelAndValue:"From alternative names, geography",disabled:!0},{labelAndValue:"R from Canadian settlement name"},{labelAndValue:"R from name and country"},{labelAndValue:"R from city and state"},{labelAndValue:"R from city and province"},{labelAndValue:"R from more specific geographic name"},{labelAndValue:"R from postal abbreviation"},{labelAndValue:"R from postal code"},{labelAndValue:"R from US postal abbreviation"},{labelAndValue:"From alternative names, organisms",disabled:!0},{labelAndValue:"R from scientific abbreviation"},{labelAndValue:"R from scientific name"},{labelAndValue:"R from alternative scientific name"},{labelAndValue:"R from monotypic taxon"},{labelAndValue:"From alternative names, people",disabled:!0},{labelAndValue:"R from birth name"},{labelAndValue:"R from given name"},{labelAndValue:"R from married name"},{labelAndValue:"R from name with title"},{labelAndValue:"R from non-neutral name"},{labelAndValue:"R from personal name"},{labelAndValue:"R from pseudonym"},{labelAndValue:"R from relative"},{labelAndValue:"R from spouse"},{labelAndValue:"R from surname"},{labelAndValue:"From alternative names, technical",disabled:!0},{labelAndValue:"R from Bluebook abbreviation"},{labelAndValue:"R from brand name"},{labelAndValue:"R from drug trade name"},{labelAndValue:"R from file name"},{labelAndValue:"R from Java package name"},{labelAndValue:"R from MathSciNet abbreviation"},{labelAndValue:"R from molecular formula"},{labelAndValue:"R from NLM abbreviation"},{labelAndValue:"R from product name"},{labelAndValue:"R from slogan"},{labelAndValue:"R from symbol"},{labelAndValue:"R from systematic abbreviations"},{labelAndValue:"R from technical name"},{labelAndValue:"R from trademark"},{labelAndValue:"From \u2013 navigation",disabled:!0},{labelAndValue:"R from file metadata link"},{labelAndValue:"R mentioned in hatnote"},{labelAndValue:"R from shortcut"},{labelAndValue:"R from template shortcut"},{labelAndValue:"From disambiguations",disabled:!0},{labelAndValue:"R from ambiguous term"},{labelAndValue:"R from incomplete disambiguation"},{labelAndValue:"R from incorrect disambiguation"},{labelAndValue:"R from other disambiguation"},{labelAndValue:"R from predictable disambiguation"},{labelAndValue:"R from unnecessary disambiguation"},{labelAndValue:"From mergers, duplicates, and moves",disabled:!0},{labelAndValue:"R from duplicated article"},{labelAndValue:"R with history"},{labelAndValue:"R from merge"},{labelAndValue:"R from move"},{labelAndValue:"R with old history"},{labelAndValue:"From fiction",disabled:!0},{labelAndValue:"R from fictional character"},{labelAndValue:"R from fictional element"},{labelAndValue:"R from fictional location"},{labelAndValue:"From related info",disabled:!0},{labelAndValue:"R from album"},{labelAndValue:"R from animal"},{labelAndValue:"R from book"},{labelAndValue:"R from catchphrase"},{labelAndValue:"R from domain name"},{labelAndValue:"R from top-level domain"},{labelAndValue:"R from film"},{labelAndValue:"R from gender"},{labelAndValue:"R from legislation"},{labelAndValue:"R from list topic"},{labelAndValue:"R from member"},{labelAndValue:"R from person"},{labelAndValue:"R from phrase"},{labelAndValue:"R from quotation"},{labelAndValue:"R from related word"},{labelAndValue:"R from school"},{labelAndValue:"R from song"},{labelAndValue:"R from subtopic"},{labelAndValue:"R from team"},{labelAndValue:"R from work"},{labelAndValue:"R from writer"},{labelAndValue:"R from Unicode"},{labelAndValue:"To \u2013 grammar, punctuation, and spelling",disabled:!0},{labelAndValue:"R to acronym"},{labelAndValue:"R to initialism"},{labelAndValue:"R to ASCII-only title"},{labelAndValue:"R to diacritic"},{labelAndValue:"R to ligature"},{labelAndValue:"R to plural"},{labelAndValue:"To alternative names",disabled:!0},{labelAndValue:"R to former name"},{labelAndValue:"R to historic name"},{labelAndValue:"R to joint biography"},{labelAndValue:"R to name with title"},{labelAndValue:"R to monotypic taxon"},{labelAndValue:"R to scientific name"},{labelAndValue:"R to systematic name"},{labelAndValue:"R to technical name"},{labelAndValue:"To \u2013 navigation and disambiguation",disabled:!0},{labelAndValue:"R to anchor"},{labelAndValue:"R to anthroponymy page"},{labelAndValue:"R to disambiguation page"},{labelAndValue:"R to list entry"},{labelAndValue:"R to section"},{labelAndValue:"To miscellaneous",disabled:!0},{labelAndValue:"R to decade"},{labelAndValue:"R to related topic"},{labelAndValue:"R to subpage"},{labelAndValue:"R to subtopic"},{labelAndValue:"R to TV episode list entry"},{label:"Custom - prompt me",value:"custom"}]))):(t.html('<label for="afcHelper_redirect_name_'+e+'">Category name: </label><input type="text" size="100" name="afcHelper_redirect_name_'+e+'" id="afcHelper_redirect_name_'+e+'" value="'+V[e].title+'" />'),t.html(t.html()+'<br /><label for="afcHelper_redirect_parents_'+e+'">Parent categories (comma-separated):</label><input type="text" size="100" id="afcHelper_redirect_parents_'+e+'" name="afcHelper_redirect_parents_'+e+'" value="'+V[e].parents+'" />'),t.append("<br />"),t.append($("<input>",{type:"checkbox",name:"afcHelper_redirect_container_"+e,id:"afcHelper_redirect_container_"+e})),t.append('<label for="afcHelper_redirect_container_'+e+'">This is a <a href="/wiki/Wikipedia:Container_category" title="Wikipedia:Container category">container category</a></label>'),t.html(t.html()+'<br /><input type="checkbox" name="afcHelper_redirect_container_'+e+'"')),t.html(t.html()+'<br /><label for="afcHelper_redirect_comment_'+e+'">Comment:</label><input type="text" size="100" id="afcHelper_redirect_comment_'+e+'" name="afcHelper_redirect_comment_'+e+'"/>');break}case"decline":{V[e].type==="redirect"?t.html('<label for="afcHelper_redirect_decline_'+e+'">Reason for decline: </label>'+U("afcHelper_redirect_decline_"+e,[{label:"Already exists",value:"exists"},{label:"Blank request",value:"blank"},{label:"No valid target specified",value:"no-target"},{label:"Unlikely search term",value:"unlikely"},{label:"Not a redirect request",value:"not-redirect"},{label:"Custom - reason below",selected:!0,value:"custom"}])):t.html('<label for="afcHelper_redirect_decline_'+e+'">Reason for decline: </label>'+U("afcHelper_redirect_decline_"+e,[{label:"Already exists",value:"exists"},{label:"Blank request",value:"blank"},{label:"Unlikely category",value:"unlikely"},{label:"Not a category request",value:"not-category"},{label:"Custom - reason below",selected:!0,value:"custom"}])),t.html(t.html()+'<br/><label for="afcHelper_redirect_comment_'+e+'">Comment: </label><input type="text" size="100" id="afcHelper_redirect_comment_'+e+'" name="afcHelper_redirect_comment_'+e+'"/>');break}case"none":{t.html("");break}default:t.html(t.html()+'<label for="afcHelper_redirect_comment_'+e+'">Comment: </label><input type="text" size="100" id="afcHelper_redirect_comment_'+e+'" name="afcHelper_redirect_comment_'+e+'"/>')}}async function z(){for(let[a,l]of V.entries()){let u=$("#afcHelper_redirect_action_"+a).val();l.action=u,u!=="none"&&(u==="accept"?l.type==="redirect"?(l.title=$("#afcHelper_redirect_from_"+a).val(),l.to=$("#afcHelper_redirect_to_"+a).val(),l.append=$("#afcHelper_redirect_append_"+a).val(),l.append==="custom"&&(l.append=prompt("Please enter the template to append to "+l.title+". Do not include the curly brackets.")),l.append=l.append==="none"||l.append===null?"":"{{"+l.append+"}}"):(l.title=$("#afcHelper_redirect_name_"+a).val(),l.parents=$("#afcHelper_redirect_parents_"+a).val(),l.container=$("#afcHelper_redirect_container_"+a).is(":checked")):u==="decline"&&(l.reason=$("#afcHelper_redirect_decline_"+a).val()),l.comment=$("#afcHelper_redirect_comment_"+a).val())}W('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');let e=function(a){$("#afcHelper_status").append(a)};$("#afcHelper_finish").html($("#afcHelper_finish").html()+'<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(w))+'?action=purge" title="'+w+'">Reload page</a>)</b></li></span></span>');let t=await q(w,e),o=0,m=0,c=0;e("<li>Processing "+k.length+" submission"+(k.length===1?"":"s")+"...</li>");for(let a of k){if(!t.includes(v[a.section])){e("<li>Skipping "+a.title+": Cannot find section. Perhaps it was modified in the mean time?</li>");continue}let l=v[a.section],u=t.indexOf(v[a.section]),s=u+l.length;if(a.type==="category")switch(a.action){case"accept":{let r="<!--Created by WP:AFC -->";a.container&&(r+=`
{{Container category}}`),a.parents!==""&&(r=a.parents.split(",").map(b=>"[["+b+"]]").join(`
`)),C(a.title,r,"Created via [[WP:AFC|Articles for Creation]]",!0);let n="{{subst:WPAFC/article|class=Cat}}",p=new mw.Title(a.title).getTalkPage().toText();C(p,n,"Placing WPAFC project banner",!0);let d=l.match(/==[^=]*==/)[0];l=d+`
{{AfC-c|a}}
`+l.slice(d.length),l+=a.comment===""?`
*{{subst:afc category}} ~~~~
`:`
*{{subst:afc category|accept|2=`+a.comment+`}} ~~~~
`,l+=`{{AfC-c|b}}
`,o++;break}case"decline":{let r=l.match(/==[^=]*==/)[0],n=M[a.reason];if(n===""?n=a.comment:a.comment!==""&&(n=n+": "+a.comment),n===""){$("afcHelper_status").html($("#afcHelper_status").html()+"<li>Skipping "+a.title+": No decline reason specified.</li>");continue}l=r+`
{{AfC-c|d}}
`+l.slice(r.length),l+=a.comment===""?`
*{{subst:afc category|`+a.reason+`}} ~~~~
`:`
*{{subst:afc category|decline|2=`+n+`}} ~~~~
`,l+=`{{AfC-c|b}}
`,m++;break}case"comment":{a.comment!==""&&(l+=`

{{afc comment|1=`+a.comment+` ~~~~}}
`),c++;break}}else{let r="",n="",p="",d=0,b=0,h=0,H=!1;for(let g=0;g<a.from.length;g++){let f=a.from[g];switch(f.action){case"accept":{let A=`#REDIRECT [[${f.to}]]${f.append?`

{{Redirect category shell|
${f.append}
}}`:""}`;C(f.title,A,"Redirected page to [["+f.to+"]] via [[WP:AFC|Articles for Creation]]",!0);let _=new mw.Title(f.title);if(!_.isTalkPage()){let P=_.getTalkPage().toText();C(P,"{{subst:WPAFC/redirect}}","Placing WPAFC project banner",!0)}r+=f.title+" &rarr; "+f.to,f.comment===""?r+=". ":(r+=": "+f.comment,H=!0),d++;break}case"decline":{let A=j[f.reason];if(A===""?A=f.comment:f.comment!==""&&(A=A+": "+f.comment),A===""){$("#afcHelper_status").html($("#afcHelper_status").html()+"<li>Skipping "+f.title+": No decline reason specified.</li>");continue}n+=f.reason==="blank"||f.reason==="not-redirect"?A+". ":f.title+" &rarr; "+f.to+": "+A+". ",b++;break}case"comment":{p+=f.title+": "+f.comment+". ",h++;break}}}let y="";if(d>0&&(y+=`
*{{subst:afc redirect|accept|2=`+r+" Thank you for your contributions to Wikipedia!}} ~~~~"),b>0&&(y+=`
*{{subst:afc redirect|decline|2=`+n+"}} ~~~~"),h>0&&(y+=`
*{{afc comment|1=`+p+"~~~~}}"),y+=`
`,!H&&d===a.from.length&&(y=d>1?`
*{{subst:afc redirect|all}} ~~~~
`:`
*{{subst:afc redirect}} ~~~~
`),d+b+h>0)if(d+b===a.from.length){let g=l.match(/==[^=]*==/)[0];d>0&&b>0?l=g+`
{{AfC-c|p}}`+l.slice(g.length):d>0?l=g+`
{{AfC-c|a}}`+l.slice(g.length):l=g+`
{{AfC-c|d}}`+l.slice(g.length),l+=y,l+=`{{AfC-c|b}}
`}else l+=y+`
`;o+=d,m+=b,c+=h}t=t.slice(0,Math.max(0,u))+l+t.slice(Math.max(0,s))}let i="Updating submission status:";o>0&&(i+=" accepting "+o+" request"+(o>1?"s":"")),m>0&&(o>0&&(i+=","),i+=" declining "+m+" request"+(m>1?"s":"")),c>0&&((o>0||m>0)&&(i+=","),i+=" commenting on "+c+" request"+(c>1?"s":"")),C(w,t,i,!1),$(document).ajaxStop(()=>{$("#afcHelper_finished_main").css("display","")})}async function q(e,t){t=t??function(){},t('<li id="afcHelper_get'+R(e)+'">Getting <a href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></li>");let o=await new mw.Api().get({action:"query",prop:"revisions",rvprop:"content",format:"json",indexpageids:!0,titles:e}),m=o.query.pageids[0];if(m==="-1")return t('The page <a class="new" href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a> does not exist"),"";let c=o.query.pages[m].revisions[0]["*"];return t('<li id="afcHelper_get'+R(e)+'">Got <a href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></li>"),c}function O(e){let t=/(\[){1,2}(?:https?:)?\/\/(en.wikipedia.org\/wiki|enwp.org)\/([^\s[\]|]+)([\s|])?((?:\[\[[^[\]]*]]|[^[\]])*)(]){1,2}/gi,o=e,m;for(;m=t.exec(o);){let c=decodeURI(m[3].replaceAll("_"," ")),i=decodeURI(m[5].replaceAll("_"," "));c===i&&(i="");let a="[["+c+(i?"|"+i:"")+"]]";e=e.replace(m[0],a)}return e}function U(e,t){return S(e,t).prop("outerHTML")}function S(e,t,o){let m=$("<select>").attr("name",e).attr("id",e);o!==null&&m.change(o);for(let c of t){c.labelAndValue&&(c.value=c.labelAndValue,c.label=c.labelAndValue);let i=$("<option>").appendTo(m).val(c.value).text(c.label);c.selected&&i.attr("selected","selected"),c.disabled&&i.attr("disabled","disabled")}return m}function W(e,t){if(arguments.length===0||e===""||e===null)return $("#display-message").empty().hide(),!0;{let o=$("#display-message");if(o.length===0)if(o=$('<div id="display-message" style="margin:1em;padding:0.5em 2.5%;border:solid 1px #ddd;background-color:#fcfcfc;font-size: 0.8em"></div>'),mw.util.$content.length>0)mw.util.$content.prepend(o);else return!1;return t&&o.prop("class","display-message-"+t),typeof e=="object"?(o.empty(),o.append(e)):o.html(e),o[0].scrollIntoView(),!0}}function R(e){return e.replaceAll(/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"")}function C(e,t,o,m,c){let i=mw.config.get("wgArticlePath");o+=N,$("#afcHelper_finished_wrapper").html('<span id="afcHelper_AJAX_finished_'+I+'" style="display:none">'+$("#afcHelper_finished_wrapper").html()+"</span>");let a=I;I++,$("#afcHelper_status").html($("#afcHelper_status").html()+'<li id="afcHelper_edit'+R(e)+'">Editing <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></li>");let l={action:"edit",title:e,text:t,summary:o};m&&(l.createonly=!0);let u=new mw.Api;if(u.postWithEditToken(l).done(s=>{s?.edit?.result&&s.edit.result==="Success"?$("#afcHelper_edit"+R(e)).html('Saved <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a>"):($("#afcHelper_edit"+R(e)).html('<span class="afcHelper_notice"><b>Edit failed on <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: "+JSON.stringify(s)),console.error("Edit failed on %s (%s). Error info: %s",i.replace("$1",encodeURI(e)),e,JSON.stringify(s)))}).fail(s=>{m&&s==="articleexists"?$("#afcHelper_edit"+R(e)).html('<span class="afcHelper_notice"><b>Edit failed on <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: The article already exists!"):$("#afcHelper_edit"+R(e)).html('<span class="afcHelper_notice"><b>Edit failed on <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: "+s)}).always(()=>{$("#afcHelper_AJAX_finished_"+a).css("display","")}),!c&&$(".patrollink").length>0){let s=$(".patrollink a").attr("href"),r=mw.util.getParamValue("rcid",s);if(r){$("#afcHelper_status").html($("#afcHelper_status").html()+'<li id="afcHelper_patrol'+R(e)+'">Marking <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+" as patrolled</a></li>");let n={action:"patrol",format:"json",rcid:r};u.postWithToken("patrol",n).done(p=>{p?$("#afcHelper_patrol"+R(e)).html('Marked <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a> as patrolled"):($("#afcHelper_patrol"+R(e)).html('<span class="afcHelper_notice"><b>Patrolling failed on <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span> with an unknown error"),console.error("Patrolling failed on %s (%s) with an unknown error.",i.replace("$1",encodeURI(e)),e))}).fail(p=>{$("#afcHelper_patrol"+R(e)).html('<span class="afcHelper_notice"><b>Patrolling failed on <a href="'+i.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: "+p)})}}}mw.loader.using(["mediawiki.api","mediawiki.util"],()=>{mw.util.addCSS(`
#display-message * {
    margin: revert;
    border: revert;
    background: revert;
    padding: revert;
}`);let e=mw.util.addPortletLink(mw.config.get("skin")==="minerva"?"p-tb":"p-cactions","#","Review AFC/RC","ca-afcrhs","Review","a");$(e).click(t=>{t.preventDefault(),k.length=0,v.length=0,x=0,V.length=0,T.length=0,D()})})})();})();

// </pre>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc2NyaXB0cy9BRkNSSFMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKFxuICAgICAgICBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgIT09ICdXaWtpcGVkaWE6QXJ0aWNsZXNfZm9yX2NyZWF0aW9uL1JlZGlyZWN0cycgJiZcbiAgICAgICAgbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpICE9PSAnV2lraXBlZGlhOkFydGljbGVzX2Zvcl9jcmVhdGlvbi9DYXRlZ29yaWVzJ1xuICAgIClcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVkaXJlY3RQYWdlTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKS5yZXBsYWNlQWxsKCdfJywgJyAnKTtcbiAgICBjb25zdCByZWRpcmVjdFN1Ym1pc3Npb25zID0gW107XG4gICAgbGV0IHJlZGlyZWN0U2VjdGlvbnMgPSBbXTtcbiAgICBjb25zdCBzdW1tYXJ5QWR2ZXJ0ID0gJyAoW1tVc2VyOkVlaml0NDMvc2NyaXB0cy9BRkNSSFN8QUZDUkhTIDJdXSknO1xuICAgIGxldCBudW1iZXJUb3RhbCA9IDA7XG4gICAgbGV0IGFqYXhOdW1iZXIgPSAwO1xuICAgIGNvbnN0IHN1Ym1pc3Npb25zID0gW107XG4gICAgY29uc3QgbmVlZHNVcGRhdGUgPSBbXTtcbiAgICBjb25zdCByZWRpcmVjdERlY2xpbmVSZWFzb25zID0ge1xuICAgICAgICAnZXhpc3RzJzogJ1RoZSB0aXRsZSB5b3Ugc3VnZ2VzdGVkIGFscmVhZHkgZXhpc3RzIG9uIFdpa2lwZWRpYScsXG4gICAgICAgICdibGFuayc6ICdXZSBjYW5ub3QgYWNjZXB0IGVtcHR5IHN1Ym1pc3Npb25zJyxcbiAgICAgICAgJ25vLXRhcmdldCc6XG4gICAgICAgICAgICAnIEEgcmVkaXJlY3QgY2Fubm90IGJlIGNyZWF0ZWQgdW5sZXNzIHRoZSB0YXJnZXQgaXMgYW4gZXhpc3RpbmcgYXJ0aWNsZS4gRWl0aGVyIHlvdSBoYXZlIG5vdCBzcGVjaWZpZWQgdGhlIHRhcmdldCwgb3IgdGhlIHRhcmdldCBkb2VzIG5vdCBleGlzdCcsXG4gICAgICAgICd1bmxpa2VseSc6ICdUaGUgdGl0bGUgeW91IHN1Z2dlc3RlZCBzZWVtcyB1bmxpa2VseS4gQ291bGQgeW91IHByb3ZpZGUgYSBzb3VyY2Ugc2hvd2luZyB0aGF0IGl0IGlzIGEgY29tbW9ubHkgdXNlZCBhbHRlcm5hdGUgbmFtZT8nLFxuICAgICAgICAnbm90LXJlZGlyZWN0JzogJ1RoaXMgcmVxdWVzdCBpcyBub3QgYSByZWRpcmVjdCByZXF1ZXN0JyxcbiAgICAgICAgJ2N1c3RvbSc6ICcnLFxuICAgIH07XG4gICAgY29uc3QgY2F0ZWdvcnlEZWNsaW5lUmVhc29ucyA9IHtcbiAgICAgICAgJ2V4aXN0cyc6ICdUaGUgY2F0ZWdvcnkgeW91IHN1Z2dlc3RlZCBhbHJlYWR5IGV4aXN0cyBvbiBXaWtpcGVkaWEnLFxuICAgICAgICAnYmxhbmsnOiAnV2UgY2Fubm90IGFjY2VwdCBlbXB0eSBzdWJtaXNzaW9ucycsXG4gICAgICAgICd1bmxpa2VseSc6ICdJdCBzZWVtcyB1bmxpa2VseSB0aGF0IHRoZXJlIGFyZSBlbm91Z2ggcGFnZXMgdG8gc3VwcG9ydCB0aGlzIGNhdGVnb3J5JyxcbiAgICAgICAgJ25vdC1jYXRlZ29yeSc6ICdUaGlzIHJlcXVlc3QgaXMgbm90IGEgY2F0ZWdvcnkgcmVxdWVzdCcsXG4gICAgICAgICdjdXN0b20nOiAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgQUxMT1dFRF9VU0VSX0dST1VQUyA9IG5ldyBTZXQoWydleHRlbmRlZGNvbmZpcm1lZCcsICdzeXNvcCddKTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSByZWRpcmVjdCBoYW5kbGVyLlxuICAgICAqL1xuICAgIGFzeW5jIGZ1bmN0aW9uIHJlZGlyZWN0SW5pdCgpIHtcbiAgICAgICAgaWYgKCFtdy5jb25maWcuZ2V0KCd3Z1VzZXJHcm91cHMnKT8uc29tZSgoZ3JvdXApID0+IEFMTE9XRURfVVNFUl9HUk9VUFMuaGFzKGdyb3VwKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkQ29uZmlybWVkTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGV4dGVuZGVkQ29uZmlybWVkTGluay5ocmVmID0gbXcudXRpbC5nZXRVcmwoJ1dpa2lwZWRpYTpFeHRlbmRlZCBjb25maXJtZWQnKTtcbiAgICAgICAgICAgIGV4dGVuZGVkQ29uZmlybWVkTGluay50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgICAgIGV4dGVuZGVkQ29uZmlybWVkTGluay50ZXh0Q29udGVudCA9ICdleHRlbmRlZCBjb25maXJtZWQnO1xuXG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudGF0aW9uTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGRvY3VtZW50YXRpb25MaW5rLmhyZWYgPSBtdy51dGlsLmdldFVybCgnVXNlcjpFZWppdDQzL3NjcmlwdHMvQUZDUkhTJyk7XG4gICAgICAgICAgICBkb2N1bWVudGF0aW9uTGluay50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgICAgIGRvY3VtZW50YXRpb25MaW5rLnRleHRDb250ZW50ID0gJ3NjcmlwdCBkb2N1bWVudGF0aW9uJztcblxuICAgICAgICAgICAgbWVzc2FnZUNvbnRhaW5lci5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0Vycm9yOiBBRkNSSFMgcmVxdWlyZXMgJyxcbiAgICAgICAgICAgICAgICBleHRlbmRlZENvbmZpcm1lZExpbmssXG4gICAgICAgICAgICAgICAgJyBwZXJtaXNzaW9ucyB0byB1c2UuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgJyxcbiAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uTGluayxcbiAgICAgICAgICAgICAgICAnLicsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBtdy5ub3RpZmljYXRpb24ubm90aWZ5KG1lc3NhZ2VDb250YWluZXIsIHsgdHlwZTogJ2Vycm9yJywgYXV0b0hpZGVTZWNvbmRzOiAnbG9uZycgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYWdlVGV4dCA9IGF3YWl0IGdldFBhZ2VUZXh0KHJlZGlyZWN0UGFnZU5hbWUpO1xuICAgICAgICAvLyBDbGVhbnVwIHRoZSB3aWtpcGVkaWEgbGlua3MgZm9yIHByZXZlbnRpbmcgc3R1ZmYgbGlrZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/ZGlmZj01NzYyNDQwNjcmb2xkaWQ9NTc2MjIxNDM3XG4gICAgICAgIHBhZ2VUZXh0ID0gY2xlYW51cExpbmtzKHBhZ2VUZXh0KTtcblxuICAgICAgICAvLyBGaXJzdCwgc3RyaXAgb3V0IHRoZSBwYXJ0cyBiZWZvcmUgdGhlIGZpcnN0IHNlY3Rpb25cbiAgICAgICAgY29uc3Qgc2VjdGlvblJlZ2V4ID0gLz09Lio/PT0vO1xuICAgICAgICBwYWdlVGV4dCA9IHBhZ2VUZXh0LnNsaWNlKE1hdGgubWF4KDAsIHBhZ2VUZXh0LnNlYXJjaChzZWN0aW9uUmVnZXgpKSk7XG4gICAgICAgIC8vIFRoZW4gc3BsaXQgaXQgaW50byB0aGUgcmVzdCBvZiB0aGUgc2VjdGlvbnNcbiAgICAgICAgcmVkaXJlY3RTZWN0aW9ucyA9IHBhZ2VUZXh0Lm1hdGNoKC9ePT0uKj89PSQoKFxccj9cXG4/KSg/IT09W149XSkuKikqL2dpbSk7XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIHNlY3Rpb25zXG4gICAgICAgIGZvciAoY29uc3QgW2luZGV4LCByZWRpcmVjdFNlY3Rpb25dIG9mIHJlZGlyZWN0U2VjdGlvbnMuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9zZWQgPSAvKHt7XFxzKmFmYyg/IVxccytjb21tZW50KXx0aGlzIGlzIGFuIGFyY2hpdmVkIGRpc2N1c3Npb24pL2kudGVzdChyZWRpcmVjdFNlY3Rpb24pO1xuICAgICAgICAgICAgaWYgKCFjbG9zZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSByZWRpcmVjdFNlY3Rpb24ubWF0Y2goc2VjdGlvblJlZ2V4KVswXTtcbiAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLnNlYXJjaCgvcmVkaXJlY3QgcmVxdWVzdC9pKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lraWxpbmtSZWdleCA9IC9cXFtcXFsoXFxzKltePV0qPykqP11dL2c7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gaGVhZGVyLm1hdGNoKHdpa2lsaW5rUmVnZXgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmtzKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBsaW5rcy5sZW5ndGg7IGwrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NbbF0gPSBsaW5rc1tsXS5yZXBsYWNlQWxsKC9bW1xcXV0vZywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmtzW2xdLmNoYXJBdCgwKSA9PT0gJzonKSBsaW5rc1tsXSA9IGxpbmtzW2xdLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gL3RhcmdldCBvZiByZWRpcmVjdDpcXHMqXFxbXFxbKFteW1xcXV0qKV1dL2k7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2V4LnRlc3QocmVkaXJlY3RTZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG8gPSAkLnRyaW0oUmVnRXhwLiQxKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb25SZSA9IC9yZWFzb246W1xcdCBdKj8oLispL2k7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYXNvbk1hdGNoID0gcmVhc29uUmUuZXhlYyhyZWRpcmVjdFNlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb24gPSByZWFzb25NYXRjaCAmJiByZWFzb25NYXRjaFsxXS50cmltKCkgPyByZWFzb25NYXRjaFsxXSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlUmUgPSAvc291cmNlLio/OltcXHQgXSo/KC4rKS9pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2VNYXRjaCA9IHNvdXJjZVJlLmV4ZWMocmVkaXJlY3RTZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gc291cmNlTWF0Y2ggJiYgc291cmNlTWF0Y2hbMV0udHJpbSgpID8gc291cmNlTWF0Y2hbMV0gOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXJUb3RhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24uZnJvbS5wdXNoKHN1Yik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9ucy5wdXNoKHN1Yik7XG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJUb3RhbCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0U3VibWlzc2lvbnMucHVzaChzdWJtaXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWRlci5zZWFyY2goL2NhdGVnb3J5IHJlcXVlc3QvaSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgYSB3aWtpbGluayBpbiB0aGUgaGVhZGVyLCBhbmQgYXNzdW1lIGl0J3MgdGhlIGNhdGVnb3J5IHRvIGNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnlOYW1lID0gL1xcW1xcW1teW1xcXV0rXV0vLmV4ZWMoaGVhZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYXRlZ29yeU5hbWUpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSBjYXRlZ29yeU5hbWVbMF07XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZSA9IGNhdGVnb3J5TmFtZS5yZXBsYWNlQWxsKC9bW1xcXV0vZywgJycpO1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSBjYXRlZ29yeU5hbWUucmVwbGFjZUFsbCgvY2F0ZWdvcnlcXHMqOlxccyovZ2ksICdDYXRlZ29yeTonKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5TmFtZS5jaGFyQXQoMCkgPT09ICc6JykgY2F0ZWdvcnlOYW1lID0gY2F0ZWdvcnlOYW1lLnNsaWNlKDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHBhcmVudCBjYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXF1ZXN0VGV4dCA9IHJlZGlyZWN0U2VjdGlvbi5zbGljZShoZWFkZXIubGVuZ3RoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgY2F0ZWdvcmllcyBsaXN0ZWQgdW5kZXIgdGhlIFwiUGFyZW50IGNhdGVnb3J5L2NhdGVnb3JpZXNcIiBoZWFkaW5nLFxuICAgICAgICAgICAgICAgICAgICAvLyAqTk9UKiBhbnkgY2F0ZWdvcmllcyBsaXN0ZWQgdW5kZXIgXCJFeGFtcGxlIHBhZ2VzIHdoaWNoIGJlbG9uZyB0byB0aGlzIGNhdGVnb3J5XCIuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEhlYWRpbmdJbmRleCA9IHJlcXVlc3RUZXh0LmluZGV4T2YoJ1BhcmVudCBjYXRlZ29yeS9jYXRlZ29yaWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRIZWFkaW5nSW5kZXggPj0gMCkgcmVxdWVzdFRleHQgPSByZXF1ZXN0VGV4dC5zbGljZShNYXRoLm1heCgwLCBwYXJlbnRIZWFkaW5nSW5kZXgpKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDYXRlZ29yaWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnRDYXRlZ29yeU1hdGNoID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Q2F0ZWdvcmllc1JlZ2V4ID0gL1xcW1xcW1xccyo6XFxzKihjYXRlZ29yeTpbXltcXF1dKildXS9naTtcbiAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q2F0ZWdvcnlNYXRjaCA9IHBhcmVudENhdGVnb3JpZXNSZWdleC5leGVjKHJlcXVlc3RUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRDYXRlZ29yeU1hdGNoKSBwYXJlbnRDYXRlZ29yaWVzLnB1c2gocGFyZW50Q2F0ZWdvcnlNYXRjaFsxXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHBhcmVudENhdGVnb3J5TWF0Y2gpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2F0ZWdvcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bWJlclRvdGFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudHM6IHBhcmVudENhdGVnb3JpZXMuam9pbignLCcpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBudW1iZXJUb3RhbCsrO1xuICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFN1Ym1pc3Npb25zLnB1c2goc3VibWlzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2goc3VibWlzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAvLyBFbmQgaWYgIWNsb3NlZFxuICAgICAgICB9IC8vIEVuZCBsb29wIG92ZXIgc2VjdGlvbnNcblxuICAgICAgICAvLyBCdWlsZCB0aGUgZm9ybVxuICAgICAgICBjb25zdCAkZm9ybSA9ICQoJzxoMz5SZXZpZXdpbmcgQWZDIHJlZGlyZWN0IHJlcXVlc3RzPC9oMz4nKTtcbiAgICAgICAgZGlzcGxheU1lc3NhZ2UoJGZvcm0pO1xuICAgICAgICBjb25zdCAkbWVzc2FnZURpdiA9ICRmb3JtLnBhcmVudCgpO1xuICAgICAgICAvLyBMYXlvdXQgdGhlIHRleHRcbiAgICAgICAgbGV0IHJlZGlyZWN0RW1wdHkgPSAxO1xuICAgICAgICBjb25zdCBBQ1RJT05TID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogJ0FjY2VwdCcsIHZhbHVlOiAnYWNjZXB0JyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0RlY2xpbmUnLCB2YWx1ZTogJ2RlY2xpbmUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQ29tbWVudCcsIHZhbHVlOiAnY29tbWVudCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdOb25lJywgc2VsZWN0ZWQ6IHRydWUsIHZhbHVlOiAnbm9uZScgfSxcbiAgICAgICAgXTtcbiAgICAgICAgZm9yIChjb25zdCByZWRpcmVjdFN1Ym1pc3Npb24gb2YgcmVkaXJlY3RTdWJtaXNzaW9ucykge1xuICAgICAgICAgICAgbGV0IHN1Ym1pc3Npb25OYW1lO1xuICAgICAgICAgICAgc3VibWlzc2lvbk5hbWUgPSByZWRpcmVjdFN1Ym1pc3Npb24udG8gPT09IHVuZGVmaW5lZCA/ICcnIDogcmVkaXJlY3RTdWJtaXNzaW9uLnRvLnJlcGxhY2VBbGwoL1xccy9nLCAnJyk7XG4gICAgICAgICAgICBjb25zdCAkdGhpc1N1Ykxpc3QgPSAkKCc8dWw+Jyk7XG4gICAgICAgICAgICBjb25zdCAkdGhpc1N1Ykxpc3RFbGVtZW50ID0gJCgnPGxpPicpO1xuICAgICAgICAgICAgaWYgKHJlZGlyZWN0U3VibWlzc2lvbi50eXBlID09PSAncmVkaXJlY3QnKSB7XG4gICAgICAgICAgICAgICAgJHRoaXNTdWJMaXN0RWxlbWVudC5hcHBlbmQoJ1JlZGlyZWN0KHMpIHRvICcpO1xuICAgICAgICAgICAgICAgIGlmICghc3VibWlzc2lvbk5hbWUpXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gcmVkaXJlY3RTdWJtaXNzaW9uLmZyb20ubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzVXBkYXRlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZWRpcmVjdFN1Ym1pc3Npb24uZnJvbVtpbmRleF0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAnbm8tdGFyZ2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFyZWRpcmVjdFN1Ym1pc3Npb24udG8pXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gcmVkaXJlY3RTdWJtaXNzaW9uLmZyb20ubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzVXBkYXRlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZWRpcmVjdFN1Ym1pc3Npb24uZnJvbVtpbmRleF0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAnbm90LXJlZGlyZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0U3VibWlzc2lvbiA9PT0gJycgfHwgcmVkaXJlY3RTdWJtaXNzaW9uID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgJHRoaXNTdWJMaXN0RWxlbWVudC5hcHBlbmQoJ0VtcHR5IHN1Ym1pc3Npb24gIycgKyByZWRpcmVjdEVtcHR5KTtcbiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RFbXB0eSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VibWlzc2lvbk5hbWUubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICAgICAgJHRoaXNTdWJMaXN0RWxlbWVudC5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCc8YT4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdocmVmJywgbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlUGF0aCcpLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0U3VibWlzc2lvbi50bykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCd0YXJnZXQnLCAnX2JsYW5rJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dChyZWRpcmVjdFN1Ym1pc3Npb24udG8pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGVsc2UgJHRoaXNTdWJMaXN0RWxlbWVudC5hcHBlbmQoJzxiPm5vIHRhcmdldCBnaXZlbjwvYj46ICcpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgJGZyb21MaXN0ID0gJCgnPHVsPicpLmFwcGVuZFRvKCR0aGlzU3ViTGlzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgcmVkaXJlY3RTdWJtaXNzaW9uLmZyb20ubGVuZ3RoOyBsKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnJvbSA9IHJlZGlyZWN0U3VibWlzc2lvbi5mcm9tW2xdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG9BcnRpY2xlID0gZnJvbS50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvQXJ0aWNsZS5yZXBsYWNlQWxsKC9cXHMqL2dpLCAnJykubGVuZ3RoID09PSAwKSB0b0FydGljbGUgPSAnPGI+bm8gdGl0bGUgc3BlY2lmaWVkPC9iPiwgY2hlY2sgdGhlIHJlcXVlc3QgZGV0YWlscyc7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhc29uQW5kU291cmNlID0gJCgnPHVsPicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3RTdWJtaXNzaW9uLnJlYXNvbikgcmVhc29uQW5kU291cmNlLmFwcGVuZCgnPGxpPlJlYXNvbjogJyArIHJlZGlyZWN0U3VibWlzc2lvbi5yZWFzb24gKyAnPC9saT4nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0U3VibWlzc2lvbi5zb3VyY2UpIHJlYXNvbkFuZFNvdXJjZS5hcHBlbmQoJzxsaT5Tb3VyY2U6ICcgKyByZWRpcmVjdFN1Ym1pc3Npb24uc291cmNlICsgJzwvbGk+Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ29vZ2xlU2VhcmNoVXJsID0gJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT1cIicgKyBlbmNvZGVVUklDb21wb25lbnQodG9BcnRpY2xlKSArICdcIistd2lraXBlZGlhLm9yZyc7XG4gICAgICAgICAgICAgICAgICAgICRmcm9tTGlzdC5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCc8bGk+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRnJvbTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0FydGljbGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKDxzbWFsbD48YSBocmVmPSdcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGVTZWFyY2hVcmwgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcJ1wiIHRhcmdldD1cIl9ibGFua1wiPkdvb2dsZTwvYT4gPGI+Jm1pZGRvdDs8L2I+IDxhIGhyZWY9XCJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOldoYXRMaW5rc0hlcmUvJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQodG9BcnRpY2xlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+d2hhdCBsaW5rcyBoZXJlPC9hPik8L3NtYWxsPjxici8+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChyZWFzb25BbmRTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGxhYmVsPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZm9yJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9hY3Rpb25fJyArIGZyb20uaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dCgnQWN0aW9uOiAnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVTZWxlY3RPYmplY3QoJ2FmY0hlbHBlcl9yZWRpcmVjdF9hY3Rpb25fJyArIGZyb20uaWQsIEFDVElPTlMsIHJlZGlyZWN0TWFrZUFjdGlvbkNoYW5nZShmcm9tLmlkKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGRpdj4nKS5hdHRyKCdpZCcsICdhZmNIZWxwZXJfcmVkaXJlY3RfZXh0cmFfJyArIGZyb20uaWQpKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YklkID0gcmVkaXJlY3RTdWJtaXNzaW9uLmlkO1xuICAgICAgICAgICAgICAgICR0aGlzU3ViTGlzdEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgnQ2F0ZWdvcnkgc3VibWlzc2lvbjogJylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJzxhPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2hyZWYnLCAnL3dpa2kvJyArIHJlZGlyZWN0U3VibWlzc2lvbi50aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigndGl0bGUnLCByZWRpcmVjdFN1Ym1pc3Npb24udGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQocmVkaXJlY3RTdWJtaXNzaW9uLnRpdGxlKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCc8YnIgLz4nKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGxhYmVsPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2ZvcicsICdhZmNIZWxwZXJfcmVkaXJlY3RfYWN0aW9uXycgKyBzdWJJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dCgnQWN0aW9uOiAnKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKGdlbmVyYXRlU2VsZWN0T2JqZWN0KCdhZmNIZWxwZXJfcmVkaXJlY3RfYWN0aW9uXycgKyBzdWJJZCwgQUNUSU9OUywgcmVkaXJlY3RNYWtlQWN0aW9uQ2hhbmdlKHN1YklkKSkpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGRpdj4nKS5hdHRyKCdpZCcsICdhZmNIZWxwZXJfcmVkaXJlY3RfZXh0cmFfJyArIHN1YklkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkdGhpc1N1Ykxpc3QuYXBwZW5kKCR0aGlzU3ViTGlzdEVsZW1lbnQpO1xuICAgICAgICAgICAgJG1lc3NhZ2VEaXYuYXBwZW5kKCR0aGlzU3ViTGlzdCk7XG4gICAgICAgIH0gLy8gRW5kIGxvb3Agb3ZlciBzZWN0aW9uc1xuICAgICAgICAkbWVzc2FnZURpdi5hcHBlbmQoXG4gICAgICAgICAgICAkKCc8YnV0dG9uPicpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ2lkJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9kb25lX2J1dHRvbicpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ25hbWUnLCAnYWZjSGVscGVyX3JlZGlyZWN0X2RvbmVfYnV0dG9uJylcbiAgICAgICAgICAgICAgICAudGV4dCgnRG9uZScpXG4gICAgICAgICAgICAgICAgLmNsaWNrKHJlZGlyZWN0UGVyZm9ybUFjdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgbmVlZHNVcGRhdGUpIHtcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfYWN0aW9uXycgKyBlbGVtZW50LmlkKS5hdHRyKCd2YWx1ZScsICdkZWNsaW5lJyk7XG4gICAgICAgICAgICByZWRpcmVjdE9uQWN0aW9uQ2hhbmdlKGVsZW1lbnQuaWQpO1xuICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9kZWNsaW5lXycgKyBlbGVtZW50LmlkKS5hdHRyKCd2YWx1ZScsIGVsZW1lbnQucmVhc29uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsaWFzIG9mIHJlZGlyZWN0T25BY3Rpb25DaGFuZ2UuXG4gICAgICogQHBhcmFtIGlkIFRoZSByZXF1ZXN0IGlkLlxuICAgICAqIEByZXR1cm5zIFRoZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWRpcmVjdE1ha2VBY3Rpb25DaGFuZ2UoaWQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlZGlyZWN0T25BY3Rpb25DaGFuZ2UoaWQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm0gYWN0aW9ucyBvbiBjaGFuZ2UuXG4gICAgICogQHBhcmFtIGlkIFRoZSByZXF1ZXN0IGlkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZGlyZWN0T25BY3Rpb25DaGFuZ2UoaWQpIHtcbiAgICAgICAgY29uc3QgJGV4dHJhID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9leHRyYV8nICsgaWQpO1xuICAgICAgICBjb25zdCBzZWxlY3RWYWx1ZSA9ICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfYWN0aW9uXycgKyBpZCkudmFsKCk7XG4gICAgICAgICRleHRyYS5odG1sKCcnKTsgLy8gQmxhbmsgaXQgZmlyc3RcbiAgICAgICAgc3dpdGNoIChzZWxlY3RWYWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnYWNjZXB0Jzoge1xuICAgICAgICAgICAgICAgIGlmIChzdWJtaXNzaW9uc1tpZF0udHlwZSA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuYXBwZW5kKCc8bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X2Zyb21fJyArIGlkICsgJ1wiPkZyb206IDwvbGFiZWw+Jyk7XG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCc8aW5wdXQ+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigndHlwZScsICd0ZXh0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScsICdhZmNIZWxwZXJfcmVkaXJlY3RfZnJvbV8nICsgaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2lkJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9mcm9tXycgKyBpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigndmFsdWUnLCBzdWJtaXNzaW9uc1tpZF0udGl0bGUpLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyZuYnNwOzxiciAvPjxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfdG9fJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj5UbzogPC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYWZjSGVscGVyX3JlZGlyZWN0X3RvXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgaWQ9XCJhZmNIZWxwZXJfcmVkaXJlY3RfdG9fJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB2YWx1ZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25zW2lkXS50byArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIC8+JyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGJyIC8+PGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9hcHBlbmRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj5UZW1wbGF0ZSB0byBhcHBlbmQ6ICg8YSBocmVmPVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOlRNUlwiIHRhcmdldD1cIl9ibGFua1wiPkhlbHA8L2E+KTwvbGFiZWw+JyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZVNlbGVjdCgnYWZjSGVscGVyX3JlZGlyZWN0X2FwcGVuZF8nICsgaWQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ05vbmUnLCBzZWxlY3RlZDogdHJ1ZSwgdmFsdWU6ICdub25lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcmVxdWVudGx5IHVzZWQnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWx0ZXJuYXRpdmUgbGFuZ3VhZ2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhbHRlcm5hdGl2ZSBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbW9kaWZpY2F0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIHNlY3Rpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBkaWFjcml0aWMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gZGlhY3JpdGljJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIFx1MjAxMyBhYmJyZXZpYXRpb24sIGNhcGl0YWxpc2F0aW9uLCBhbmQgZ3JhbW1hcicsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhY3JvbnltJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gaW5pdGlhbGlzbScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIENhbWVsQ2FzZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1pc2NhcGl0YWxpc2F0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gb3RoZXIgY2FwaXRhbGlzYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtb2RpZmljYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwbHVyYWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdGcm9tIHBhcnRzIG9mIHNwZWFjaCcsIHZhbHVlOiAnRnJvbSBwYXJ0cyBvZiBzcGVhY2gnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWRqZWN0aXZlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWR2ZXJiJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gY29tbW9uIG5vdW4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBnZXJ1bmQnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwcm9wZXIgbm91bicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHZlcmInIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gXHUyMDEzIHNwZWxsaW5nJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFsdGVybmF0aXZlIHNwZWxsaW5nJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbWlzc3BlbGxpbmcnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBBbWVyaWNhbiBFbmdsaXNoJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gQnJpdGlzaCBFbmdsaXNoJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gQVNDSUktb25seScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGRpYWNyaXRpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGxpZ2F0dXJlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3R5bGl6YXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhbHRlcm5hdGl2ZSB0cmFuc2xpdGVyYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBXYWRlXHUyMDEzR2lsZXMgcm9tYW5pemF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIGFsdGVybmF0aXZlIG5hbWVzLCBnZW5lcmFsJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFsdGVybmF0aXZlIGxhbmd1YWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWx0ZXJuYXRpdmUgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGZvcm1lciBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gaGlzdG9yaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGluY29tcGxldGUgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGluY29ycmVjdCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbGV0dGVyXHUyMDEzd29yZCBjb21iaW5hdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGxvbmcgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBvcnRtYW50ZWF1JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcHJlZGVjZXNzb3IgY29tcGFueSBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc2hvcnQgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNvcnQgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGxlc3Mgc3BlY2lmaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1vcmUgc3BlY2lmaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFudG9ueW0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBlcG9ueW0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBzeW5vbnltJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gUm9tYW4gbnVtZXJhbHMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gYWx0ZXJuYXRpdmUgbmFtZXMsIGdlb2dyYXBoeScsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBDYW5hZGlhbiBzZXR0bGVtZW50IG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBuYW1lIGFuZCBjb3VudHJ5JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gY2l0eSBhbmQgc3RhdGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBjaXR5IGFuZCBwcm92aW5jZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1vcmUgc3BlY2lmaWMgZ2VvZ3JhcGhpYyBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcG9zdGFsIGFiYnJldmlhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBvc3RhbCBjb2RlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gVVMgcG9zdGFsIGFiYnJldmlhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBhbHRlcm5hdGl2ZSBuYW1lcywgb3JnYW5pc21zJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNjaWVudGlmaWMgYWJicmV2aWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc2NpZW50aWZpYyBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWx0ZXJuYXRpdmUgc2NpZW50aWZpYyBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbW9ub3R5cGljIHRheG9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIGFsdGVybmF0aXZlIG5hbWVzLCBwZW9wbGUnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYmlydGggbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGdpdmVuIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtYXJyaWVkIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBuYW1lIHdpdGggdGl0bGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBub24tbmV1dHJhbCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcGVyc29uYWwgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBzZXVkb255bScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHJlbGF0aXZlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3BvdXNlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3VybmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBhbHRlcm5hdGl2ZSBuYW1lcywgdGVjaG5pY2FsJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIEJsdWVib29rIGFiYnJldmlhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGJyYW5kIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBkcnVnIHRyYWRlIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBmaWxlIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBKYXZhIHBhY2thZ2UgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIE1hdGhTY2lOZXQgYWJicmV2aWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbW9sZWN1bGFyIGZvcm11bGEnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBOTE0gYWJicmV2aWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcHJvZHVjdCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc2xvZ2FuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3ltYm9sJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3lzdGVtYXRpYyBhYmJyZXZpYXRpb25zJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gdGVjaG5pY2FsIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB0cmFkZW1hcmsnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gXHUyMDEzIG5hdmlnYXRpb24nLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZmlsZSBtZXRhZGF0YSBsaW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIG1lbnRpb25lZCBpbiBoYXRub3RlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc2hvcnRjdXQnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB0ZW1wbGF0ZSBzaG9ydGN1dCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBkaXNhbWJpZ3VhdGlvbnMnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYW1iaWd1b3VzIHRlcm0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBpbmNvbXBsZXRlIGRpc2FtYmlndWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gaW5jb3JyZWN0IGRpc2FtYmlndWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gb3RoZXIgZGlzYW1iaWd1YXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwcmVkaWN0YWJsZSBkaXNhbWJpZ3VhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHVubmVjZXNzYXJ5IGRpc2FtYmlndWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIG1lcmdlcnMsIGR1cGxpY2F0ZXMsIGFuZCBtb3ZlcycsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBkdXBsaWNhdGVkIGFydGljbGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1Igd2l0aCBoaXN0b3J5JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbWVyZ2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtb3ZlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHdpdGggb2xkIGhpc3RvcnknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gZmljdGlvbicsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBmaWN0aW9uYWwgY2hhcmFjdGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZmljdGlvbmFsIGVsZW1lbnQnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBmaWN0aW9uYWwgbG9jYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gcmVsYXRlZCBpbmZvJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFsYnVtJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYW5pbWFsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYm9vaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGNhdGNocGhyYXNlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZG9tYWluIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB0b3AtbGV2ZWwgZG9tYWluJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZmlsbScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGdlbmRlcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGxlZ2lzbGF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbGlzdCB0b3BpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1lbWJlcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBlcnNvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBocmFzZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHF1b3RhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHJlbGF0ZWQgd29yZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNjaG9vbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNvbmcnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBzdWJ0b3BpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHRlYW0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB3b3JrJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gd3JpdGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gVW5pY29kZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnVG8gXHUyMDEzIGdyYW1tYXIsIHB1bmN0dWF0aW9uLCBhbmQgc3BlbGxpbmcnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGFjcm9ueW0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gaW5pdGlhbGlzbScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBBU0NJSS1vbmx5IHRpdGxlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGRpYWNyaXRpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBsaWdhdHVyZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBwbHVyYWwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1RvIGFsdGVybmF0aXZlIG5hbWVzJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBmb3JtZXIgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBoaXN0b3JpYyBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGpvaW50IGJpb2dyYXBoeScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBuYW1lIHdpdGggdGl0bGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gbW9ub3R5cGljIHRheG9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIHNjaWVudGlmaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBzeXN0ZW1hdGljIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gdGVjaG5pY2FsIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1RvIFx1MjAxMyBuYXZpZ2F0aW9uIGFuZCBkaXNhbWJpZ3VhdGlvbicsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gYW5jaG9yJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGFudGhyb3BvbnlteSBwYWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGRpc2FtYmlndWF0aW9uIHBhZ2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gbGlzdCBlbnRyeScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBzZWN0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdUbyBtaXNjZWxsYW5lb3VzJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBkZWNhZGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gcmVsYXRlZCB0b3BpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBzdWJwYWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIHN1YnRvcGljJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIFRWIGVwaXNvZGUgbGlzdCBlbnRyeScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ0N1c3RvbSAtIHByb21wdCBtZScsIHZhbHVlOiAnY3VzdG9tJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdyBjYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfbmFtZV8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPkNhdGVnb3J5IG5hbWU6IDwvbGFiZWw+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cIjEwMFwiIG5hbWU9XCJhZmNIZWxwZXJfcmVkaXJlY3RfbmFtZV8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIGlkPVwiYWZjSGVscGVyX3JlZGlyZWN0X25hbWVfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB2YWx1ZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25zW2lkXS50aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIC8+JyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGJyIC8+PGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9wYXJlbnRzXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+UGFyZW50IGNhdGVnb3JpZXMgKGNvbW1hLXNlcGFyYXRlZCk6PC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBzaXplPVwiMTAwXCIgaWQ9XCJhZmNIZWxwZXJfcmVkaXJlY3RfcGFyZW50c18nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIG5hbWU9XCJhZmNIZWxwZXJfcmVkaXJlY3RfcGFyZW50c18nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIHZhbHVlPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbnNbaWRdLnBhcmVudHMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiAvPicsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5hcHBlbmQoJzxiciAvPicpO1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGlucHV0PicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhZmNIZWxwZXJfcmVkaXJlY3RfY29udGFpbmVyXycgKyBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FmY0hlbHBlcl9yZWRpcmVjdF9jb250YWluZXJfJyArIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb250YWluZXJfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj5UaGlzIGlzIGEgPGEgaHJlZj1cIi93aWtpL1dpa2lwZWRpYTpDb250YWluZXJfY2F0ZWdvcnlcIiB0aXRsZT1cIldpa2lwZWRpYTpDb250YWluZXIgY2F0ZWdvcnlcIj5jb250YWluZXIgY2F0ZWdvcnk8L2E+PC9sYWJlbD4nLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbCgkZXh0cmEuaHRtbCgpICsgJzxiciAvPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbnRhaW5lcl8nICsgaWQgKyAnXCInKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxiciAvPjxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29tbWVudF8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIj5Db21tZW50OjwvbGFiZWw+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cIjEwMFwiIGlkPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCIgbmFtZT1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiLz4nLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2RlY2xpbmUnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Ym1pc3Npb25zW2lkXS50eXBlID09PSAncmVkaXJlY3QnKVxuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X2RlY2xpbmVfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj5SZWFzb24gZm9yIGRlY2xpbmU6IDwvbGFiZWw+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVTZWxlY3QoJ2FmY0hlbHBlcl9yZWRpcmVjdF9kZWNsaW5lXycgKyBpZCwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0FscmVhZHkgZXhpc3RzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnZXhpc3RzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdCbGFuayByZXF1ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnYmxhbmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ05vIHZhbGlkIHRhcmdldCBzcGVjaWZpZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICduby10YXJnZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1VubGlrZWx5IHNlYXJjaCB0ZXJtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAndW5saWtlbHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ05vdCBhIHJlZGlyZWN0IHJlcXVlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdub3QtcmVkaXJlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0N1c3RvbSAtIHJlYXNvbiBiZWxvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAvLyBOb3cgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9kZWNsaW5lXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+UmVhc29uIGZvciBkZWNsaW5lOiA8L2xhYmVsPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlU2VsZWN0KCdhZmNIZWxwZXJfcmVkaXJlY3RfZGVjbGluZV8nICsgaWQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdBbHJlYWR5IGV4aXN0cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2V4aXN0cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQmxhbmsgcmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2JsYW5rJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdVbmxpa2VseSBjYXRlZ29yeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ3VubGlrZWx5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdOb3QgYSBjYXRlZ29yeSByZXF1ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnbm90LWNhdGVnb3J5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDdXN0b20gLSByZWFzb24gYmVsb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPGJyLz48bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCI+Q29tbWVudDogPC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBzaXplPVwiMTAwXCIgaWQ9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29tbWVudF8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIiBuYW1lPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCIvPicsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbm9uZSc6IHtcbiAgICAgICAgICAgICAgICAvLyBGb3IgY2F0ZWdvcmllcyBhbmQgcmVkaXJlY3RzXG4gICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoJycpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29tbWVudF8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIj5Db21tZW50OiA8L2xhYmVsPjxpbnB1dCB0eXBlPVwidGV4dFwiIHNpemU9XCIxMDBcIiBpZD1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIG5hbWU9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29tbWVudF8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIi8+JyxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybSB0aGUgcmVkaXJlY3QgYWN0aW9ucyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuXG4gICAgICovXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVkaXJlY3RQZXJmb3JtQWN0aW9ucygpIHtcbiAgICAgICAgLy8gTG9hZCBhbGwgb2YgdGhlIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHN1Ym1pc3Npb25dIG9mIHN1Ym1pc3Npb25zLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9hY3Rpb25fJyArIGluZGV4KS52YWwoKTtcbiAgICAgICAgICAgIHN1Ym1pc3Npb24uYWN0aW9uID0gYWN0aW9uO1xuICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ25vbmUnKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICdhY2NlcHQnKVxuICAgICAgICAgICAgICAgIGlmIChzdWJtaXNzaW9uLnR5cGUgPT09ICdyZWRpcmVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi50aXRsZSA9ICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfZnJvbV8nICsgaW5kZXgpLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLnRvID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF90b18nICsgaW5kZXgpLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLmFwcGVuZCA9ICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfYXBwZW5kXycgKyBpbmRleCkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJtaXNzaW9uLmFwcGVuZCA9PT0gJ2N1c3RvbScpXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLmFwcGVuZCA9IHByb21wdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGVudGVyIHRoZSB0ZW1wbGF0ZSB0byBhcHBlbmQgdG8gJyArIHN1Ym1pc3Npb24udGl0bGUgKyAnLiBEbyBub3QgaW5jbHVkZSB0aGUgY3VybHkgYnJhY2tldHMuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi5hcHBlbmQgPSBzdWJtaXNzaW9uLmFwcGVuZCA9PT0gJ25vbmUnIHx8IHN1Ym1pc3Npb24uYXBwZW5kID09PSBudWxsID8gJycgOiAne3snICsgc3VibWlzc2lvbi5hcHBlbmQgKyAnfX0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24udGl0bGUgPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X25hbWVfJyArIGluZGV4KS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi5wYXJlbnRzID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9wYXJlbnRzXycgKyBpbmRleCkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24uY29udGFpbmVyID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9jb250YWluZXJfJyArIGluZGV4KS5pcygnOmNoZWNrZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdkZWNsaW5lJykgc3VibWlzc2lvbi5yZWFzb24gPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X2RlY2xpbmVfJyArIGluZGV4KS52YWwoKTtcblxuICAgICAgICAgICAgc3VibWlzc2lvbi5jb21tZW50ID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgKyBpbmRleCkudmFsKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGF0YSBsb2FkZWQuIFNob3cgcHJvZ3Jlc3Mgc2NyZWVuIGFuZCBnZXQgV1A6QUZDL1JDIHBhZ2UgdGV4dFxuICAgICAgICBkaXNwbGF5TWVzc2FnZSgnPHVsIGlkPVwiYWZjSGVscGVyX3N0YXR1c1wiPjwvdWw+PHVsIGlkPVwiYWZjSGVscGVyX2ZpbmlzaFwiPjwvdWw+Jyk7XG4gICAgICAgIGNvbnN0IGFkZFN0YXR1cyA9IGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfc3RhdHVzJykuYXBwZW5kKHN0YXR1cyk7XG4gICAgICAgIH07XG4gICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoJykuaHRtbChcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoJykuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAnPHNwYW4gaWQ9XCJhZmNIZWxwZXJfZmluaXNoZWRfd3JhcHBlclwiPjxzcGFuIGlkPVwiYWZjSGVscGVyX2ZpbmlzaGVkX21haW5cIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPjxsaSBpZD1cImFmY0hlbHBlcl9kb25lXCI+PGI+RG9uZSAoPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICAgIG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZVBhdGgnKS5yZXBsYWNlKCckMScsIGVuY29kZVVSSShyZWRpcmVjdFBhZ2VOYW1lKSkgK1xuICAgICAgICAgICAgICAgICc/YWN0aW9uPXB1cmdlXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFBhZ2VOYW1lICtcbiAgICAgICAgICAgICAgICAnXCI+UmVsb2FkIHBhZ2U8L2E+KTwvYj48L2xpPjwvc3Bhbj48L3NwYW4+JyxcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IHBhZ2VUZXh0ID0gYXdhaXQgZ2V0UGFnZVRleHQocmVkaXJlY3RQYWdlTmFtZSwgYWRkU3RhdHVzKTtcbiAgICAgICAgbGV0IHRvdGFsQWNjZXB0ID0gMDtcbiAgICAgICAgbGV0IHRvdGFsRGVjbGluZSA9IDA7XG4gICAgICAgIGxldCB0b3RhbENvbW1lbnQgPSAwO1xuICAgICAgICAvLyBUcmF2ZXJzZSB0aGUgc3VibWlzc2lvbnMgYW5kIGxvY2F0ZSB0aGUgcmVsZXZhbnQgc2VjdGlvbnNcbiAgICAgICAgYWRkU3RhdHVzKFxuICAgICAgICAgICAgJzxsaT5Qcm9jZXNzaW5nICcgKyByZWRpcmVjdFN1Ym1pc3Npb25zLmxlbmd0aCArICcgc3VibWlzc2lvbicgKyAocmVkaXJlY3RTdWJtaXNzaW9ucy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJykgKyAnLi4uPC9saT4nLFxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YiBvZiByZWRpcmVjdFN1Ym1pc3Npb25zKSB7XG4gICAgICAgICAgICBpZiAoIXBhZ2VUZXh0LmluY2x1ZGVzKHJlZGlyZWN0U2VjdGlvbnNbc3ViLnNlY3Rpb25dKSkge1xuICAgICAgICAgICAgICAgIC8vIFNvbWVvbmUgaGFzIG1vZGlmaWVkIHRoZSBzZWN0aW9uIGluIHRoZSBtZWFuIHRpbWUsIHNraXBcbiAgICAgICAgICAgICAgICBhZGRTdGF0dXMoJzxsaT5Ta2lwcGluZyAnICsgc3ViLnRpdGxlICsgJzogQ2Fubm90IGZpbmQgc2VjdGlvbi4gUGVyaGFwcyBpdCB3YXMgbW9kaWZpZWQgaW4gdGhlIG1lYW4gdGltZT88L2xpPicpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRleHQgPSByZWRpcmVjdFNlY3Rpb25zW3N1Yi5zZWN0aW9uXTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBwYWdlVGV4dC5pbmRleE9mKHJlZGlyZWN0U2VjdGlvbnNbc3ViLnNlY3Rpb25dKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIHRleHQubGVuZ3RoO1xuXG4gICAgICAgICAgICAvLyBGaXJzdCBkZWFsIHdpdGggY2F0ZWdvcmllc1xuICAgICAgICAgICAgaWYgKHN1Yi50eXBlID09PSAnY2F0ZWdvcnknKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViLmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdhY2NlcHQnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnlUZXh0ID0gJzwhLS1DcmVhdGVkIGJ5IFdQOkFGQyAtLT4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yi5jb250YWluZXIpIGNhdGVnb3J5VGV4dCArPSAnXFxue3tDb250YWluZXIgY2F0ZWdvcnl9fSc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWIucGFyZW50cyAhPT0gJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlUZXh0ID0gc3ViLnBhcmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoY2F0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tbJyArIGNhdCArICddXSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdFBhZ2Uoc3ViLnRpdGxlLCBjYXRlZ29yeVRleHQsICdDcmVhdGVkIHZpYSBbW1dQOkFGQ3xBcnRpY2xlcyBmb3IgQ3JlYXRpb25dXScsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFsa1RleHQgPSAne3tzdWJzdDpXUEFGQy9hcnRpY2xlfGNsYXNzPUNhdH19JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhbGtUaXRsZSA9IG5ldyBtdy5UaXRsZShzdWIudGl0bGUpLmdldFRhbGtQYWdlKCkudG9UZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0UGFnZSh0YWxrVGl0bGUsIHRhbGtUZXh0LCAnUGxhY2luZyBXUEFGQyBwcm9qZWN0IGJhbm5lcicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gdGV4dC5tYXRjaCgvPT1bXj1dKj09LylbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gaGVhZGVyICsgJ1xcbnt7QWZDLWN8YX19XFxuJyArIHRleHQuc2xpY2UoaGVhZGVyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViLmNvbW1lbnQgPT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1xcbip7e3N1YnN0OmFmYyBjYXRlZ29yeX19IH5+fn5cXG4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ1xcbip7e3N1YnN0OmFmYyBjYXRlZ29yeXxhY2NlcHR8Mj0nICsgc3ViLmNvbW1lbnQgKyAnfX0gfn5+flxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICd7e0FmQy1jfGJ9fVxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEFjY2VwdCsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWNsaW5lJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gdGV4dC5tYXRjaCgvPT1bXj1dKj09LylbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVhc29uID0gY2F0ZWdvcnlEZWNsaW5lUmVhc29uc1tzdWIucmVhc29uXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFzb24gPT09ICcnKSByZWFzb24gPSBzdWIuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1Yi5jb21tZW50ICE9PSAnJykgcmVhc29uID0gcmVhc29uICsgJzogJyArIHN1Yi5jb21tZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYXNvbiA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdhZmNIZWxwZXJfc3RhdHVzJykuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKCkgKyAnPGxpPlNraXBwaW5nICcgKyBzdWIudGl0bGUgKyAnOiBObyBkZWNsaW5lIHJlYXNvbiBzcGVjaWZpZWQuPC9saT4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gaGVhZGVyICsgJ1xcbnt7QWZDLWN8ZH19XFxuJyArIHRleHQuc2xpY2UoaGVhZGVyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViLmNvbW1lbnQgPT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1xcbip7e3N1YnN0OmFmYyBjYXRlZ29yeXwnICsgc3ViLnJlYXNvbiArICd9fSB+fn5+XFxuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdcXG4qe3tzdWJzdDphZmMgY2F0ZWdvcnl8ZGVjbGluZXwyPScgKyByZWFzb24gKyAnfX0gfn5+flxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICd7e0FmQy1jfGJ9fVxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbERlY2xpbmUrKztcblxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWIuY29tbWVudCAhPT0gJycpIHRleHQgKz0gJ1xcblxcbnt7YWZjIGNvbW1lbnR8MT0nICsgc3ViLmNvbW1lbnQgKyAnIH5+fn59fVxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbW1lbnQrKztcblxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gTm8gZGVmYXVsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSByZWRpcmVjdHNcbiAgICAgICAgICAgICAgICBsZXQgYWNjZXB0Q29tbWVudCA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBkZWNsaW5lQ29tbWVudCA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBvdGhlckNvbW1lbnQgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgYWNjZXB0Q291bnQgPSAwLFxuICAgICAgICAgICAgICAgICAgICBkZWNsaW5lQ291bnQgPSAwLFxuICAgICAgICAgICAgICAgICAgICBjb21tZW50Q291bnQgPSAwLFxuICAgICAgICAgICAgICAgICAgICBoYXNDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHN1Yi5mcm9tLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdCA9IHN1Yi5mcm9tW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWRpcmVjdC5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FjY2VwdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdFRleHQgPSBgI1JFRElSRUNUIFtbJHtyZWRpcmVjdC50b31dXSR7cmVkaXJlY3QuYXBwZW5kID8gYFxcblxcbnt7UmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGx8XFxuJHtyZWRpcmVjdC5hcHBlbmR9XFxufX1gIDogJyd9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0UGFnZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlZGlyZWN0ZWQgcGFnZSB0byBbWycgKyByZWRpcmVjdC50byArICddXSB2aWEgW1tXUDpBRkN8QXJ0aWNsZXMgZm9yIENyZWF0aW9uXV0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtd1RpdGxlID0gbmV3IG13LlRpdGxlKHJlZGlyZWN0LnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW13VGl0bGUuaXNUYWxrUGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG13VGFsa1RpdGxlID0gbXdUaXRsZS5nZXRUYWxrUGFnZSgpLnRvVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWxrVGV4dCA9ICd7e3N1YnN0OldQQUZDL3JlZGlyZWN0fX0nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRQYWdlKG13VGFsa1RpdGxlLCB0YWxrVGV4dCwgJ1BsYWNpbmcgV1BBRkMgcHJvamVjdCBiYW5uZXInLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0Q29tbWVudCArPSByZWRpcmVjdC50aXRsZSArICcgJnJhcnI7ICcgKyByZWRpcmVjdC50bztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3QuY29tbWVudCA9PT0gJycpIGFjY2VwdENvbW1lbnQgKz0gJy4gJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0Q29tbWVudCArPSAnOiAnICsgcmVkaXJlY3QuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29tbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdENvdW50Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlY2xpbmUnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYXNvbiA9IHJlZGlyZWN0RGVjbGluZVJlYXNvbnNbcmVkaXJlY3QucmVhc29uXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVhc29uID09PSAnJykgcmVhc29uID0gcmVkaXJlY3QuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWRpcmVjdC5jb21tZW50ICE9PSAnJykgcmVhc29uID0gcmVhc29uICsgJzogJyArIHJlZGlyZWN0LmNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYXNvbiA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+U2tpcHBpbmcgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QudGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6IE5vIGRlY2xpbmUgcmVhc29uIHNwZWNpZmllZC48L2xpPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsaW5lQ29tbWVudCArPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdC5yZWFzb24gPT09ICdibGFuaycgfHwgcmVkaXJlY3QucmVhc29uID09PSAnbm90LXJlZGlyZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZWFzb24gKyAnLiAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlZGlyZWN0LnRpdGxlICsgJyAmcmFycjsgJyArIHJlZGlyZWN0LnRvICsgJzogJyArIHJlYXNvbiArICcuICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGluZUNvdW50Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJDb21tZW50ICs9IHJlZGlyZWN0LnRpdGxlICsgJzogJyArIHJlZGlyZWN0LmNvbW1lbnQgKyAnLiAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb3VudCsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHJlYXNvbiA9ICcnO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjY2VwdENvdW50ID4gMClcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuKnt7c3Vic3Q6YWZjIHJlZGlyZWN0fGFjY2VwdHwyPScgKyBhY2NlcHRDb21tZW50ICsgJyBUaGFuayB5b3UgZm9yIHlvdXIgY29udHJpYnV0aW9ucyB0byBXaWtpcGVkaWEhfX0gfn5+fic7XG4gICAgICAgICAgICAgICAgaWYgKGRlY2xpbmVDb3VudCA+IDApIHJlYXNvbiArPSAnXFxuKnt7c3Vic3Q6YWZjIHJlZGlyZWN0fGRlY2xpbmV8Mj0nICsgZGVjbGluZUNvbW1lbnQgKyAnfX0gfn5+fic7XG4gICAgICAgICAgICAgICAgaWYgKGNvbW1lbnRDb3VudCA+IDApIHJlYXNvbiArPSAnXFxuKnt7YWZjIGNvbW1lbnR8MT0nICsgb3RoZXJDb21tZW50ICsgJ35+fn59fSc7XG4gICAgICAgICAgICAgICAgcmVhc29uICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgIGlmICghaGFzQ29tbWVudCAmJiBhY2NlcHRDb3VudCA9PT0gc3ViLmZyb20ubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICByZWFzb24gPSBhY2NlcHRDb3VudCA+IDEgPyAnXFxuKnt7c3Vic3Q6YWZjIHJlZGlyZWN0fGFsbH19IH5+fn5cXG4nIDogJ1xcbip7e3N1YnN0OmFmYyByZWRpcmVjdH19IH5+fn5cXG4nO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjY2VwdENvdW50ICsgZGVjbGluZUNvdW50ICsgY29tbWVudENvdW50ID4gMClcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2VwdENvdW50ICsgZGVjbGluZUNvdW50ID09PSBzdWIuZnJvbS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2ZXJ5IHJlcXVlc3QgaGFuZGxlZCwgY2xvc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlciA9IHRleHQubWF0Y2goLz09W149XSo9PS8pWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2VwdENvdW50ID4gMCAmJiBkZWNsaW5lQ291bnQgPiAwKSB0ZXh0ID0gaGVhZGVyICsgJ1xcbnt7QWZDLWN8cH19JyArIHRleHQuc2xpY2UoaGVhZGVyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY2NlcHRDb3VudCA+IDApIHRleHQgPSBoZWFkZXIgKyAnXFxue3tBZkMtY3xhfX0nICsgdGV4dC5zbGljZShoZWFkZXIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGV4dCA9IGhlYWRlciArICdcXG57e0FmQy1jfGR9fScgKyB0ZXh0LnNsaWNlKGhlYWRlci5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWFzb247XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICd7e0FmQy1jfGJ9fVxcbic7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0ZXh0ICs9IHJlYXNvbiArICdcXG4nO1xuXG4gICAgICAgICAgICAgICAgdG90YWxBY2NlcHQgKz0gYWNjZXB0Q291bnQ7XG4gICAgICAgICAgICAgICAgdG90YWxEZWNsaW5lICs9IGRlY2xpbmVDb3VudDtcbiAgICAgICAgICAgICAgICB0b3RhbENvbW1lbnQgKz0gY29tbWVudENvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFnZVRleHQgPSBwYWdlVGV4dC5zbGljZSgwLCBNYXRoLm1heCgwLCBzdGFydEluZGV4KSkgKyB0ZXh0ICsgcGFnZVRleHQuc2xpY2UoTWF0aC5tYXgoMCwgZW5kSW5kZXgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdW1tYXJ5ID0gJ1VwZGF0aW5nIHN1Ym1pc3Npb24gc3RhdHVzOic7XG4gICAgICAgIGlmICh0b3RhbEFjY2VwdCA+IDApIHN1bW1hcnkgKz0gJyBhY2NlcHRpbmcgJyArIHRvdGFsQWNjZXB0ICsgJyByZXF1ZXN0JyArICh0b3RhbEFjY2VwdCA+IDEgPyAncycgOiAnJyk7XG4gICAgICAgIGlmICh0b3RhbERlY2xpbmUgPiAwKSB7XG4gICAgICAgICAgICBpZiAodG90YWxBY2NlcHQgPiAwKSBzdW1tYXJ5ICs9ICcsJztcbiAgICAgICAgICAgIHN1bW1hcnkgKz0gJyBkZWNsaW5pbmcgJyArIHRvdGFsRGVjbGluZSArICcgcmVxdWVzdCcgKyAodG90YWxEZWNsaW5lID4gMSA/ICdzJyA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG90YWxDb21tZW50ID4gMCkge1xuICAgICAgICAgICAgaWYgKHRvdGFsQWNjZXB0ID4gMCB8fCB0b3RhbERlY2xpbmUgPiAwKSBzdW1tYXJ5ICs9ICcsJztcbiAgICAgICAgICAgIHN1bW1hcnkgKz0gJyBjb21tZW50aW5nIG9uICcgKyB0b3RhbENvbW1lbnQgKyAnIHJlcXVlc3QnICsgKHRvdGFsQ29tbWVudCA+IDEgPyAncycgOiAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICBlZGl0UGFnZShyZWRpcmVjdFBhZ2VOYW1lLCBwYWdlVGV4dCwgc3VtbWFyeSwgZmFsc2UpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgdGhlIFwiRG9uZVwiIHRleHQgb25seSBhZnRlciBhbGwgYWpheCByZXF1ZXN0cyBhcmUgY29tcGxldGVkXG4gICAgICAgICQoZG9jdW1lbnQpLmFqYXhTdG9wKCgpID0+IHtcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoZWRfbWFpbicpLmNzcygnZGlzcGxheScsICcnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGV4dCBvZiBhIHBhZ2UuXG4gICAgICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZSBvZiB0aGUgcGFnZSB0byBnZXQuXG4gICAgICogQHBhcmFtIGFkZFN0YXR1cyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBIVE1MIHN0cmluZyB0byByZXBvcnQgc3RhdHVzLlxuICAgICAqIEByZXR1cm5zIFRoZSB0ZXh0IG9mIHRoZSBwYWdlLlxuICAgICAqL1xuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VUZXh0KHRpdGxlOiBzdHJpbmcsIGFkZFN0YXR1czogKHN0YXR1czogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICAgIGFkZFN0YXR1cyA9IGFkZFN0YXR1cyA/PyBmdW5jdGlvbiAoKSB7fTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgYWRkU3RhdHVzKFxuICAgICAgICAgICAgJzxsaSBpZD1cImFmY0hlbHBlcl9nZXQnICtcbiAgICAgICAgICAgICAgICBqcUVzY2FwZSh0aXRsZSkgK1xuICAgICAgICAgICAgICAgICdcIj5HZXR0aW5nIDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVQYXRoJykucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgJzwvYT48L2xpPicsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgLy8gICAgIGFjdGlvbjogJ3F1ZXJ5JyxcbiAgICAgICAgLy8gICAgIHByb3A6ICdyZXZpc2lvbnMnLFxuICAgICAgICAvLyAgICAgcnZwcm9wOiAnY29udGVudCcsXG4gICAgICAgIC8vICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLy8gICAgIGluZGV4cGFnZWlkczogdHJ1ZSxcbiAgICAgICAgLy8gICAgIHRpdGxlczogdGl0bGUsXG4gICAgICAgIC8vIH07XG5cbiAgICAgICAgLy8gY29uc3QgcmVzcG9uc2UgPSBKU09OLnBhcnNlKFxuICAgICAgICAvLyAgICAgJC5hamF4KHtcbiAgICAgICAgLy8gICAgICAgICB1cmw6IG13LnV0aWwud2lraVNjcmlwdCgnYXBpJyksXG4gICAgICAgIC8vICAgICAgICAgZGF0YTogcmVxdWVzdCxcbiAgICAgICAgLy8gICAgICAgICBhc3luYzogZmFsc2UsXG4gICAgICAgIC8vICAgICB9KS5yZXNwb25zZVRleHQsXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBuZXcgbXcuQXBpKCkuZ2V0KHtcbiAgICAgICAgICAgIGFjdGlvbjogJ3F1ZXJ5JyxcbiAgICAgICAgICAgIHByb3A6ICdyZXZpc2lvbnMnLFxuICAgICAgICAgICAgcnZwcm9wOiAnY29udGVudCcsXG4gICAgICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgICAgIGluZGV4cGFnZWlkczogdHJ1ZSxcbiAgICAgICAgICAgIHRpdGxlczogdGl0bGUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHJlc3BvbnNlLnF1ZXJ5LnBhZ2VpZHNbMF07XG4gICAgICAgIGlmIChwYWdlSWQgPT09ICctMScpIHtcbiAgICAgICAgICAgIGFkZFN0YXR1cyhcbiAgICAgICAgICAgICAgICAnVGhlIHBhZ2UgPGEgY2xhc3M9XCJuZXdcIiBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgICAgIG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZVBhdGgnKS5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICtcbiAgICAgICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICc8L2E+IGRvZXMgbm90IGV4aXN0JyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGV4dCA9IHJlc3BvbnNlLnF1ZXJ5LnBhZ2VzW3BhZ2VJZF0ucmV2aXNpb25zWzBdWycqJ107XG4gICAgICAgIGFkZFN0YXR1cyhcbiAgICAgICAgICAgICc8bGkgaWQ9XCJhZmNIZWxwZXJfZ2V0JyArXG4gICAgICAgICAgICAgICAganFFc2NhcGUodGl0bGUpICtcbiAgICAgICAgICAgICAgICAnXCI+R290IDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVQYXRoJykucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgJzwvYT48L2xpPicsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBuZXdUZXh0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFucyB1cCB0aGUgbGlua3MgaW4gYSBwYWdlLlxuICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBwYWdlIGNvbnRlbnQuXG4gICAgICogQHJldHVybnMgVGhlIHBhZ2UgY29udGVudCB3aXRoIHRoZSBsaW5rcyBjbGVhbmVkIHVwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsZWFudXBMaW5rcyh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gQ29udmVydCBleHRlcm5hbCBsaW5rcyB0byBXaWtpcGVkaWEgYXJ0aWNsZXMgdG8gcHJvcGVyIHdpa2lsaW5rc1xuICAgICAgICBjb25zdCB3aWtpbGlua1JlZ2V4ID1cbiAgICAgICAgICAgIC8oXFxbKXsxLDJ9KD86aHR0cHM/Oik/XFwvXFwvKGVuLndpa2lwZWRpYS5vcmdcXC93aWtpfGVud3Aub3JnKVxcLyhbXlxcc1tcXF18XSspKFtcXHN8XSk/KCg/OlxcW1xcW1teW1xcXV0qXV18W15bXFxdXSkqKShdKXsxLDJ9L2dpO1xuICAgICAgICBjb25zdCB0ZW1wb3JhcnlUZXh0ID0gdGV4dDtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAoKG1hdGNoID0gd2lraWxpbmtSZWdleC5leGVjKHRlbXBvcmFyeVRleHQpKSkge1xuICAgICAgICAgICAgY29uc3QgcGFnZU5hbWUgPSBkZWNvZGVVUkkobWF0Y2hbM10ucmVwbGFjZUFsbCgnXycsICcgJykpO1xuICAgICAgICAgICAgbGV0IGRpc3BsYXluYW1lID0gZGVjb2RlVVJJKG1hdGNoWzVdLnJlcGxhY2VBbGwoJ18nLCAnICcpKTtcbiAgICAgICAgICAgIGlmIChwYWdlTmFtZSA9PT0gZGlzcGxheW5hbWUpIGRpc3BsYXluYW1lID0gJyc7XG4gICAgICAgICAgICBjb25zdCByZXBsYWNlVGV4dCA9ICdbWycgKyBwYWdlTmFtZSArIChkaXNwbGF5bmFtZSA/ICd8JyArIGRpc3BsYXluYW1lIDogJycpICsgJ11dJztcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UobWF0Y2hbMF0sIHJlcGxhY2VUZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgdGhlIHNlbGVjdCBlbGVtZW50IG91dGVyIEhUTUwgZm9yIGEgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGhlIHBhZ2UgdGl0bGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIHNlbGVjdCBlbGVtZW50IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgVGhlIHNlbGVjdCBlbGVtZW50IG91dGVyIEhUTUwuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3QodGl0bGU6IHN0cmluZywgb3B0aW9uczogb2JqZWN0W10pIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRlU2VsZWN0T2JqZWN0KHRpdGxlLCBvcHRpb25zKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBzZWxlY3QgZWxlbWVudCBmb3IgYSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB0aXRsZSBUaGUgcGFnZSB0aXRsZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgc2VsZWN0IGVsZW1lbnQgb3B0aW9ucy5cbiAgICAgKiBAcGFyYW0gb25jaGFuZ2UgVGhlIG9uY2hhbmdlIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBzZWxlY3QgalF1ZXJ5IGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3RPYmplY3QodGl0bGU6IHN0cmluZywgb3B0aW9uczogb2JqZWN0W10sIG9uY2hhbmdlPzogRnVuY3Rpb24pIHtcbiAgICAgICAgY29uc3QgJHNlbGVjdCA9ICQoJzxzZWxlY3Q+JykuYXR0cignbmFtZScsIHRpdGxlKS5hdHRyKCdpZCcsIHRpdGxlKTtcbiAgICAgICAgaWYgKG9uY2hhbmdlICE9PSBudWxsKSAkc2VsZWN0LmNoYW5nZShvbmNoYW5nZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5sYWJlbEFuZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gb3B0aW9uLmxhYmVsQW5kVmFsdWU7XG4gICAgICAgICAgICAgICAgb3B0aW9uLmxhYmVsID0gb3B0aW9uLmxhYmVsQW5kVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkb3B0aW9uID0gJCgnPG9wdGlvbj4nKS5hcHBlbmRUbygkc2VsZWN0KS52YWwob3B0aW9uLnZhbHVlKS50ZXh0KG9wdGlvbi5sYWJlbCk7XG4gICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSAkb3B0aW9uLmF0dHIoJ3NlbGVjdGVkJywgJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSAkb3B0aW9uLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICRzZWxlY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9sZCBtdy51dGlsLmpzTWVzc2FnZSBmdW5jdGlvbiBiZWZvcmUgaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9yLyMvYy8xNzYwNS8sIHdoaWNoXG4gICAgICogaW50cm9kdWNlZCB0aGUgc2lsbHkgYXV0by1oaWRlIGZ1bmN0aW9uLiBBbHNvIHdpdGggdGhlIG9yaWdpbmFsIHN0eWxlcy5cbiAgICAgKiBBZGQgYSBsaXR0bGUgYm94IGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbiB0byBpbmZvcm0gdGhlIHVzZXIgb2ZcbiAgICAgKiBzb21ldGhpbmcsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgbWVzc2FnZS5cbiAgICAgKiBDYWxsaW5nIHdpdGggbm8gYXJndW1lbnRzLCB3aXRoIGFuIGVtcHR5IHN0cmluZyBvciBudWxsIHdpbGwgaGlkZSB0aGUgbWVzc2FnZVxuICAgICAqIFRha2VuIGZyb20gW1tVc2VyOlRpbW90aGV1cyBDYW5lbnMvZGlzcGxheW1lc3NhZ2UuanNdXS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgRE9NLWVsZW1lbnQsIGpRdWVyeSBvYmplY3Qgb3IgSFRNTC1zdHJpbmcgdG8gYmUgcHV0IGluc2lkZSB0aGUgbWVzc2FnZSBib3guXG4gICAgICogQHBhcmFtIGNsYXNzTmFtZSBVc2VkIGluIGFkZGluZyBhIGNsYXNzOyBzaG91bGQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGNhbGwgdG8gYWxsb3cgQ1NTL0pTIHRvIGhpZGUgZGlmZmVyZW50IGJveGVzLiBOdWxsID0gbm8gY2xhc3MgdXNlZC5cbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGlzcGxheU1lc3NhZ2UobWVzc2FnZTogSFRNTEVsZW1lbnQgfCBKUXVlcnkgfCBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IG1lc3NhZ2UgPT09ICcnIHx8IG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgICQoJyNkaXNwbGF5LW1lc3NhZ2UnKS5lbXB0eSgpLmhpZGUoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBFbXB0eWluZyBhbmQgaGlkaW5nIG1lc3NhZ2UgaXMgaW50ZW5kZWQgYmVoYXZpb3VyLCByZXR1cm4gdHJ1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gV2Ugc3BlY2lhbC1jYXNlIHNraW4gc3RydWN0dXJlcyBwcm92aWRlZCBieSB0aGUgc29mdHdhcmUuIFNraW5zIHRoYXRcbiAgICAgICAgICAgIC8vIGNob29zZSB0byBhYmFuZG9uIG9yIHNpZ25pZmljYW50bHkgbW9kaWZ5IG91ciBmb3JtYXR0aW5nIGNhbiBqdXN0IGRlZmluZVxuICAgICAgICAgICAgLy8gYW4gbXctanMtbWVzc2FnZSBkaXYgdG8gc3RhcnQgd2l0aC5cbiAgICAgICAgICAgIGxldCAkbWVzc2FnZURpdiA9ICQoJyNkaXNwbGF5LW1lc3NhZ2UnKTtcbiAgICAgICAgICAgIGlmICgkbWVzc2FnZURpdi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAkbWVzc2FnZURpdiA9ICQoXG4gICAgICAgICAgICAgICAgICAgICc8ZGl2IGlkPVwiZGlzcGxheS1tZXNzYWdlXCIgc3R5bGU9XCJtYXJnaW46MWVtO3BhZGRpbmc6MC41ZW0gMi41JTtib3JkZXI6c29saWQgMXB4ICNkZGQ7YmFja2dyb3VuZC1jb2xvcjojZmNmY2ZjO2ZvbnQtc2l6ZTogMC44ZW1cIj48L2Rpdj4nLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG13LnV0aWwuJGNvbnRlbnQubGVuZ3RoID4gMCkgbXcudXRpbC4kY29udGVudC5wcmVwZW5kKCRtZXNzYWdlRGl2KTtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUpICRtZXNzYWdlRGl2LnByb3AoJ2NsYXNzJywgJ2Rpc3BsYXktbWVzc2FnZS0nICsgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAkbWVzc2FnZURpdi5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICRtZXNzYWdlRGl2LmFwcGVuZChtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSAkbWVzc2FnZURpdi5odG1sKG1lc3NhZ2UpO1xuICAgICAgICAgICAgJG1lc3NhZ2VEaXZbMF0uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlcyBhIHN0cmluZyBmb3IgdXNlIGluIGpRdWVyeSBzZWxlY3RvcnMuXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb24gVGhlIGV4cHJlc3Npb24gdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIFRoZSBlc2NhcGVkIGV4cHJlc3Npb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24ganFFc2NhcGUoZXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBleHByZXNzaW9uLnJlcGxhY2VBbGwoL1sgIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXFxcXFxdXmB7fH1+XS9nLCAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdHMgYSBnaXZlbiBwYWdlLCBhbmQgdXBkYXRlcyB0aGUgVUkuXG4gICAgICogQHBhcmFtIHRpdGxlIFRoZSBwYWdlIHRpdGxlIHRvIGVkaXQuXG4gICAgICogQHBhcmFtIG5ld1RleHQgVGhlIG5ldyB0ZXh0IHRvIGluc2VydC5cbiAgICAgKiBAcGFyYW0gc3VtbWFyeSBUaGUgZWRpdCBzdW1tYXJ5LlxuICAgICAqIEBwYXJhbSBjcmVhdGVPbmx5IFdoZXRoZXIgdG8gb25seSBjcmVhdGUgdGhlIHBhZ2UgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICAgKiBAcGFyYW0gbm9QYXRyb2wgV2hldGhlciB0byBub3QgbWFyayB0aGUgZWRpdCBhcyBwYXRyb2xsZWQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZWRpdFBhZ2UodGl0bGU6IHN0cmluZywgbmV3VGV4dDogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcsIGNyZWF0ZU9ubHk6IGJvb2xlYW4sIG5vUGF0cm9sOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHdnQXJ0aWNsZVBhdGggPSBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVQYXRoJyk7XG4gICAgICAgIHN1bW1hcnkgKz0gc3VtbWFyeUFkdmVydDtcbiAgICAgICAgJCgnI2FmY0hlbHBlcl9maW5pc2hlZF93cmFwcGVyJykuaHRtbChcbiAgICAgICAgICAgICc8c3BhbiBpZD1cImFmY0hlbHBlcl9BSkFYX2ZpbmlzaGVkXycgK1xuICAgICAgICAgICAgICAgIGFqYXhOdW1iZXIgK1xuICAgICAgICAgICAgICAgICdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPicgK1xuICAgICAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoZWRfd3JhcHBlcicpLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgJzwvc3Bhbj4nLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmdW5jdGlvbklkID0gYWpheE51bWJlcjtcbiAgICAgICAgYWpheE51bWJlcisrO1xuICAgICAgICAkKCcjYWZjSGVscGVyX3N0YXR1cycpLmh0bWwoXG4gICAgICAgICAgICAkKCcjYWZjSGVscGVyX3N0YXR1cycpLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgJzxsaSBpZD1cImFmY0hlbHBlcl9lZGl0JyArXG4gICAgICAgICAgICAgICAganFFc2NhcGUodGl0bGUpICtcbiAgICAgICAgICAgICAgICAnXCI+RWRpdGluZyA8YSBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgd2dBcnRpY2xlUGF0aC5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICtcbiAgICAgICAgICAgICAgICAnXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAnPC9hPjwvbGk+JyxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBuZXdUZXh0LFxuICAgICAgICAgICAgc3VtbWFyeSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNyZWF0ZU9ubHkpIHJlcXVlc3QuY3JlYXRlb25seSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgYXBpID0gbmV3IG13LkFwaSgpO1xuICAgICAgICBhcGkucG9zdFdpdGhFZGl0VG9rZW4ocmVxdWVzdClcbiAgICAgICAgICAgIC5kb25lKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGE/LmVkaXQ/LnJlc3VsdCAmJiBkYXRhLmVkaXQucmVzdWx0ID09PSAnU3VjY2VzcycpXG4gICAgICAgICAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZWRpdCcgKyBqcUVzY2FwZSh0aXRsZSkpLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2F2ZWQgPGEgaHJlZj1cIicgKyB3Z0FydGljbGVQYXRoLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSkgKyAnXCIgdGl0bGU9XCInICsgdGl0bGUgKyAnXCI+JyArIHRpdGxlICsgJzwvYT4nLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKCcjYWZjSGVscGVyX2VkaXQnICsganFFc2NhcGUodGl0bGUpKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiYWZjSGVscGVyX25vdGljZVwiPjxiPkVkaXQgZmFpbGVkIG9uIDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Z0FydGljbGVQYXRoLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB0aXRsZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2E+PC9iPjwvc3Bhbj4uIEVycm9yIGluZm86ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0VkaXQgZmFpbGVkIG9uICVzICglcykuIEVycm9yIGluZm86ICVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5mYWlsKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjcmVhdGVPbmx5ICYmIGVycm9yID09PSAnYXJ0aWNsZWV4aXN0cycpXG4gICAgICAgICAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZWRpdCcgKyBqcUVzY2FwZSh0aXRsZSkpLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJhZmNIZWxwZXJfbm90aWNlXCI+PGI+RWRpdCBmYWlsZWQgb24gPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvYT48L2I+PC9zcGFuPi4gRXJyb3IgaW5mbzogVGhlIGFydGljbGUgYWxyZWFkeSBleGlzdHMhJyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZWRpdCcgKyBqcUVzY2FwZSh0aXRsZSkpLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJhZmNIZWxwZXJfbm90aWNlXCI+PGI+RWRpdCBmYWlsZWQgb24gPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvYT48L2I+PC9zcGFuPi4gRXJyb3IgaW5mbzogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFsd2F5cygoKSA9PiB7XG4gICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9BSkFYX2ZpbmlzaGVkXycgKyBmdW5jdGlvbklkKS5jc3MoJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIW5vUGF0cm9sIC8qIFdlIHBhdHJvbCBieSBkZWZhdWx0ICovICYmICQoJy5wYXRyb2xsaW5rJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gRXh0cmFjdCB0aGUgcmNpZCB0b2tlbiBmcm9tIHRoZSBcIk1hcmsgcGFnZSBhcyBwYXRyb2xsZWRcIiBsaW5rIG9uIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IHBhdHJvbEhyZWYgPSAkKCcucGF0cm9sbGluayBhJykuYXR0cignaHJlZicpO1xuICAgICAgICAgICAgY29uc3QgcmNJZCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncmNpZCcsIHBhdHJvbEhyZWYpO1xuXG4gICAgICAgICAgICBpZiAocmNJZCkge1xuICAgICAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfc3RhdHVzJykuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxsaSBpZD1cImFmY0hlbHBlcl9wYXRyb2wnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpxRXNjYXBlKHRpdGxlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCI+TWFya2luZyA8YSBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICB3Z0FydGljbGVQYXRoLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnIGFzIHBhdHJvbGxlZDwvYT48L2xpPicsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRyb2xSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdwYXRyb2wnLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgICAgICAgICAgICAgcmNpZDogcmNJZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGFwaS5wb3N0V2l0aFRva2VuKCdwYXRyb2wnLCBwYXRyb2xSZXF1ZXN0KVxuICAgICAgICAgICAgICAgICAgICAuZG9uZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9wYXRyb2wnICsganFFc2NhcGUodGl0bGUpKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTWFya2VkIDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2E+IGFzIHBhdHJvbGxlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfcGF0cm9sJyArIGpxRXNjYXBlKHRpdGxlKSkuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiYWZjSGVscGVyX25vdGljZVwiPjxiPlBhdHJvbGxpbmcgZmFpbGVkIG9uIDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2E+PC9iPjwvc3Bhbj4gd2l0aCBhbiB1bmtub3duIGVycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYXRyb2xsaW5nIGZhaWxlZCBvbiAlcyAoJXMpIHdpdGggYW4gdW5rbm93biBlcnJvci4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Z0FydGljbGVQYXRoLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5mYWlsKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9wYXRyb2wnICsganFFc2NhcGUodGl0bGUpKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cImFmY0hlbHBlcl9ub3RpY2VcIj48Yj5QYXRyb2xsaW5nIGZhaWxlZCBvbiA8YSBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB0aXRsZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9hPjwvYj48L3NwYW4+LiBFcnJvciBpbmZvOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG13LmxvYWRlci51c2luZyhbJ21lZGlhd2lraS5hcGknLCAnbWVkaWF3aWtpLnV0aWwnXSwgKCkgPT4ge1xuICAgICAgICBtdy51dGlsLmFkZENTUyhgXG4jZGlzcGxheS1tZXNzYWdlICoge1xuICAgIG1hcmdpbjogcmV2ZXJ0O1xuICAgIGJvcmRlcjogcmV2ZXJ0O1xuICAgIGJhY2tncm91bmQ6IHJldmVydDtcbiAgICBwYWRkaW5nOiByZXZlcnQ7XG59YCk7XG5cbiAgICAgICAgY29uc3QgcmVkaXJlY3RQb3J0bGV0TGluayA9IG13LnV0aWwuYWRkUG9ydGxldExpbmsoXG4gICAgICAgICAgICBtdy5jb25maWcuZ2V0KCdza2luJykgPT09ICdtaW5lcnZhJyA/ICdwLXRiJyA6ICdwLWNhY3Rpb25zJyxcbiAgICAgICAgICAgICcjJyxcbiAgICAgICAgICAgICdSZXZpZXcgQUZDL1JDJyxcbiAgICAgICAgICAgICdjYS1hZmNyaHMnLFxuICAgICAgICAgICAgJ1JldmlldycsXG4gICAgICAgICAgICAnYScsXG4gICAgICAgICk7XG4gICAgICAgICQocmVkaXJlY3RQb3J0bGV0TGluaykuY2xpY2soKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgLy8gQ2xlYXIgdmFyaWFibGVzIGZvciB0aGUgY2FzZSBzb21lYm9keSBpcyBjbGlja2luZyBvbiBcInJldmlld1wiIG11bHRpcGxlIHRpbWVzXG4gICAgICAgICAgICByZWRpcmVjdFN1Ym1pc3Npb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICByZWRpcmVjdFNlY3Rpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBudW1iZXJUb3RhbCA9IDA7XG4gICAgICAgICAgICBzdWJtaXNzaW9ucy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgbmVlZHNVcGRhdGUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHJlZGlyZWN0SW5pdCgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pKCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7b0JBQUMsVUFBWSxDQUNULEdBQ0ksR0FBRyxPQUFPLElBQUksWUFBWSxJQUFNLDZDQUNoQyxHQUFHLE9BQU8sSUFBSSxZQUFZLElBQU0sNkNBRWhDLE9BRUosSUFBTUEsRUFBbUIsR0FBRyxPQUFPLElBQUksWUFBWSxFQUFFLFdBQVcsSUFBSyxHQUFHLEVBQ2xFQyxFQUFzQixDQUFDLEVBQ3pCQyxFQUFtQixDQUFDLEVBQ2xCQyxFQUFnQiw4Q0FDbEJDLEVBQWMsRUFDZEMsRUFBYSxFQUNYQyxFQUFjLENBQUMsRUFDZkMsRUFBYyxDQUFDLEVBQ2ZDLEVBQXlCLENBQzNCLE9BQVUsc0RBQ1YsTUFBUyxxQ0FDVCxZQUNJLGlKQUNKLFNBQVksd0hBQ1osZUFBZ0IseUNBQ2hCLE9BQVUsRUFDZCxFQUNNQyxFQUF5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QW9CLE9BQVMsRUFDN0JDLEVBQWlCLE9BQVMsRUFDMUJFLEVBQWMsRUFDZEUsRUFBWSxPQUFTLEVBQ3JCQyxFQUFZLE9BQVMsRUFDckJJLEVBQWEsQ0FDakIsQ0FBQyxDQUNMLENBQUMsQ0FDTCxHQUFHIiwKICAibmFtZXMiOiBbInJlZGlyZWN0UGFnZU5hbWUiLCAicmVkaXJlY3RTdWJtaXNzaW9ucyIsICJyZWRpcmVjdFNlY3Rpb25zIiwgInN1bW1hcnlBZHZlcnQiLCAibnVtYmVyVG90YWwiLCAiYWpheE51bWJlciIsICJzdWJtaXNzaW9ucyIsICJuZWVkc1VwZGF0ZSIsICJyZWRpcmVjdERlY2xpbmVSZWFzb25zIiwgImNhdGVnb3J5RGVjbGluZVJlYXNvbnMiLCAiQUxMT1dFRF9VU0VSX0dST1VQUyIsICJyZWRpcmVjdEluaXQiLCAiZ3JvdXAiLCAibWVzc2FnZUNvbnRhaW5lciIsICJleHRlbmRlZENvbmZpcm1lZExpbmsiLCAiZG9jdW1lbnRhdGlvbkxpbmsiLCAicGFnZVRleHQiLCAiZ2V0UGFnZVRleHQiLCAiY2xlYW51cExpbmtzIiwgInNlY3Rpb25SZWdleCIsICJpbmRleCIsICJyZWRpcmVjdFNlY3Rpb24iLCAiaGVhZGVyIiwgIndpa2lsaW5rUmVnZXgiLCAibGlua3MiLCAibCIsICJ0byIsICJyZWFzb25NYXRjaCIsICJyZWFzb24iLCAic291cmNlTWF0Y2giLCAic291cmNlIiwgInN1Ym1pc3Npb24iLCAibGluayIsICJzdWIiLCAiY2F0ZWdvcnlOYW1lIiwgInJlcXVlc3RUZXh0IiwgInBhcmVudEhlYWRpbmdJbmRleCIsICJwYXJlbnRDYXRlZ29yaWVzIiwgInBhcmVudENhdGVnb3J5TWF0Y2giLCAicGFyZW50Q2F0ZWdvcmllc1JlZ2V4IiwgIiRmb3JtIiwgImRpc3BsYXlNZXNzYWdlIiwgIiRtZXNzYWdlRGl2IiwgInJlZGlyZWN0RW1wdHkiLCAiQUNUSU9OUyIsICJyZWRpcmVjdFN1Ym1pc3Npb24iLCAic3VibWlzc2lvbk5hbWUiLCAiJHRoaXNTdWJMaXN0IiwgIiR0aGlzU3ViTGlzdEVsZW1lbnQiLCAiJGZyb21MaXN0IiwgImZyb20iLCAidG9BcnRpY2xlIiwgInJlYXNvbkFuZFNvdXJjZSIsICJnb29nbGVTZWFyY2hVcmwiLCAiZ2VuZXJhdGVTZWxlY3RPYmplY3QiLCAicmVkaXJlY3RNYWtlQWN0aW9uQ2hhbmdlIiwgInN1YklkIiwgInJlZGlyZWN0UGVyZm9ybUFjdGlvbnMiLCAiZWxlbWVudCIsICJyZWRpcmVjdE9uQWN0aW9uQ2hhbmdlIiwgImlkIiwgIiRleHRyYSIsICJzZWxlY3RWYWx1ZSIsICJnZW5lcmF0ZVNlbGVjdCIsICJhY3Rpb24iLCAiYWRkU3RhdHVzIiwgInN0YXR1cyIsICJ0b3RhbEFjY2VwdCIsICJ0b3RhbERlY2xpbmUiLCAidG90YWxDb21tZW50IiwgInRleHQiLCAic3RhcnRJbmRleCIsICJlbmRJbmRleCIsICJjYXRlZ29yeVRleHQiLCAiY2F0IiwgImVkaXRQYWdlIiwgInRhbGtUZXh0IiwgInRhbGtUaXRsZSIsICJhY2NlcHRDb21tZW50IiwgImRlY2xpbmVDb21tZW50IiwgIm90aGVyQ29tbWVudCIsICJhY2NlcHRDb3VudCIsICJkZWNsaW5lQ291bnQiLCAiY29tbWVudENvdW50IiwgImhhc0NvbW1lbnQiLCAicmVkaXJlY3QiLCAicmVkaXJlY3RUZXh0IiwgIm13VGl0bGUiLCAibXdUYWxrVGl0bGUiLCAic3VtbWFyeSIsICJ0aXRsZSIsICJqcUVzY2FwZSIsICJyZXNwb25zZSIsICJwYWdlSWQiLCAibmV3VGV4dCIsICJ0ZW1wb3JhcnlUZXh0IiwgIm1hdGNoIiwgInBhZ2VOYW1lIiwgImRpc3BsYXluYW1lIiwgInJlcGxhY2VUZXh0IiwgIm9wdGlvbnMiLCAib25jaGFuZ2UiLCAiJHNlbGVjdCIsICJvcHRpb24iLCAiJG9wdGlvbiIsICJtZXNzYWdlIiwgImNsYXNzTmFtZSIsICJleHByZXNzaW9uIiwgImNyZWF0ZU9ubHkiLCAibm9QYXRyb2wiLCAid2dBcnRpY2xlUGF0aCIsICJmdW5jdGlvbklkIiwgInJlcXVlc3QiLCAiYXBpIiwgImRhdGEiLCAiZXJyb3IiLCAicGF0cm9sSHJlZiIsICJyY0lkIiwgInBhdHJvbFJlcXVlc3QiLCAicmVkaXJlY3RQb3J0bGV0TGluayIsICJldmVudCJdCn0K